diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bxor_pbuc1_derefidx_vbuxx.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bxor_pbuc1_derefidx_vbuxx.asm
new file mode 100644
index 000000000..c25da4956
--- /dev/null
+++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bxor_pbuc1_derefidx_vbuxx.asm
@@ -0,0 +1 @@
+eor {c1},x
diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bxor_pbuc1_derefidx_vbuyy.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bxor_pbuc1_derefidx_vbuyy.asm
new file mode 100644
index 000000000..f8c177f35
--- /dev/null
+++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vbuaa=vbuaa_bxor_pbuc1_derefidx_vbuyy.asm
@@ -0,0 +1 @@
+eor {c1},y
diff --git a/src/test/java/dk/camelot64/kickc/test/kc/c64dtv-gfxexplorer.kc b/src/test/java/dk/camelot64/kickc/test/kc/c64dtv-gfxexplorer.kc
index e055070d9..30ca21e0d 100644
--- a/src/test/java/dk/camelot64/kickc/test/kc/c64dtv-gfxexplorer.kc
+++ b/src/test/java/dk/camelot64/kickc/test/kc/c64dtv-gfxexplorer.kc
@@ -92,11 +92,6 @@ byte[] form_fields_max = { $d, 1, 1, 1, 1, 1, 2, 1, 1, 1, $f, $f, $f, $
// Form fields values
byte[] form_fields_val = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-// Press-status for the DOWN key from last frame - used for debounce
-byte key_down_debounce = 0;
-// Press-status for the right key from last frame - used for debounce
-byte key_right_debounce = 0;
-
// The number of frames to use for a full blink cycle
const signed byte FORM_CURSOR_BLINK = 40;
// Counts down to blink for form cursor (it is inversed in the lower half)
@@ -146,50 +141,46 @@ void form_control() {
*field = *field & $7f;
}
+ // Scan the keyboard
+ keyboard_event_scan();
+ byte key_event = keyboard_event_get();
+
// Navigation using cursor up/down
- byte key_down = keyboard_key_pressed(KEY_CRSR_DOWN);
- if(key_down!=key_down_debounce) {
- key_down_debounce = key_down;
- if(key_down!=0) {
- // Unblink the cursor
- *field = *field & $7f;
- if(keyboard_key_pressed(KEY_RSHIFT)==0) {
- // Move to next field
- if(++form_field_idx==form_fields_cnt) {
- form_field_idx = 0;
- }
- } else {
- // Move to previous field
- if(--form_field_idx==$ff) {
- form_field_idx = form_fields_cnt-1;
- }
- }
- // Always blink cursor in new field
- form_cursor_count = FORM_CURSOR_BLINK/2;
- // Return to refresh
- return;
- }
+ if(key_event==KEY_CRSR_DOWN) {
+ // Unblink the cursor
+ *field = *field & $7f;
+ if((keyboard_modifiers&KEY_MODIFIER_SHIFT)==0) {
+ // Move to next field
+ if(++form_field_idx==form_fields_cnt) {
+ form_field_idx = 0;
+ }
+ } else {
+ // Move to previous field
+ if(--form_field_idx==$ff) {
+ form_field_idx = form_fields_cnt-1;
+ }
+ }
+ // Always blink cursor in new field
+ form_cursor_count = FORM_CURSOR_BLINK/2;
+ // Return to refresh
+ return;
}
// Change value with cursor left/right
- 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
- if(++form_fields_val[form_field_idx]>form_fields_max[form_field_idx]) {
- form_fields_val[form_field_idx] = 0;
- }
- } else {
- // Decrease value
- if(--form_fields_val[form_field_idx]==$ff) {
- form_fields_val[form_field_idx] = form_fields_max[form_field_idx];
- }
+ if(key_event==KEY_CRSR_RIGHT) {
+ if((keyboard_modifiers&KEY_MODIFIER_SHIFT)==0) {
+ // Increase value
+ if(++form_fields_val[form_field_idx]>form_fields_max[form_field_idx]) {
+ form_fields_val[form_field_idx] = 0;
+ }
+ } else {
+ // Decrease value
+ 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]];
}
+ // Render field value
+ *field = print_hextab[form_fields_val[form_field_idx]];
}
}
diff --git a/src/test/java/dk/camelot64/kickc/test/kc/keyboard.kc b/src/test/java/dk/camelot64/kickc/test/kc/keyboard.kc
index 6c16dd281..82b71861f 100644
--- a/src/test/java/dk/camelot64/kickc/test/kc/keyboard.kc
+++ b/src/test/java/dk/camelot64/kickc/test/kc/keyboard.kc
@@ -103,7 +103,7 @@ const byte[] keyboard_char_keycodes = {
byte[8] keyboard_matrix_row_bitmask = { %11111110, %11111101, %11111011, %11110111, %11101111, %11011111, %10111111, %01111111 };
// Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7)
-byte[] keyboard_matrix_col_bitmask = { %00000001, %00000010, %00000100, %00001000, %00010000, %00100000, %01000000, %10000000 };
+byte[8] keyboard_matrix_col_bitmask = { %00000001, %00000010, %00000100, %00001000, %00010000, %00100000, %01000000, %10000000 };
// Initialize keyboard reading by setting CIA#$ Data Direction Registers
void keyboard_init() {
@@ -123,7 +123,7 @@ byte keyboard_matrix_read(byte rowid) {
return row_pressed_bits;
}
-// Determines whether a specific key is currently pressed
+// Determines whether a specific key is currently pressed by accessing the matrix directly
// The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7)
// All keys exist as as KEY_XXX constants.
// Returns zero if the key is not pressed and a non-zero value if the key is currently pressed
@@ -139,4 +139,94 @@ byte keyboard_key_pressed(byte key) {
// If there is no non-shifted key representing the char $3f is returned (representing RUN/STOP) .
byte keyboard_get_keycode(byte ch) {
return keyboard_char_keycodes[ch];
-}
\ No newline at end of file
+}
+
+// Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan()
+byte[8] keyboard_events;
+// Keyboard event buffer size. The number of events currently in the event buffer
+byte keyboard_events_size = 0;
+// Current keyboard modifiers (left shift, right shift, ctrl, commodore)
+byte keyboard_modifiers = 0;
+// Left shift is pressed
+const byte KEY_MODIFIER_LSHIFT = 1;
+// Right shift is pressed
+const byte KEY_MODIFIER_RSHIFT = 2;
+// CTRL is pressed
+const byte KEY_MODIFIER_CTRL = 4;
+// Commodore is pressed
+const byte KEY_MODIFIER_COMMODORE = 8;
+// Any shift is pressed
+const byte KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT;
+// The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event()
+byte[8] keyboard_scan_values;
+
+// Scans the entire matrix to determine which keys have been pressed/depressed.
+// Generates keyboard events into the event buffer. Events can be read using keyboard_event_get().
+// Handles debounce and only generates events when the status of a key changes.
+// Also stores current status of modifiers in keyboard_modifiers.
+void keyboard_event_scan() {
+ byte keycode = 0;
+ for(byte row : 0..7) {
+ byte row_scan = keyboard_matrix_read(row);
+ if(row_scan!=keyboard_scan_values[row]) {
+ // Something has changed on the keyboard row - check each column
+ for(byte col : 0..7){
+ // XOR of row scan with the last seen row scan AND'ed with the col bitmask will be non-0 if the key status is changed
+ if(((row_scan^keyboard_scan_values[row])&keyboard_matrix_col_bitmask[col])!=0) {
+ // Key(row, col) status has changed. We have an event.
+ // Only process event if there is still room in the buffer
+ if(keyboard_events_size!=8) {
+ // AND of row scan and bit mask determines if key is pressed or released
+ byte event_type = row_scan&keyboard_matrix_col_bitmask[col];
+ if(event_type==0) {
+ // Key released
+ keyboard_events[keyboard_events_size++] = keycode|$40;
+ } else {
+ // Key pressed
+ keyboard_events[keyboard_events_size++] = keycode;
+ }
+ }
+ }
+ keycode++;
+ }
+ // Store the current keyboard status for the row to debounce
+ keyboard_scan_values[row] = row_scan;
+ } else {
+ // Update current keycode
+ keycode = keycode + 8;
+ }
+ }
+ // Update the keyboard modifiers
+ keyboard_modifiers = 0;
+ if(keyboard_event_pressed(KEY_LSHIFT)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_LSHIFT;
+ }
+ if(keyboard_event_pressed(KEY_RSHIFT)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_RSHIFT;
+ }
+ if(keyboard_event_pressed(KEY_CTRL)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_CTRL;
+ }
+ if(keyboard_event_pressed(KEY_COMMODORE)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_COMMODORE;
+ }
+}
+
+// Determine if a specific key is currently pressed based on the last keyboard_event_scan()
+// Returns 0 is not pressed and non-0 if pressed
+byte keyboard_event_pressed(byte keycode) {
+ byte row_bits = keyboard_scan_values[keycode>>3];
+ return row_bits & keyboard_matrix_col_bitmask[keycode&7];
+}
+
+// Get the next event from the keyboard event buffer.
+// Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process.
+// The buffer is filled by keyboard_scan()
+byte keyboard_event_get() {
+ if(keyboard_events_size==0) {
+ return $ff;
+ } else {
+ return keyboard_events[--keyboard_events_size];
+ }
+}
+
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.asm b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.asm
index 57860a035..91d341d33 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.asm
+++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.asm
@@ -25,24 +25,32 @@
.label DTV_GRAPHICS_VIC_BANK = $d03d
.const KEY_CRSR_RIGHT = 2
.const KEY_CRSR_DOWN = 7
+ .const KEY_LSHIFT = $f
.const KEY_RSHIFT = $34
+ .const KEY_CTRL = $3a
+ .const KEY_COMMODORE = $3d
+ .const KEY_MODIFIER_LSHIFT = 1
+ .const KEY_MODIFIER_RSHIFT = 2
+ .const KEY_MODIFIER_CTRL = 4
+ .const KEY_MODIFIER_COMMODORE = 8
.const form_fields_cnt = $23
.const FORM_CURSOR_BLINK = $28
- .label print_char_cursor = 8
- .label print_line_cursor = $a
+ .const KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT
+ .label print_char_cursor = 9
+ .label print_line_cursor = $b
+ .label keyboard_events_size = 6
+ .label keyboard_modifiers = 3
.label form_cursor_count = 2
- .label key_down_debounce = 3
.label form_field_idx = 4
- .label key_right_debounce = 5
jsr main
main: {
sei
lda #DTV_FEATURE_ENABLE
sta DTV_FEATURE
lda #0
- sta key_right_debounce
sta form_field_idx
- sta key_down_debounce
+ sta keyboard_modifiers
+ sta keyboard_events_size
lda #FORM_CURSOR_BLINK/2
sta form_cursor_count
b2:
@@ -111,7 +119,7 @@ menu: {
jmp b5
}
form_control: {
- .label field = 6
+ .label field = 7
ldx form_field_idx
jsr form_field_ptr
dec form_cursor_count
@@ -135,62 +143,54 @@ form_control: {
ora (field),y
sta (field),y
b3:
- ldx #KEY_CRSR_DOWN
- jsr keyboard_key_pressed
- cmp key_down_debounce
- beq b4
- sta key_down_debounce
- cmp #0
- beq b4
+ jsr keyboard_event_scan
+ jsr keyboard_event_get
+ cmp #KEY_CRSR_DOWN
+ bne b4
lda #$7f
ldy #0
and (field),y
sta (field),y
- ldx #KEY_RSHIFT
- jsr keyboard_key_pressed
+ lda #KEY_MODIFIER_SHIFT
+ and keyboard_modifiers
cmp #0
- bne b6
+ bne b5
inc form_field_idx
lda form_field_idx
cmp #form_fields_cnt
- bne b8
- lda #0
+ bne b7
+ tya
sta form_field_idx
- b8:
+ b7:
lda #FORM_CURSOR_BLINK/2
sta form_cursor_count
breturn:
rts
- b6:
+ b5:
dec form_field_idx
lda form_field_idx
cmp #$ff
- bne b8
+ bne b7
lda #form_fields_cnt-1
sta form_field_idx
- jmp b8
+ jmp b7
b4:
- ldx #KEY_CRSR_RIGHT
- jsr keyboard_key_pressed
- cmp key_right_debounce
- beq breturn
- sta key_right_debounce
+ cmp #KEY_CRSR_RIGHT
+ bne breturn
+ lda #KEY_MODIFIER_SHIFT
+ and keyboard_modifiers
cmp #0
- beq breturn
- ldx #KEY_RSHIFT
- jsr keyboard_key_pressed
- cmp #0
- bne b12
+ 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 b14
- beq b14
+ bcc b12
+ beq b12
lda #0
sta form_fields_val,y
- b14:
+ b12:
ldy form_field_idx
lda form_fields_val,y
tay
@@ -198,7 +198,7 @@ form_control: {
ldy #0
sta (field),y
jmp breturn
- b12:
+ b10:
ldx form_field_idx
lda form_fields_val,x
sec
@@ -207,10 +207,10 @@ form_control: {
ldy form_field_idx
lda form_fields_val,y
cmp #$ff
- bne b14
+ bne b12
lda form_fields_max,y
sta form_fields_val,y
- jmp b14
+ jmp b12
b2:
lda #$7f
ldy #0
@@ -218,17 +218,134 @@ form_control: {
sta (field),y
jmp b3
}
-keyboard_key_pressed: {
- txa
- and #7
- tay
- txa
+keyboard_event_get: {
+ lda keyboard_events_size
+ bne b1
+ lda #$ff
+ breturn:
+ rts
+ b1:
+ dec keyboard_events_size
+ ldy keyboard_events_size
+ lda keyboard_events,y
+ jmp breturn
+}
+keyboard_event_scan: {
+ .label row_scan = $d
+ .label keycode = 5
+ .label row = 3
+ lda #0
+ sta keycode
+ sta row
+ b1:
+ ldx row
+ jsr keyboard_matrix_read
+ sta row_scan
+ ldy row
+ lda keyboard_scan_values,y
+ cmp row_scan
+ bne !b2+
+ jmp b2
+ !b2:
+ ldx #0
+ b3:
+ lda row_scan
+ ldy row
+ eor keyboard_scan_values,y
+ and keyboard_matrix_col_bitmask,x
+ cmp #0
+ beq b4
+ lda keyboard_events_size
+ cmp #8
+ beq b4
+ lda keyboard_matrix_col_bitmask,x
+ and row_scan
+ cmp #0
+ bne b6
+ lda #$40
+ ora keycode
+ ldy keyboard_events_size
+ sta keyboard_events,y
+ inc keyboard_events_size
+ b4:
+ inc keycode
+ inx
+ cpx #8
+ bne b3
+ lda row_scan
+ ldy row
+ sta keyboard_scan_values,y
+ b8:
+ inc row
+ lda row
+ cmp #8
+ bne b1
+ lda #KEY_LSHIFT
+ sta keyboard_event_pressed.keycode
+ jsr keyboard_event_pressed
+ cmp #0
+ beq b5
+ lda #0|KEY_MODIFIER_LSHIFT
+ sta keyboard_modifiers
+ jmp b9
+ b5:
+ lda #0
+ sta keyboard_modifiers
+ b9:
+ lda #KEY_RSHIFT
+ sta keyboard_event_pressed.keycode
+ jsr keyboard_event_pressed
+ cmp #0
+ beq b10
+ 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
+ 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
+ lda #KEY_MODIFIER_COMMODORE
+ ora keyboard_modifiers
+ sta keyboard_modifiers
+ breturn:
+ rts
+ b6:
+ lda keycode
+ ldy keyboard_events_size
+ sta keyboard_events,y
+ inc keyboard_events_size
+ jmp b4
+ b2:
+ lda #8
+ clc
+ adc keycode
+ sta keycode
+ jmp b8
+}
+keyboard_event_pressed: {
+ .label keycode = 5
+ lda keycode
lsr
lsr
lsr
tax
- jsr keyboard_matrix_read
- and keyboard_matrix_col_bitmask,y
+ ldy keyboard_scan_values,x
+ lda #7
+ and keycode
+ tax
+ tya
+ and keyboard_matrix_col_bitmask,x
rts
}
keyboard_matrix_read: {
@@ -239,8 +356,8 @@ keyboard_matrix_read: {
rts
}
form_field_ptr: {
- .label return = 6
- .label _2 = 6
+ .label return = 7
+ .label _2 = 7
ldy form_fields_y,x
lda form_line_hi,y
sta _2+1
@@ -256,7 +373,7 @@ form_field_ptr: {
rts
}
form_render_values: {
- .label field = 6
+ .label field = 7
ldx #0
b1:
jsr form_field_ptr
@@ -271,7 +388,7 @@ form_render_values: {
rts
}
form_set_screen: {
- .label line = 6
+ .label line = 7
ldx #0
lda #
((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [14] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [15] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [16] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [17] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [18] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [19] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [11] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [12] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [13] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [14] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [15] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [16] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [17] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [18] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [19] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:menu::@1
menu::@1: scope:[menu] from menu menu::@1
- [20] (byte) menu::i#2 ← phi( menu/(byte/signed byte/word/signed word/dword/signed dword) 0 menu::@1/(byte) menu::i#1 ) [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] )
- [21] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] )
- [22] (byte) menu::i#1 ← ++ (byte) menu::i#2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] )
- [23] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] )
+ [20] (byte) menu::i#2 ← phi( menu/(byte/signed byte/word/signed word/dword/signed dword) 0 menu::@1/(byte) menu::i#1 ) [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] )
+ [21] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] )
+ [22] (byte) menu::i#1 ← ++ (byte) menu::i#2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] )
+ [23] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] )
to:menu::@8
menu::@8: scope:[menu] from menu::@1
- [24] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [25] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [26] call print_set_screen param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ [24] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [25] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [26] call print_set_screen param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
to:menu::@15
menu::@15: scope:[menu] from menu::@8
- [27] phi() [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
- [28] call print_cls param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ [27] phi() [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
+ [28] call print_cls param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
to:menu::@16
menu::@16: scope:[menu] from menu::@15
- [29] phi() [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
- [30] call print_str_lines param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [29] phi() [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
+ [30] call print_str_lines param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:menu::@17
menu::@17: scope:[menu] from menu::@16
- [31] phi() [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [32] call print_set_screen param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ [31] phi() [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [32] call print_set_screen param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
to:menu::@18
menu::@18: scope:[menu] from menu::@17
- [33] phi() [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
- [34] call print_cls param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ [33] phi() [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
+ [34] call print_cls param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
to:menu::@19
menu::@19: scope:[menu] from menu::@18
- [35] phi() [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
- [36] call print_str_lines param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [35] phi() [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
+ [36] call print_str_lines param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:menu::@20
menu::@20: scope:[menu] from menu::@19
- [37] phi() [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [38] call form_set_screen param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [37] phi() [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [38] call form_set_screen param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:menu::@21
menu::@21: scope:[menu] from menu::@20
- [39] phi() [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [40] call form_render_values param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [39] phi() [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [40] call form_render_values param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:menu::@2
menu::@2: scope:[menu] from menu::@21 menu::@7
- [41] (byte) key_right_debounce#11 ← phi( menu::@21/(byte) key_right_debounce#1 menu::@7/(byte) key_right_debounce#13 ) [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
- [41] (byte) form_field_idx#14 ← phi( menu::@21/(byte) form_field_idx#1 menu::@7/(byte) form_field_idx#18 ) [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
- [41] (byte) key_down_debounce#11 ← phi( menu::@21/(byte) key_down_debounce#1 menu::@7/(byte) key_down_debounce#13 ) [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
- [41] (signed byte) form_cursor_count#13 ← phi( menu::@21/(signed byte) form_cursor_count#1 menu::@7/(signed byte) form_cursor_count#16 ) [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
- [42] if(true) goto menu::@5 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
+ [41] (byte) form_field_idx#14 ← phi( menu::@21/(byte) form_field_idx#1 menu::@7/(byte) form_field_idx#18 ) [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
+ [41] (byte) keyboard_modifiers#10 ← phi( menu::@21/(byte) keyboard_modifiers#20 menu::@7/(byte) keyboard_modifiers#18 ) [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
+ [41] (byte) keyboard_events_size#24 ← phi( menu::@21/(byte) keyboard_events_size#22 menu::@7/(byte) keyboard_events_size#20 ) [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
+ [41] (signed byte) form_cursor_count#13 ← phi( menu::@21/(signed byte) form_cursor_count#1 menu::@7/(signed byte) form_cursor_count#16 ) [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
+ [42] if(true) goto menu::@5 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
to:menu::@return
menu::@return: scope:[menu] from menu::@2
- [43] return [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
+ [43] return [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
to:@return
menu::@5: scope:[menu] from menu::@2 menu::@5
- [44] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto menu::@5 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
+ [44] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto menu::@5 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] )
to:menu::@7
menu::@7: scope:[menu] from menu::@5
- [45] phi() [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
- [46] call form_control param-assignment [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
+ [45] phi() [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] )
+ [46] call form_control param-assignment [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] ( main:2::menu:10 [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] )
to:menu::@2
form_control: scope:[form_control] from menu::@7
- [47] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#1 ] )
- [48] 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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#0 ] )
- [49] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#3 ] )
- to:form_control::@32
-form_control::@32: scope:[form_control] from form_control
- [50] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 ] )
- [51] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] )
- [52] 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:46 [ 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::@32 form_control::@37
- [53] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] )
- [54] 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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] )
- to:form_control::@17
-form_control::@17: scope:[form_control] from form_control::@1
- [55] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$6 ] )
- [56] *((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:46 [ 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::@17 form_control::@2
- [57] 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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] )
- [58] 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:46 [ 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 ] )
- [59] (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:46 [ 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::@33
-form_control::@33: scope:[form_control] from form_control::@3
- [60] (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:46 [ 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 ] )
- [61] 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:46 [ 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::@19
-form_control::@19: scope:[form_control] from form_control::@33
- [62] (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:46 [ 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 ] )
- [63] 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:46 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#23 ] )
- to:form_control::@20
-form_control::@20: scope:[form_control] from form_control::@19
- [64] (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:46 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 key_down_debounce#23 form_control::$13 ] )
- [65] *((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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] )
- [66] 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:46 [ form_field_idx#14 key_right_debounce#11 keyboard_key_pressed::return#0 key_down_debounce#23 ] )
- [67] (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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#4 ] )
- to:form_control::@35
-form_control::@35: scope:[form_control] from form_control::@20
- [68] (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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 form_control::$14 ] )
- [69] 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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] )
- to:form_control::@21
-form_control::@21: scope:[form_control] from form_control::@35
- [70] (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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] )
- [71] 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:46 [ 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::@21 form_control::@38 form_control::@39 form_control::@6
- [72] (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:46 [ 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::@14 form_control::@26 form_control::@34 form_control::@8
- [73] (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:46 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
- [73] (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:46 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
- [73] (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:46 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
- [73] (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:46 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
- [74] return [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
- to:@return
-form_control::@38: scope:[form_control] from form_control::@21
- [75] phi() [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] ( main:2::menu:10::form_control:46 [ 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::@35
- [76] (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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] )
- [77] 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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] )
- to:form_control::@8
-form_control::@39: scope:[form_control] from form_control::@6
- [78] phi() [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] ( main:2::menu:10::form_control:46 [ 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::@19 form_control::@33
- [79] (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:46 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 ] )
- [80] 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:46 [ 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 ] )
- [81] (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:46 [ 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::@34
-form_control::@34: scope:[form_control] from form_control::@4
- [82] (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:46 [ 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 ] )
- [83] 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:46 [ 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::@26
-form_control::@26: scope:[form_control] from form_control::@34
- [84] (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:46 [ 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 ] )
- [85] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
- to:form_control::@27
-form_control::@27: scope:[form_control] from form_control::@26
- [86] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
- [87] 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:46 [ 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 ] )
- [88] (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:46 [ 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::@36
-form_control::@36: scope:[form_control] from form_control::@27
- [89] (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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::$28 ] )
- [90] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
+ [47] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#14 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#1 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#1 ] )
+ [48] call form_field_ptr param-assignment [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] )
+ [49] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#3 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#3 ] )
to:form_control::@28
-form_control::@28: scope:[form_control] from form_control::@36
- [91] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
- [92] 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:46 [ 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
- [93] *((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:46 [ 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
- [94] *((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:46 [ 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::@36
- [95] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
- [96] 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:46 [ 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
- [97] *((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:46 [ 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
- [98] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$7 ] )
- [99] *((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:46 [ 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::@37: scope:[form_control] from form_control::@32
- [100] 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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] )
+form_control::@28: scope:[form_control] from form_control
+ [50] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_control::field#0 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_control::field#0 ] )
+ [51] (signed byte) form_cursor_count#5 ← -- (signed byte) form_cursor_count#13 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] )
+ [52] if((signed byte) form_cursor_count#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@31 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] )
to:form_control::@1
-keyboard_key_pressed: scope:[keyboard_key_pressed] from form_control::@20 form_control::@27 form_control::@3 form_control::@4
- [101] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::key#4 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] )
- [102] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] )
- [103] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] )
- [104] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] )
- [105] call keyboard_matrix_read param-assignment [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ 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::return#0 ] )
- [106] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#2 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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::return#2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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::return#2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ 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::return#2 ] )
- to:keyboard_key_pressed::@2
-keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_pressed
- [107] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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::$2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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::$2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ 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::$2 ] )
- [108] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::return#0 ] )
- to:keyboard_key_pressed::@return
-keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
- [109] return [ keyboard_key_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::return#0 ] )
+form_control::@1: scope:[form_control] from form_control::@28 form_control::@31
+ [53] (signed byte) form_cursor_count#15 ← phi( form_control::@28/(const signed byte) FORM_CURSOR_BLINK#0 form_control::@31/(signed byte) form_cursor_count#5 ) [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] )
+ [54] 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 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@15
+form_control::@15: scope:[form_control] from form_control::@1
+ [55] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$6 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$6 ] )
+ [56] *((byte*) form_control::field#0) ← (byte/word/dword~) form_control::$6 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 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
+ [57] phi() [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] )
+ [58] call keyboard_event_scan param-assignment [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] )
+ to:form_control::@29
+form_control::@29: scope:[form_control] from form_control::@3
+ [59] phi() [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] )
+ [60] call keyboard_event_get param-assignment [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#2 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#2 ] )
+ [61] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#3 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#3 ] )
+ to:form_control::@30
+form_control::@30: scope:[form_control] from form_control::@29
+ [62] (byte) form_control::key_event#0 ← (byte) keyboard_event_get::return#3 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] )
+ [63] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_DOWN#0) goto form_control::@4 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] )
+ to:form_control::@17
+form_control::@17: scope:[form_control] from form_control::@30
+ [64] (byte~) form_control::$12 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_control::$12 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_control::$12 ] )
+ [65] *((byte*) form_control::field#0) ← (byte~) form_control::$12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] )
+ [66] (byte~) form_control::$13 ← (byte) keyboard_modifiers#18 & (const byte) KEY_MODIFIER_SHIFT#0 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::$13 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::$13 ] )
+ [67] if((byte~) form_control::$13!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@5 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] )
+ to:form_control::@18
+form_control::@18: scope:[form_control] from form_control::@17
+ [68] (byte) form_field_idx#40 ← ++ (byte) form_field_idx#14 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] )
+ [69] if((byte) form_field_idx#40!=(const byte) form_fields_cnt#0) goto form_control::@32 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] )
+ to:form_control::@7
+form_control::@7: scope:[form_control] from form_control::@18 form_control::@32 form_control::@33 form_control::@5
+ [70] (byte) form_field_idx#30 ← phi( form_control::@18/(byte/signed byte/word/signed word/dword/signed dword) 0 form_control::@5/(const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 form_control::@32/(byte) form_field_idx#40 form_control::@33/(byte) form_field_idx#41 ) [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#30 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#30 ] )
+ to:form_control::@return
+form_control::@return: scope:[form_control] from form_control::@12 form_control::@4 form_control::@7
+ [71] (byte) form_field_idx#18 ← phi( form_control::@12/(byte) form_field_idx#14 form_control::@7/(byte) form_field_idx#30 form_control::@4/(byte) form_field_idx#14 ) [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] )
+ [71] (signed byte) form_cursor_count#16 ← phi( form_control::@12/(signed byte) form_cursor_count#15 form_control::@7/(const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 form_control::@4/(signed byte) form_cursor_count#15 ) [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] )
+ [72] return [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] )
to:@return
-keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed
- [110] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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 ] )
- [111] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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::return#0 ] )
+form_control::@32: scope:[form_control] from form_control::@18
+ [73] phi() [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] )
+ to:form_control::@7
+form_control::@5: scope:[form_control] from form_control::@17
+ [74] (byte) form_field_idx#41 ← -- (byte) form_field_idx#14 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] )
+ [75] if((byte) form_field_idx#41!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@33 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] )
+ to:form_control::@7
+form_control::@33: scope:[form_control] from form_control::@5
+ [76] phi() [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] )
+ to:form_control::@7
+form_control::@4: scope:[form_control] from form_control::@30
+ [77] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_RIGHT#0) goto form_control::@return [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@23
+form_control::@23: scope:[form_control] from form_control::@4
+ [78] (byte~) form_control::$24 ← (byte) keyboard_modifiers#18 & (const byte) KEY_MODIFIER_SHIFT#0 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::$24 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::$24 ] )
+ [79] if((byte~) form_control::$24!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@10 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@24
+form_control::@24: scope:[form_control] from form_control::@23
+ [80] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ [81] 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::@12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@25
+form_control::@25: scope:[form_control] from form_control::@24
+ [82] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@12
+form_control::@12: scope:[form_control] from form_control::@10 form_control::@24 form_control::@25 form_control::@27
+ [83] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_cursor_count#15 ] )
+ to:form_control::@return
+form_control::@10: scope:[form_control] from form_control::@23
+ [84] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ [85] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#14)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@27
+form_control::@27: scope:[form_control] from form_control::@10
+ [86] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@12
+form_control::@2: scope:[form_control] from form_control::@1
+ [87] (byte~) form_control::$7 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$7 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$7 ] )
+ [88] *((byte*) form_control::field#0) ← (byte~) form_control::$7 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@3
+form_control::@31: scope:[form_control] from form_control::@28
+ [89] phi() [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] )
+ to:form_control::@1
+keyboard_event_get: scope:[keyboard_event_get] from form_control::@29
+ [90] if((byte) keyboard_events_size#17!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@1 [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] )
+ to:keyboard_event_get::@return
+keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@1
+ [91] (byte) keyboard_events_size#20 ← phi( keyboard_event_get::@1/(byte) keyboard_events_size#4 keyboard_event_get/(byte) keyboard_events_size#17 ) [ keyboard_events_size#20 keyboard_event_get::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#20 keyboard_event_get::return#2 ] )
+ [91] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get::@1/(byte) keyboard_event_get::return#0 keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 ) [ keyboard_events_size#20 keyboard_event_get::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#20 keyboard_event_get::return#2 ] )
+ [92] return [ keyboard_events_size#20 keyboard_event_get::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#20 keyboard_event_get::return#2 ] )
+ to:@return
+keyboard_event_get::@1: scope:[keyboard_event_get] from keyboard_event_get
+ [93] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#17 [ keyboard_events_size#4 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#4 ] )
+ [94] (byte) keyboard_event_get::return#0 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_event_get::return#0 keyboard_events_size#4 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#0 keyboard_events_size#4 ] )
+ to:keyboard_event_get::@return
+keyboard_event_scan: scope:[keyboard_event_scan] from form_control::@3
+ [95] phi() [ keyboard_events_size#24 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#24 ] )
+ to:keyboard_event_scan::@1
+keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8
+ [96] (byte) keyboard_events_size#43 ← phi( keyboard_event_scan/(byte) keyboard_events_size#24 keyboard_event_scan::@8/(byte) keyboard_events_size#17 ) [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] )
+ [96] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::keycode#14 ) [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] )
+ [96] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::row#1 ) [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] )
+ [97] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::rowid#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::rowid#0 ] )
+ [98] call keyboard_matrix_read param-assignment [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] )
+ [99] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#2 ] )
+ to:keyboard_event_scan::@25
+keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan::@1
+ [100] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] )
+ [101] if((byte) keyboard_event_scan::row_scan#0==*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] )
+ to:keyboard_event_scan::@3
+keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@25 keyboard_event_scan::@4
+ [102] (byte) keyboard_events_size#14 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#43 keyboard_event_scan::@4/(byte) keyboard_events_size#44 ) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ [102] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@4/(byte) keyboard_event_scan::keycode#15 ) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ [102] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@4/(byte) keyboard_event_scan::col#1 ) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ [103] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$3 ] )
+ [104] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$4 ] )
+ [105] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ to:keyboard_event_scan::@14
+keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan::@3
+ [106] if((byte) keyboard_events_size#14==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ to:keyboard_event_scan::@15
+keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@14
+ [107] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::event_type#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::event_type#0 ] )
+ [108] if((byte) keyboard_event_scan::event_type#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@6 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ to:keyboard_event_scan::@16
+keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15
+ [109] (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$12 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$12 ] )
+ [110] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#14) ← (byte/word/dword~) keyboard_event_scan::$12 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ [111] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#14 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#2 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#2 ] )
+ to:keyboard_event_scan::@4
+keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@14 keyboard_event_scan::@16 keyboard_event_scan::@3 keyboard_event_scan::@6
+ [112] (byte) keyboard_events_size#44 ← phi( keyboard_event_scan::@16/(byte) keyboard_events_size#2 keyboard_event_scan::@3/(byte) keyboard_events_size#14 keyboard_event_scan::@14/(byte) keyboard_events_size#14 keyboard_event_scan::@6/(byte) keyboard_events_size#1 ) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#44 ] )
+ [113] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] )
+ [114] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] )
+ [115] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@3 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] )
+ to:keyboard_event_scan::@18
+keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan::@4
+ [116] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] )
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@18 keyboard_event_scan::@2
+ [117] (byte) keyboard_events_size#17 ← phi( keyboard_event_scan::@18/(byte) keyboard_events_size#44 keyboard_event_scan::@2/(byte) keyboard_events_size#43 ) [ keyboard_events_size#17 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 ] )
+ [117] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@18/(byte) keyboard_event_scan::keycode#15 keyboard_event_scan::@2/(byte) keyboard_event_scan::keycode#1 ) [ keyboard_events_size#17 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 ] )
+ [118] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 [ keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] )
+ [119] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 [ keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] )
+ to:keyboard_event_scan::@20
+keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@8
+ [120] phi() [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] )
+ [121] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] )
+ [122] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_event_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#0 ] )
+ to:keyboard_event_scan::@26
+keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20
+ [123] (byte~) keyboard_event_scan::$16 ← (byte) keyboard_event_pressed::return#0 [ keyboard_events_size#17 keyboard_event_scan::$16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::$16 ] )
+ [124] if((byte~) keyboard_event_scan::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] )
+ to:keyboard_event_scan::@21
+keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26
+ [125] phi() [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] )
+ to:keyboard_event_scan::@9
+keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26
+ [126] (byte) keyboard_modifiers#15 ← phi( keyboard_event_scan::@21/(byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 keyboard_event_scan::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ keyboard_events_size#17 keyboard_modifiers#15 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 ] )
+ [127] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#15 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#15 ] )
+ [128] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#1 ] )
+ to:keyboard_event_scan::@27
+keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9
+ [129] (byte~) keyboard_event_scan::$20 ← (byte) keyboard_event_pressed::return#1 [ keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_scan::$20 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_scan::$20 ] )
+ [130] if((byte~) keyboard_event_scan::$20==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 [ keyboard_events_size#17 keyboard_modifiers#15 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 ] )
+ to:keyboard_event_scan::@22
+keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27
+ [131] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#15 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#17 keyboard_modifiers#3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#3 ] )
+ to:keyboard_event_scan::@10
+keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27
+ [132] (byte) keyboard_modifiers#16 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#15 ) [ keyboard_events_size#17 keyboard_modifiers#16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 ] )
+ [133] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#16 ] )
+ [134] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#2 ] )
+ to:keyboard_event_scan::@28
+keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10
+ [135] (byte~) keyboard_event_scan::$24 ← (byte) keyboard_event_pressed::return#2 [ keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_scan::$24 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_scan::$24 ] )
+ [136] if((byte~) keyboard_event_scan::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 [ keyboard_events_size#17 keyboard_modifiers#16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 ] )
+ to:keyboard_event_scan::@23
+keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28
+ [137] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#16 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#17 keyboard_modifiers#4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#4 ] )
+ to:keyboard_event_scan::@11
+keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28
+ [138] (byte) keyboard_modifiers#17 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#16 ) [ keyboard_events_size#17 keyboard_modifiers#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 ] )
+ [139] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#17 ] )
+ [140] (byte) keyboard_event_pressed::return#3 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#3 ] )
+ to:keyboard_event_scan::@29
+keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan::@11
+ [141] (byte~) keyboard_event_scan::$28 ← (byte) keyboard_event_pressed::return#3 [ keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_scan::$28 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_scan::$28 ] )
+ [142] if((byte~) keyboard_event_scan::$28==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return [ keyboard_events_size#17 keyboard_modifiers#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 ] )
+ to:keyboard_event_scan::@24
+keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29
+ [143] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#17 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#17 keyboard_modifiers#5 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#5 ] )
+ to:keyboard_event_scan::@return
+keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@29
+ [144] (byte) keyboard_modifiers#18 ← phi( keyboard_event_scan::@29/(byte) keyboard_modifiers#17 keyboard_event_scan::@24/(byte) keyboard_modifiers#5 ) [ keyboard_modifiers#18 keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_modifiers#18 keyboard_events_size#17 ] )
+ [145] return [ keyboard_modifiers#18 keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_modifiers#18 keyboard_events_size#17 ] )
+ to:@return
+keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@15
+ [146] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#14) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ [147] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#14 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#1 ] )
+ to:keyboard_event_scan::@4
+keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@25
+ [148] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#43 keyboard_event_scan::keycode#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#43 keyboard_event_scan::keycode#1 ] )
+ to:keyboard_event_scan::@8
+keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@10 keyboard_event_scan::@11 keyboard_event_scan::@20 keyboard_event_scan::@9
+ [149] (byte) keyboard_event_pressed::keycode#4 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 ) [ keyboard_event_pressed::keycode#4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::keycode#4 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::keycode#4 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::keycode#4 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::keycode#4 ] )
+ [150] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] )
+ [151] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] )
+ [152] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] )
+ [153] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#10 ] )
+ to:keyboard_event_pressed::@return
+keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed
+ [154] return [ keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#10 ] )
+ to:@return
+keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1
+ [155] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] )
+ [156] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] )
to:keyboard_matrix_read::@return
keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read
- [112] return [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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::return#0 ] )
+ [157] return [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] )
to:@return
form_field_ptr: scope:[form_field_ptr] from form_control form_render_values::@1
- [113] (byte) form_field_ptr::field_idx#2 ← phi( form_control/(byte) form_field_ptr::field_idx#1 form_render_values::@1/(byte) form_field_ptr::field_idx#0 ) [ form_field_ptr::field_idx#2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#2 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::field_idx#2 ] )
- [114] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] )
- [115] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] )
- [116] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::$2 form_field_ptr::x#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::$2 form_field_ptr::x#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::$2 form_field_ptr::x#0 ] )
- [117] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ 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_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#0 ] )
+ [158] (byte) form_field_ptr::field_idx#2 ← phi( form_control/(byte) form_field_ptr::field_idx#1 form_render_values::@1/(byte) form_field_ptr::field_idx#0 ) [ form_field_ptr::field_idx#2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#2 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 ] )
+ [159] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] )
+ [160] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] )
+ [161] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::$2 form_field_ptr::x#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::$2 form_field_ptr::x#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::$2 form_field_ptr::x#0 ] )
+ [162] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#0 ] )
to:form_field_ptr::@return
form_field_ptr::@return: scope:[form_field_ptr] from form_field_ptr
- [118] return [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ 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_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#0 ] )
+ [163] return [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#0 ] )
to:@return
form_render_values: scope:[form_render_values] from menu::@21
- [119] phi() [ ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [164] phi() [ ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:form_render_values::@1
form_render_values::@1: scope:[form_render_values] from form_render_values form_render_values::@3
- [120] (byte) form_render_values::idx#2 ← phi( form_render_values/(byte/signed byte/word/signed word/dword/signed dword) 0 form_render_values::@3/(byte) form_render_values::idx#1 ) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 ] )
- [121] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 [ form_field_ptr::field_idx#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_field_ptr::field_idx#0 form_render_values::idx#2 ] )
- [122] call form_field_ptr param-assignment [ form_field_ptr::return#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_field_ptr::return#0 form_render_values::idx#2 ] )
- [123] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#2 ] )
+ [165] (byte) form_render_values::idx#2 ← phi( form_render_values/(byte/signed byte/word/signed word/dword/signed dword) 0 form_render_values::@3/(byte) form_render_values::idx#1 ) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 ] )
+ [166] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 [ form_field_ptr::field_idx#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_field_ptr::field_idx#0 form_render_values::idx#2 ] )
+ [167] call form_field_ptr param-assignment [ form_field_ptr::return#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_field_ptr::return#0 form_render_values::idx#2 ] )
+ [168] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#2 ] )
to:form_render_values::@3
form_render_values::@3: scope:[form_render_values] from form_render_values::@1
- [124] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_render_values::field#0 ] )
- [125] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 ] )
- [126] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#1 ] )
- [127] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#1 ] )
+ [169] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_render_values::field#0 ] )
+ [170] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 ] )
+ [171] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#1 ] )
+ [172] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#1 ] )
to:form_render_values::@return
form_render_values::@return: scope:[form_render_values] from form_render_values::@3
- [128] return [ ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [173] return [ ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:@return
form_set_screen: scope:[form_set_screen] from menu::@20
- [129] phi() [ ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [174] phi() [ ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:form_set_screen::@1
form_set_screen::@1: scope:[form_set_screen] from form_set_screen form_set_screen::@1
- [130] (byte) form_set_screen::y#2 ← phi( form_set_screen/(byte/signed byte/word/signed word/dword/signed dword) 0 form_set_screen::@1/(byte) form_set_screen::y#1 ) [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 ] )
- [130] (byte*) form_set_screen::line#2 ← phi( form_set_screen/(const byte*) menu::SCREEN#0 form_set_screen::@1/(byte*) form_set_screen::line#1 ) [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 ] )
- [131] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] )
- [132] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 ] )
- [133] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] )
- [134] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 ] )
- [135] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::y#2 form_set_screen::line#1 ] )
- [136] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#1 form_set_screen::y#1 ] )
- [137] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#1 form_set_screen::y#1 ] )
+ [175] (byte) form_set_screen::y#2 ← phi( form_set_screen/(byte/signed byte/word/signed word/dword/signed dword) 0 form_set_screen::@1/(byte) form_set_screen::y#1 ) [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 ] )
+ [175] (byte*) form_set_screen::line#2 ← phi( form_set_screen/(const byte*) menu::SCREEN#0 form_set_screen::@1/(byte*) form_set_screen::line#1 ) [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 ] )
+ [176] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] )
+ [177] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 ] )
+ [178] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] )
+ [179] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 ] )
+ [180] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::y#2 form_set_screen::line#1 ] )
+ [181] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#1 form_set_screen::y#1 ] )
+ [182] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#1 form_set_screen::y#1 ] )
to:form_set_screen::@return
form_set_screen::@return: scope:[form_set_screen] from form_set_screen::@1
- [138] return [ ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [183] return [ ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:@return
print_str_lines: scope:[print_str_lines] from menu::@16 menu::@19
- [139] (byte*) print_str_lines::str#5 ← phi( menu::@16/(const string) MENU_COLS#0 menu::@19/(const string) MENU_TEXT#0 ) [ print_str_lines::str#5 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_set_screen::screen#2 ] )
- [140] (byte*~) print_char_cursor#63 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] )
+ [184] (byte*) print_str_lines::str#5 ← phi( menu::@16/(const string) MENU_COLS#0 menu::@19/(const string) MENU_TEXT#0 ) [ print_str_lines::str#5 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_set_screen::screen#2 ] )
+ [185] (byte*~) print_char_cursor#64 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] )
to:print_str_lines::@1
print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9
- [141] (byte*) print_line_cursor#2 ← phi( print_str_lines/(byte*) print_set_screen::screen#2 print_str_lines::@9/(byte*) print_line_cursor#22 ) [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
- [141] (byte*) print_char_cursor#22 ← phi( print_str_lines/(byte*~) print_char_cursor#63 print_str_lines::@9/(byte*~) print_char_cursor#64 ) [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
- [141] (byte*) print_str_lines::str#3 ← phi( print_str_lines/(byte*) print_str_lines::str#5 print_str_lines::@9/(byte*) print_str_lines::str#0 ) [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
- [142] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
+ [186] (byte*) print_line_cursor#2 ← phi( print_str_lines/(byte*) print_set_screen::screen#2 print_str_lines::@9/(byte*) print_line_cursor#22 ) [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
+ [186] (byte*) print_char_cursor#22 ← phi( print_str_lines/(byte*~) print_char_cursor#64 print_str_lines::@9/(byte*~) print_char_cursor#65 ) [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
+ [186] (byte*) print_str_lines::str#3 ← phi( print_str_lines/(byte*) print_str_lines::str#5 print_str_lines::@9/(byte*) print_str_lines::str#0 ) [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
+ [187] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
to:print_str_lines::@return
print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@1
- [143] return [ ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [188] return [ ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:@return
print_str_lines::@4: scope:[print_str_lines] from print_str_lines::@1 print_str_lines::@5
- [144] (byte*) print_char_cursor#20 ← phi( print_str_lines::@1/(byte*) print_char_cursor#22 print_str_lines::@5/(byte*) print_char_cursor#38 ) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] )
- [144] (byte*) print_str_lines::str#4 ← phi( print_str_lines::@1/(byte*) print_str_lines::str#3 print_str_lines::@5/(byte*) print_str_lines::str#0 ) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] )
- [145] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] )
- [146] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] )
- [147] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] )
+ [189] (byte*) print_char_cursor#20 ← phi( print_str_lines::@1/(byte*) print_char_cursor#22 print_str_lines::@5/(byte*) print_char_cursor#38 ) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] )
+ [189] (byte*) print_str_lines::str#4 ← phi( print_str_lines::@1/(byte*) print_str_lines::str#3 print_str_lines::@5/(byte*) print_str_lines::str#0 ) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] )
+ [190] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] )
+ [191] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] )
+ [192] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] )
to:print_str_lines::@8
print_str_lines::@8: scope:[print_str_lines] from print_str_lines::@4
- [148] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] )
- [149] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 [ print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] )
+ [193] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] )
+ [194] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 [ print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] )
to:print_str_lines::@5
print_str_lines::@5: scope:[print_str_lines] from print_str_lines::@4 print_str_lines::@8
- [150] (byte*) print_char_cursor#38 ← phi( print_str_lines::@4/(byte*) print_char_cursor#20 print_str_lines::@8/(byte*) print_char_cursor#1 ) [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 print_str_lines::ch#0 ] )
- [151] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] )
+ [195] (byte*) print_char_cursor#38 ← phi( print_str_lines::@4/(byte*) print_char_cursor#20 print_str_lines::@8/(byte*) print_char_cursor#1 ) [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 print_str_lines::ch#0 ] )
+ [196] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] )
to:print_str_lines::@9
print_str_lines::@9: scope:[print_str_lines] from print_str_lines::@5
- [152] phi() [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] )
- [153] call print_ln param-assignment [ print_str_lines::str#0 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] )
- [154] (byte*~) print_char_cursor#64 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] )
+ [197] phi() [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] )
+ [198] call print_ln param-assignment [ print_str_lines::str#0 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] )
+ [199] (byte*~) print_char_cursor#65 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] )
to:print_str_lines::@1
print_ln: scope:[print_ln] from print_str_lines::@9
- [155] phi() [ print_line_cursor#2 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#2 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#2 print_char_cursor#38 ] )
+ [200] phi() [ print_line_cursor#2 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#2 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#2 print_char_cursor#38 ] )
to:print_ln::@1
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
- [156] (byte*) print_line_cursor#21 ← phi( print_ln/(byte*) print_line_cursor#2 print_ln::@1/(byte*) print_line_cursor#22 ) [ print_char_cursor#38 print_line_cursor#21 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#38 print_line_cursor#21 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#38 print_line_cursor#21 ] )
- [157] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] )
- [158] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] )
+ [201] (byte*) print_line_cursor#21 ← phi( print_ln/(byte*) print_line_cursor#2 print_ln::@1/(byte*) print_line_cursor#22 ) [ print_char_cursor#38 print_line_cursor#21 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#38 print_line_cursor#21 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#38 print_line_cursor#21 ] )
+ [202] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] )
+ [203] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] )
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
- [159] return [ print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] )
+ [204] return [ print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] )
to:@return
print_cls: scope:[print_cls] from menu::@15 menu::@18
- [160] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 print_cls::sc#0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#0 ] )
+ [205] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 print_cls::sc#0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#0 ] )
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
- [161] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] )
- [162] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] )
- [163] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] )
- [164] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] )
- [165] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] )
+ [206] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] )
+ [207] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] )
+ [208] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] )
+ [209] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] )
+ [210] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] )
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
- [166] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ [211] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
to:@return
print_set_screen: scope:[print_set_screen] from menu::@17 menu::@8
- [167] (byte*) print_set_screen::screen#2 ← phi( menu::@17/(const byte*) menu::SCREEN#0 menu::@8/(const byte*) COLS#0 ) [ print_set_screen::screen#2 ] ( main:2::menu:10::print_set_screen:26 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] main:2::menu:10::print_set_screen:32 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ [212] (byte*) print_set_screen::screen#2 ← phi( menu::@17/(const byte*) menu::SCREEN#0 menu::@8/(const byte*) COLS#0 ) [ print_set_screen::screen#2 ] ( main:2::menu:10::print_set_screen:26 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] main:2::menu:10::print_set_screen:32 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
to:print_set_screen::@return
print_set_screen::@return: scope:[print_set_screen] from print_set_screen
- [168] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_set_screen:26 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] main:2::menu:10::print_set_screen:32 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ [213] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_set_screen:26 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] main:2::menu:10::print_set_screen:32 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
to:@return
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.log b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.log
index d06b4e596..15d4a59dd 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.log
+++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.log
@@ -93,11 +93,6 @@ byte[] form_fields_max = { $d, 1, 1, 1, 1, 1, 2, 1, 1, 1, $f, $f, $f, $
// Form fields values
byte[] form_fields_val = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-// Press-status for the DOWN key from last frame - used for debounce
-byte key_down_debounce = 0;
-// Press-status for the right key from last frame - used for debounce
-byte key_right_debounce = 0;
-
// The number of frames to use for a full blink cycle
const signed byte FORM_CURSOR_BLINK = 40;
// Counts down to blink for form cursor (it is inversed in the lower half)
@@ -147,50 +142,46 @@ void form_control() {
*field = *field & $7f;
}
+ // Scan the keyboard
+ keyboard_event_scan();
+ byte key_event = keyboard_event_get();
+
// Navigation using cursor up/down
- byte key_down = keyboard_key_pressed(KEY_CRSR_DOWN);
- if(key_down!=key_down_debounce) {
- key_down_debounce = key_down;
- if(key_down!=0) {
- // Unblink the cursor
- *field = *field & $7f;
- if(keyboard_key_pressed(KEY_RSHIFT)==0) {
- // Move to next field
- if(++form_field_idx==form_fields_cnt) {
- form_field_idx = 0;
- }
- } else {
- // Move to previous field
- if(--form_field_idx==$ff) {
- form_field_idx = form_fields_cnt-1;
- }
- }
- // Always blink cursor in new field
- form_cursor_count = FORM_CURSOR_BLINK/2;
- // Return to refresh
- return;
- }
+ if(key_event==KEY_CRSR_DOWN) {
+ // Unblink the cursor
+ *field = *field & $7f;
+ if((keyboard_modifiers&KEY_MODIFIER_SHIFT)==0) {
+ // Move to next field
+ if(++form_field_idx==form_fields_cnt) {
+ form_field_idx = 0;
+ }
+ } else {
+ // Move to previous field
+ if(--form_field_idx==$ff) {
+ form_field_idx = form_fields_cnt-1;
+ }
+ }
+ // Always blink cursor in new field
+ form_cursor_count = FORM_CURSOR_BLINK/2;
+ // Return to refresh
+ return;
}
// Change value with cursor left/right
- 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
- if(++form_fields_val[form_field_idx]>form_fields_max[form_field_idx]) {
- form_fields_val[form_field_idx] = 0;
- }
- } else {
- // Decrease value
- if(--form_fields_val[form_field_idx]==$ff) {
- form_fields_val[form_field_idx] = form_fields_max[form_field_idx];
- }
+ if(key_event==KEY_CRSR_RIGHT) {
+ if((keyboard_modifiers&KEY_MODIFIER_SHIFT)==0) {
+ // Increase value
+ if(++form_fields_val[form_field_idx]>form_fields_max[form_field_idx]) {
+ form_fields_val[form_field_idx] = 0;
+ }
+ } else {
+ // Decrease value
+ 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]];
}
+ // Render field value
+ *field = print_hextab[form_fields_val[form_field_idx]];
}
}
@@ -605,7 +596,7 @@ const byte[] keyboard_char_keycodes = {
byte[8] keyboard_matrix_row_bitmask = { %11111110, %11111101, %11111011, %11110111, %11101111, %11011111, %10111111, %01111111 };
// Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7)
-byte[] keyboard_matrix_col_bitmask = { %00000001, %00000010, %00000100, %00001000, %00010000, %00100000, %01000000, %10000000 };
+byte[8] keyboard_matrix_col_bitmask = { %00000001, %00000010, %00000100, %00001000, %00010000, %00100000, %01000000, %10000000 };
// Initialize keyboard reading by setting CIA#$ Data Direction Registers
void keyboard_init() {
@@ -625,7 +616,7 @@ byte keyboard_matrix_read(byte rowid) {
return row_pressed_bits;
}
-// Determines whether a specific key is currently pressed
+// Determines whether a specific key is currently pressed by accessing the matrix directly
// The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7)
// All keys exist as as KEY_XXX constants.
// Returns zero if the key is not pressed and a non-zero value if the key is currently pressed
@@ -642,7 +633,102 @@ byte keyboard_key_pressed(byte key) {
byte keyboard_get_keycode(byte ch) {
return keyboard_char_keycodes[ch];
}
+
+// Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan()
+byte[8] keyboard_events;
+// Keyboard event buffer size. The number of events currently in the event buffer
+byte keyboard_events_size = 0;
+// Current keyboard modifiers (left shift, right shift, ctrl, commodore)
+byte keyboard_modifiers = 0;
+// Left shift is pressed
+const byte KEY_MODIFIER_LSHIFT = 1;
+// Right shift is pressed
+const byte KEY_MODIFIER_RSHIFT = 2;
+// CTRL is pressed
+const byte KEY_MODIFIER_CTRL = 4;
+// Commodore is pressed
+const byte KEY_MODIFIER_COMMODORE = 8;
+// Any shift is pressed
+const byte KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT;
+// The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event()
+byte[8] keyboard_scan_values;
+
+// Scans the entire matrix to determine which keys have been pressed/depressed.
+// Generates keyboard events into the event buffer. Events can be read using keyboard_event_get().
+// Handles debounce and only generates events when the status of a key changes.
+// Also stores current status of modifiers in keyboard_modifiers.
+void keyboard_event_scan() {
+ byte keycode = 0;
+ for(byte row : 0..7) {
+ byte row_scan = keyboard_matrix_read(row);
+ if(row_scan!=keyboard_scan_values[row]) {
+ // Something has changed on the keyboard row - check each column
+ for(byte col : 0..7){
+ // XOR of row scan with the last seen row scan AND'ed with the col bitmask will be non-0 if the key status is changed
+ if(((row_scan^keyboard_scan_values[row])&keyboard_matrix_col_bitmask[col])!=0) {
+ // Key(row, col) status has changed. We have an event.
+ // Only process event if there is still room in the buffer
+ if(keyboard_events_size!=8) {
+ // AND of row scan and bit mask determines if key is pressed or released
+ byte event_type = row_scan&keyboard_matrix_col_bitmask[col];
+ if(event_type==0) {
+ // Key released
+ keyboard_events[keyboard_events_size++] = keycode|$40;
+ } else {
+ // Key pressed
+ keyboard_events[keyboard_events_size++] = keycode;
+ }
+ }
+ }
+ keycode++;
+ }
+ // Store the current keyboard status for the row to debounce
+ keyboard_scan_values[row] = row_scan;
+ } else {
+ // Update current keycode
+ keycode = keycode + 8;
+ }
+ }
+ // Update the keyboard modifiers
+ keyboard_modifiers = 0;
+ if(keyboard_event_pressed(KEY_LSHIFT)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_LSHIFT;
+ }
+ if(keyboard_event_pressed(KEY_RSHIFT)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_RSHIFT;
+ }
+ if(keyboard_event_pressed(KEY_CTRL)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_CTRL;
+ }
+ if(keyboard_event_pressed(KEY_COMMODORE)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_COMMODORE;
+ }
+}
+
+// Determine if a specific key is currently pressed based on the last keyboard_event_scan()
+// Returns 0 is not pressed and non-0 if pressed
+byte keyboard_event_pressed(byte keycode) {
+ byte row_bits = keyboard_scan_values[keycode>>3];
+ return row_bits & keyboard_matrix_col_bitmask[keycode&7];
+}
+
+// Get the next event from the keyboard event buffer.
+// Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process.
+// The buffer is filled by keyboard_scan()
+byte keyboard_event_get() {
+ if(keyboard_events_size==0) {
+ return $ff;
+ } else {
+ return keyboard_events[--keyboard_events_size];
+ }
+}
+
+
Importing c64.kc
+Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+Adding pre/post-modifier (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+Adding pre/post-modifier (byte) keyboard_events_size ← -- (byte) keyboard_events_size
Adding pre/post-modifier (byte) form_render_values::idx ← ++ (byte) form_render_values::idx
Adding pre/post-modifier (signed byte) form_cursor_count ← -- (signed byte) form_cursor_count
Adding pre/post-modifier (byte) form_field_idx ← ++ (byte) form_field_idx
@@ -980,7 +1066,7 @@ endproc // print_set_screen()
(byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
(byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(byte[8]) 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_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ (byte[8]) keyboard_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
proc (void()) keyboard_init()
*((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255
*((byte*) CIA1_PORT_B_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -1003,7 +1089,7 @@ proc (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
(byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key >> (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) keyboard_key_pressed::rowidx ← (byte~) keyboard_key_pressed::$1
(byte~) keyboard_key_pressed::$2 ← call keyboard_matrix_read (byte) keyboard_key_pressed::rowidx
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
(byte) keyboard_key_pressed::return ← (byte~) keyboard_key_pressed::$3
goto keyboard_key_pressed::@return
keyboard_key_pressed::@return:
@@ -1017,6 +1103,122 @@ keyboard_get_keycode::@return:
(byte) keyboard_get_keycode::return ← (byte) keyboard_get_keycode::return
return (byte) keyboard_get_keycode::return
endproc // keyboard_get_keycode()
+ (byte[8]) keyboard_events ← { fill( 8, 0) }
+ (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
+ (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+ (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+ (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+ (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
+proc (void()) keyboard_event_scan()
+ (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0
+keyboard_event_scan::@1:
+ (byte~) keyboard_event_scan::$0 ← call keyboard_matrix_read (byte) keyboard_event_scan::row
+ (byte) keyboard_event_scan::row_scan ← (byte~) keyboard_event_scan::$0
+ (boolean~) keyboard_event_scan::$1 ← (byte) keyboard_event_scan::row_scan != *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (boolean~) keyboard_event_scan::$2 ← ! (boolean~) keyboard_event_scan::$1
+ if((boolean~) keyboard_event_scan::$2) goto keyboard_event_scan::@2
+ (byte) keyboard_event_scan::col ← (byte/signed byte/word/signed word/dword/signed dword) 0
+keyboard_event_scan::@3:
+ (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan ^ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (boolean~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$6 ← ! (boolean~) keyboard_event_scan::$5
+ if((boolean~) keyboard_event_scan::$6) goto keyboard_event_scan::@4
+ (boolean~) keyboard_event_scan::$7 ← (byte) keyboard_events_size != (byte/signed byte/word/signed word/dword/signed dword) 8
+ (boolean~) keyboard_event_scan::$8 ← ! (boolean~) keyboard_event_scan::$7
+ if((boolean~) keyboard_event_scan::$8) goto keyboard_event_scan::@5
+ (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_scan::row_scan & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (byte) keyboard_event_scan::event_type ← (byte~) keyboard_event_scan::$9
+ (boolean~) keyboard_event_scan::$10 ← (byte) keyboard_event_scan::event_type == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$11 ← ! (boolean~) keyboard_event_scan::$10
+ if((boolean~) keyboard_event_scan::$11) goto keyboard_event_scan::@6
+ (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode | (byte/signed byte/word/signed word/dword/signed dword) 64
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte/word/dword~) keyboard_event_scan::$12
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ goto keyboard_event_scan::@7
+keyboard_event_scan::@6:
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte) keyboard_event_scan::keycode
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+keyboard_event_scan::@7:
+keyboard_event_scan::@5:
+keyboard_event_scan::@4:
+ (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+ (byte) keyboard_event_scan::col ← ++ (byte) keyboard_event_scan::col
+ (boolean~) keyboard_event_scan::$13 ← (byte) keyboard_event_scan::col != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$13) goto keyboard_event_scan::@3
+ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row) ← (byte) keyboard_event_scan::row_scan
+ goto keyboard_event_scan::@8
+keyboard_event_scan::@2:
+ (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14 ← (byte) keyboard_event_scan::keycode + (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte) keyboard_event_scan::keycode ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+keyboard_event_scan::@8:
+ (byte) keyboard_event_scan::row ← ++ (byte) keyboard_event_scan::row
+ (boolean~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$15) goto keyboard_event_scan::@1
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte~) keyboard_event_scan::$16 ← call keyboard_event_pressed (byte) KEY_LSHIFT
+ (boolean~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$18 ← ! (boolean~) keyboard_event_scan::$17
+ if((boolean~) keyboard_event_scan::$18) goto keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$19 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_LSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$19
+keyboard_event_scan::@9:
+ (byte~) keyboard_event_scan::$20 ← call keyboard_event_pressed (byte) KEY_RSHIFT
+ (boolean~) keyboard_event_scan::$21 ← (byte~) keyboard_event_scan::$20 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$22 ← ! (boolean~) keyboard_event_scan::$21
+ if((boolean~) keyboard_event_scan::$22) goto keyboard_event_scan::@10
+ (byte~) keyboard_event_scan::$23 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_RSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$23
+keyboard_event_scan::@10:
+ (byte~) keyboard_event_scan::$24 ← call keyboard_event_pressed (byte) KEY_CTRL
+ (boolean~) keyboard_event_scan::$25 ← (byte~) keyboard_event_scan::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$26 ← ! (boolean~) keyboard_event_scan::$25
+ if((boolean~) keyboard_event_scan::$26) goto keyboard_event_scan::@11
+ (byte~) keyboard_event_scan::$27 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_CTRL
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$27
+keyboard_event_scan::@11:
+ (byte~) keyboard_event_scan::$28 ← call keyboard_event_pressed (byte) KEY_COMMODORE
+ (boolean~) keyboard_event_scan::$29 ← (byte~) keyboard_event_scan::$28 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$30 ← ! (boolean~) keyboard_event_scan::$29
+ if((boolean~) keyboard_event_scan::$30) goto keyboard_event_scan::@12
+ (byte~) keyboard_event_scan::$31 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_COMMODORE
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$31
+keyboard_event_scan::@12:
+keyboard_event_scan::@return:
+ return
+endproc // keyboard_event_scan()
+proc (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
+ (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3
+ (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0)
+ (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode & (byte/signed byte/word/signed word/dword/signed dword) 7
+ (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits & *((byte[8]) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1)
+ (byte) keyboard_event_pressed::return ← (byte~) keyboard_event_pressed::$2
+ goto keyboard_event_pressed::@return
+keyboard_event_pressed::@return:
+ (byte) keyboard_event_pressed::return ← (byte) keyboard_event_pressed::return
+ return (byte) keyboard_event_pressed::return
+endproc // keyboard_event_pressed()
+proc (byte()) keyboard_event_get()
+ (boolean~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_get::$1 ← ! (boolean~) keyboard_event_get::$0
+ if((boolean~) keyboard_event_get::$1) goto keyboard_event_get::@1
+ (byte) keyboard_event_get::return ← (byte/word/signed word/dword/signed dword) 255
+ goto keyboard_event_get::@return
+ goto keyboard_event_get::@2
+keyboard_event_get::@1:
+ (byte) keyboard_events_size ← -- (byte) keyboard_events_size
+ (byte) keyboard_event_get::return ← *((byte[8]) keyboard_events + (byte) keyboard_events_size)
+ goto keyboard_event_get::@return
+keyboard_event_get::@2:
+keyboard_event_get::@return:
+ (byte) keyboard_event_get::return ← (byte) keyboard_event_get::return
+ return (byte) keyboard_event_get::return
+endproc // keyboard_event_get()
proc (void()) main()
asm { sei }
*((byte*) DTV_FEATURE) ← (byte) DTV_FEATURE_ENABLE
@@ -1030,26 +1232,26 @@ main::@3:
main::@return:
return
endproc // main()
- (string~) $0 ← (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@" + (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
- (string~) $1 ← (string~) $0 + (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
+ (string~) $1 ← (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@" + (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
(string~) $2 ← (string~) $1 + (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
(string~) $3 ← (string~) $2 + (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
(string~) $4 ← (string~) $3 + (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
- (string~) $5 ← (string~) $4 + (string) " nnnnnnn ooooooooo @"
- (string~) $6 ← (string~) $5 + (string) " nnnnnnn nnnnnnnn ooooooooo @"
+ (string~) $5 ← (string~) $4 + (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
+ (string~) $6 ← (string~) $5 + (string) " nnnnnnn ooooooooo @"
(string~) $7 ← (string~) $6 + (string) " nnnnnnn nnnnnnnn ooooooooo @"
- (string~) $8 ← (string~) $7 + (string) "@"
- (byte[]) MENU_COLS ← (string~) $8
- (string~) $9 ← (string) " DTV GfxExplorer MODE 0 8bpp pixel cell @" + (string) " CONTROL PLANE A PLANE B VIC II @"
- (string~) $10 ← (string~) $9 + (string) " bmm 0 patt p0 patt p0 screen s0 @"
- (string~) $11 ← (string~) $10 + (string) " mcm 0 start 00 start 00 gfx g0 @"
- (string~) $12 ← (string~) $11 + (string) " ecm 0 step 00 step 00 colors c0 @"
- (string~) $13 ← (string~) $12 + (string) " hicol 0 mod 00 mod 00 bgcol0 00 @"
- (string~) $14 ← (string~) $13 + (string) " line 0 bgcol1 00 @"
- (string~) $15 ← (string~) $14 + (string) " colof 0 borof 0 bgcol2 00 @"
- (string~) $16 ← (string~) $15 + (string) " chunk 0 overs 0 bgcol3 00 @"
- (string~) $17 ← (string~) $16 + (string) "@"
- (byte[]) MENU_TEXT ← (string~) $17
+ (string~) $8 ← (string~) $7 + (string) " nnnnnnn nnnnnnnn ooooooooo @"
+ (string~) $9 ← (string~) $8 + (string) "@"
+ (byte[]) MENU_COLS ← (string~) $9
+ (string~) $10 ← (string) " DTV GfxExplorer MODE 0 8bpp pixel cell @" + (string) " CONTROL PLANE A PLANE B VIC II @"
+ (string~) $11 ← (string~) $10 + (string) " bmm 0 patt p0 patt p0 screen s0 @"
+ (string~) $12 ← (string~) $11 + (string) " mcm 0 start 00 start 00 gfx g0 @"
+ (string~) $13 ← (string~) $12 + (string) " ecm 0 step 00 step 00 colors c0 @"
+ (string~) $14 ← (string~) $13 + (string) " hicol 0 mod 00 mod 00 bgcol0 00 @"
+ (string~) $15 ← (string~) $14 + (string) " line 0 bgcol1 00 @"
+ (string~) $16 ← (string~) $15 + (string) " colof 0 borof 0 bgcol2 00 @"
+ (string~) $17 ← (string~) $16 + (string) " chunk 0 overs 0 bgcol3 00 @"
+ (string~) $18 ← (string~) $17 + (string) "@"
+ (byte[]) MENU_TEXT ← (string~) $18
proc (void()) menu()
(byte*) menu::SCREEN ← (word/dword/signed dword) 32768
(byte*) menu::CHARSET ← (word/dword/signed dword) 38912
@@ -1126,11 +1328,9 @@ endproc // menu()
(byte[]) form_fields_y ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 8 }
(byte[]) form_fields_max ← { (byte/signed byte/word/signed word/dword/signed dword) 13, (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/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15 }
(byte[]) 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/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/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/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) key_down_debounce ← (byte/signed byte/word/signed word/dword/signed dword) 0
- (byte) key_right_debounce ← (byte/signed byte/word/signed word/dword/signed dword) 0
(signed byte) FORM_CURSOR_BLINK ← (byte/signed byte/word/signed word/dword/signed dword) 40
- (signed word/signed byte/signed dword~) $18 ← (signed byte) FORM_CURSOR_BLINK / (byte/signed byte/word/signed word/dword/signed dword) 2
- (signed byte) form_cursor_count ← (signed word/signed byte/signed dword~) $18
+ (signed word/signed byte/signed dword~) $19 ← (signed byte) FORM_CURSOR_BLINK / (byte/signed byte/word/signed word/dword/signed dword) 2
+ (signed byte) form_cursor_count ← (signed word/signed byte/signed dword~) $19
proc (void()) form_set_screen((byte*) form_set_screen::screen)
(byte*) form_set_screen::line ← (byte*) form_set_screen::screen
(byte) form_set_screen::y ← (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -1192,80 +1392,69 @@ form_control::@2:
(byte~) form_control::$7 ← *((byte*) form_control::field) & (byte/signed byte/word/signed word/dword/signed dword) 127
*((byte*) form_control::field) ← (byte~) form_control::$7
form_control::@3:
- (byte~) form_control::$8 ← call keyboard_key_pressed (byte) KEY_CRSR_DOWN
- (byte) form_control::key_down ← (byte~) form_control::$8
- (boolean~) form_control::$9 ← (byte) form_control::key_down != (byte) key_down_debounce
- (boolean~) form_control::$10 ← ! (boolean~) form_control::$9
- if((boolean~) form_control::$10) goto form_control::@4
- (byte) key_down_debounce ← (byte) form_control::key_down
- (boolean~) form_control::$11 ← (byte) form_control::key_down != (byte/signed byte/word/signed word/dword/signed dword) 0
- (boolean~) form_control::$12 ← ! (boolean~) form_control::$11
- if((boolean~) form_control::$12) goto form_control::@5
- (byte~) form_control::$13 ← *((byte*) form_control::field) & (byte/signed byte/word/signed word/dword/signed dword) 127
- *((byte*) form_control::field) ← (byte~) form_control::$13
- (byte~) form_control::$14 ← call keyboard_key_pressed (byte) KEY_RSHIFT
- (boolean~) form_control::$15 ← (byte~) form_control::$14 == (byte/signed byte/word/signed word/dword/signed dword) 0
- (boolean~) form_control::$16 ← ! (boolean~) form_control::$15
- if((boolean~) form_control::$16) goto form_control::@6
+ (void~) form_control::$8 ← call keyboard_event_scan
+ (byte~) form_control::$9 ← call keyboard_event_get
+ (byte) form_control::key_event ← (byte~) form_control::$9
+ (boolean~) form_control::$10 ← (byte) form_control::key_event == (byte) KEY_CRSR_DOWN
+ (boolean~) form_control::$11 ← ! (boolean~) form_control::$10
+ if((boolean~) form_control::$11) goto form_control::@4
+ (byte~) form_control::$12 ← *((byte*) form_control::field) & (byte/signed byte/word/signed word/dword/signed dword) 127
+ *((byte*) form_control::field) ← (byte~) form_control::$12
+ (byte~) form_control::$13 ← (byte) keyboard_modifiers & (byte) KEY_MODIFIER_SHIFT
+ (boolean~) form_control::$14 ← (byte~) form_control::$13 == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) form_control::$15 ← ! (boolean~) form_control::$14
+ if((boolean~) form_control::$15) goto form_control::@5
(byte) form_field_idx ← ++ (byte) form_field_idx
- (boolean~) form_control::$17 ← (byte) form_field_idx == (byte) form_fields_cnt
- (boolean~) form_control::$18 ← ! (boolean~) form_control::$17
- if((boolean~) form_control::$18) goto form_control::@7
+ (boolean~) form_control::$16 ← (byte) form_field_idx == (byte) form_fields_cnt
+ (boolean~) form_control::$17 ← ! (boolean~) form_control::$16
+ if((boolean~) form_control::$17) goto form_control::@6
(byte) form_field_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0
-form_control::@7:
- goto form_control::@8
form_control::@6:
- (byte) form_field_idx ← -- (byte) form_field_idx
- (boolean~) form_control::$19 ← (byte) form_field_idx == (byte/word/signed word/dword/signed dword) 255
- (boolean~) form_control::$20 ← ! (boolean~) form_control::$19
- if((boolean~) form_control::$20) goto form_control::@9
- (byte/signed word/word/dword/signed dword~) form_control::$21 ← (byte) form_fields_cnt - (byte/signed byte/word/signed word/dword/signed dword) 1
- (byte) form_field_idx ← (byte/signed word/word/dword/signed dword~) form_control::$21
-form_control::@9:
-form_control::@8:
- (signed word/signed byte/signed dword~) form_control::$22 ← (signed byte) FORM_CURSOR_BLINK / (byte/signed byte/word/signed word/dword/signed dword) 2
- (signed byte) form_cursor_count ← (signed word/signed byte/signed dword~) form_control::$22
- goto form_control::@return
+ goto form_control::@7
form_control::@5:
+ (byte) form_field_idx ← -- (byte) form_field_idx
+ (boolean~) form_control::$18 ← (byte) form_field_idx == (byte/word/signed word/dword/signed dword) 255
+ (boolean~) form_control::$19 ← ! (boolean~) form_control::$18
+ if((boolean~) form_control::$19) goto form_control::@8
+ (byte/signed word/word/dword/signed dword~) form_control::$20 ← (byte) form_fields_cnt - (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) form_field_idx ← (byte/signed word/word/dword/signed dword~) form_control::$20
+form_control::@8:
+form_control::@7:
+ (signed word/signed byte/signed dword~) form_control::$21 ← (signed byte) FORM_CURSOR_BLINK / (byte/signed byte/word/signed word/dword/signed dword) 2
+ (signed byte) form_cursor_count ← (signed word/signed byte/signed dword~) form_control::$21
+ goto form_control::@return
form_control::@4:
- (byte~) form_control::$23 ← call keyboard_key_pressed (byte) KEY_CRSR_RIGHT
- (byte) form_control::key_right ← (byte~) form_control::$23
- (boolean~) form_control::$24 ← (byte) form_control::key_right != (byte) key_right_debounce
- (boolean~) form_control::$25 ← ! (boolean~) form_control::$24
- if((boolean~) form_control::$25) goto form_control::@10
- (byte) key_right_debounce ← (byte) form_control::key_right
- (boolean~) form_control::$26 ← (byte) form_control::key_right != (byte/signed byte/word/signed word/dword/signed dword) 0
- (boolean~) form_control::$27 ← ! (boolean~) form_control::$26
- if((boolean~) form_control::$27) goto form_control::@11
- (byte~) form_control::$28 ← call keyboard_key_pressed (byte) KEY_RSHIFT
- (boolean~) form_control::$29 ← (byte~) form_control::$28 == (byte/signed byte/word/signed word/dword/signed dword) 0
- (boolean~) form_control::$30 ← ! (boolean~) form_control::$29
- if((boolean~) form_control::$30) goto form_control::@12
+ (boolean~) form_control::$22 ← (byte) form_control::key_event == (byte) KEY_CRSR_RIGHT
+ (boolean~) form_control::$23 ← ! (boolean~) form_control::$22
+ if((boolean~) form_control::$23) goto form_control::@9
+ (byte~) form_control::$24 ← (byte) keyboard_modifiers & (byte) KEY_MODIFIER_SHIFT
+ (boolean~) form_control::$25 ← (byte~) form_control::$24 == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) form_control::$26 ← ! (boolean~) form_control::$25
+ if((boolean~) form_control::$26) goto form_control::@10
*((byte[]) form_fields_val + (byte) form_field_idx) ← ++ *((byte[]) form_fields_val + (byte) form_field_idx)
- (boolean~) form_control::$31 ← *((byte[]) form_fields_val + (byte) form_field_idx) > *((byte[]) form_fields_max + (byte) form_field_idx)
- (boolean~) form_control::$32 ← ! (boolean~) form_control::$31
- if((boolean~) form_control::$32) goto form_control::@13
+ (boolean~) form_control::$27 ← *((byte[]) form_fields_val + (byte) form_field_idx) > *((byte[]) form_fields_max + (byte) form_field_idx)
+ (boolean~) form_control::$28 ← ! (boolean~) form_control::$27
+ if((boolean~) form_control::$28) goto form_control::@11
*((byte[]) form_fields_val + (byte) form_field_idx) ← (byte/signed byte/word/signed word/dword/signed dword) 0
-form_control::@13:
- goto form_control::@14
-form_control::@12:
- *((byte[]) form_fields_val + (byte) form_field_idx) ← -- *((byte[]) form_fields_val + (byte) form_field_idx)
- (boolean~) form_control::$33 ← *((byte[]) form_fields_val + (byte) form_field_idx) == (byte/word/signed word/dword/signed dword) 255
- (boolean~) form_control::$34 ← ! (boolean~) form_control::$33
- if((boolean~) form_control::$34) goto form_control::@15
- *((byte[]) form_fields_val + (byte) form_field_idx) ← *((byte[]) form_fields_max + (byte) form_field_idx)
-form_control::@15:
-form_control::@14:
- *((byte*) form_control::field) ← *((byte[]) print_hextab + *((byte[]) form_fields_val + (byte) form_field_idx))
form_control::@11:
+ goto form_control::@12
form_control::@10:
+ *((byte[]) form_fields_val + (byte) form_field_idx) ← -- *((byte[]) form_fields_val + (byte) form_field_idx)
+ (boolean~) form_control::$29 ← *((byte[]) form_fields_val + (byte) form_field_idx) == (byte/word/signed word/dword/signed dword) 255
+ (boolean~) form_control::$30 ← ! (boolean~) form_control::$29
+ if((boolean~) form_control::$30) goto form_control::@13
+ *((byte[]) form_fields_val + (byte) form_field_idx) ← *((byte[]) form_fields_max + (byte) form_field_idx)
+form_control::@13:
+form_control::@12:
+ *((byte*) form_control::field) ← *((byte[]) print_hextab + *((byte[]) form_fields_val + (byte) form_field_idx))
+form_control::@9:
form_control::@return:
return
endproc // form_control()
call main
SYMBOLS
-(string~) $0
+(byte~) $0
(string~) $1
(string~) $10
(string~) $11
@@ -1275,7 +1464,8 @@ SYMBOLS
(string~) $15
(string~) $16
(string~) $17
-(signed word/signed byte/signed dword~) $18
+(string~) $18
+(signed word/signed byte/signed dword~) $19
(string~) $2
(string~) $3
(string~) $4
@@ -1385,6 +1575,11 @@ SYMBOLS
(byte) KEY_LSHIFT
(byte) KEY_M
(byte) KEY_MINUS
+(byte) KEY_MODIFIER_COMMODORE
+(byte) KEY_MODIFIER_CTRL
+(byte) KEY_MODIFIER_LSHIFT
+(byte) KEY_MODIFIER_RSHIFT
+(byte) KEY_MODIFIER_SHIFT
(byte) KEY_N
(byte) KEY_O
(byte) KEY_P
@@ -1456,44 +1651,38 @@ SYMBOLS
(boolean~) form_control::$1
(boolean~) form_control::$10
(boolean~) form_control::$11
-(boolean~) form_control::$12
+(byte~) form_control::$12
(byte~) form_control::$13
-(byte~) form_control::$14
+(boolean~) form_control::$14
(boolean~) form_control::$15
(boolean~) form_control::$16
(boolean~) form_control::$17
(boolean~) form_control::$18
(boolean~) form_control::$19
(boolean~) form_control::$2
-(boolean~) form_control::$20
-(byte/signed word/word/dword/signed dword~) form_control::$21
-(signed word/signed byte/signed dword~) form_control::$22
-(byte~) form_control::$23
-(boolean~) form_control::$24
+(byte/signed word/word/dword/signed dword~) form_control::$20
+(signed word/signed byte/signed dword~) form_control::$21
+(boolean~) form_control::$22
+(boolean~) form_control::$23
+(byte~) form_control::$24
(boolean~) form_control::$25
(boolean~) form_control::$26
(boolean~) form_control::$27
-(byte~) form_control::$28
+(boolean~) form_control::$28
(boolean~) form_control::$29
(signed word/signed byte/signed dword~) form_control::$3
(boolean~) form_control::$30
-(boolean~) form_control::$31
-(boolean~) form_control::$32
-(boolean~) form_control::$33
-(boolean~) form_control::$34
(boolean~) form_control::$4
(boolean~) form_control::$5
(byte/word/dword~) form_control::$6
(byte~) form_control::$7
-(byte~) form_control::$8
-(boolean~) form_control::$9
+(void~) form_control::$8
+(byte~) form_control::$9
(label) form_control::@1
(label) form_control::@10
(label) form_control::@11
(label) form_control::@12
(label) form_control::@13
-(label) form_control::@14
-(label) form_control::@15
(label) form_control::@2
(label) form_control::@3
(label) form_control::@4
@@ -1504,8 +1693,7 @@ SYMBOLS
(label) form_control::@9
(label) form_control::@return
(byte*) form_control::field
-(byte) form_control::key_down
-(byte) form_control::key_right
+(byte) form_control::key_event
(signed byte) form_cursor_count
(byte) form_field_idx
(byte*()) form_field_ptr((byte) form_field_ptr::field_idx)
@@ -1542,9 +1730,75 @@ SYMBOLS
(byte*) form_set_screen::line
(byte*) form_set_screen::screen
(byte) form_set_screen::y
-(byte) key_down_debounce
-(byte) key_right_debounce
(byte[]) keyboard_char_keycodes
+(byte()) keyboard_event_get()
+(boolean~) keyboard_event_get::$0
+(boolean~) keyboard_event_get::$1
+(label) keyboard_event_get::@1
+(label) keyboard_event_get::@2
+(label) keyboard_event_get::@return
+(byte) keyboard_event_get::return
+(byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
+(byte~) keyboard_event_pressed::$0
+(byte~) keyboard_event_pressed::$1
+(byte~) keyboard_event_pressed::$2
+(label) keyboard_event_pressed::@return
+(byte) keyboard_event_pressed::keycode
+(byte) keyboard_event_pressed::return
+(byte) keyboard_event_pressed::row_bits
+(void()) keyboard_event_scan()
+(byte~) keyboard_event_scan::$0
+(boolean~) keyboard_event_scan::$1
+(boolean~) keyboard_event_scan::$10
+(boolean~) keyboard_event_scan::$11
+(byte/word/dword~) keyboard_event_scan::$12
+(boolean~) keyboard_event_scan::$13
+(byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+(boolean~) keyboard_event_scan::$15
+(byte~) keyboard_event_scan::$16
+(boolean~) keyboard_event_scan::$17
+(boolean~) keyboard_event_scan::$18
+(byte~) keyboard_event_scan::$19
+(boolean~) keyboard_event_scan::$2
+(byte~) keyboard_event_scan::$20
+(boolean~) keyboard_event_scan::$21
+(boolean~) keyboard_event_scan::$22
+(byte~) keyboard_event_scan::$23
+(byte~) keyboard_event_scan::$24
+(boolean~) keyboard_event_scan::$25
+(boolean~) keyboard_event_scan::$26
+(byte~) keyboard_event_scan::$27
+(byte~) keyboard_event_scan::$28
+(boolean~) keyboard_event_scan::$29
+(byte~) keyboard_event_scan::$3
+(boolean~) keyboard_event_scan::$30
+(byte~) keyboard_event_scan::$31
+(byte~) keyboard_event_scan::$4
+(boolean~) keyboard_event_scan::$5
+(boolean~) keyboard_event_scan::$6
+(boolean~) keyboard_event_scan::$7
+(boolean~) keyboard_event_scan::$8
+(byte~) keyboard_event_scan::$9
+(label) keyboard_event_scan::@1
+(label) keyboard_event_scan::@10
+(label) keyboard_event_scan::@11
+(label) keyboard_event_scan::@12
+(label) keyboard_event_scan::@2
+(label) keyboard_event_scan::@3
+(label) keyboard_event_scan::@4
+(label) keyboard_event_scan::@5
+(label) keyboard_event_scan::@6
+(label) keyboard_event_scan::@7
+(label) keyboard_event_scan::@8
+(label) keyboard_event_scan::@9
+(label) keyboard_event_scan::@return
+(byte) keyboard_event_scan::col
+(byte) keyboard_event_scan::event_type
+(byte) keyboard_event_scan::keycode
+(byte) keyboard_event_scan::row
+(byte) keyboard_event_scan::row_scan
+(byte[8]) keyboard_events
+(byte) keyboard_events_size
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
(label) keyboard_get_keycode::@return
(byte) keyboard_get_keycode::ch
@@ -1561,7 +1815,7 @@ SYMBOLS
(byte) keyboard_key_pressed::key
(byte) keyboard_key_pressed::return
(byte) keyboard_key_pressed::rowidx
-(byte[]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -1569,6 +1823,8 @@ SYMBOLS
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte[8]) keyboard_matrix_row_bitmask
+(byte) keyboard_modifiers
+(byte[8]) keyboard_scan_values
(void()) main()
(void~) main::$0
(label) main::@1
@@ -2206,7 +2462,7 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen
(byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
(byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(byte[8]) 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_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ (byte[8]) keyboard_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
to:@16
keyboard_init: scope:[keyboard_init] from
*((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255
@@ -2237,7 +2493,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from
(byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key >> (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) keyboard_key_pressed::rowidx ← (byte~) keyboard_key_pressed::$1
(byte~) keyboard_key_pressed::$2 ← call keyboard_matrix_read (byte) keyboard_key_pressed::rowidx
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
(byte) keyboard_key_pressed::return ← (byte~) keyboard_key_pressed::$3
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed keyboard_key_pressed::@1
@@ -2258,7 +2514,174 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k
keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from
to:keyboard_get_keycode::@return
@19: scope:[] from @18
+ (byte[8]) keyboard_events ← { fill( 8, 0) }
+ (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
+ (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+ (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+ (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+ (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
to:@20
+keyboard_event_scan: scope:[keyboard_event_scan] from
+ (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ to:keyboard_event_scan::@1
+keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8
+ (byte~) keyboard_event_scan::$0 ← call keyboard_matrix_read (byte) keyboard_event_scan::row
+ (byte) keyboard_event_scan::row_scan ← (byte~) keyboard_event_scan::$0
+ (boolean~) keyboard_event_scan::$1 ← (byte) keyboard_event_scan::row_scan != *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (boolean~) keyboard_event_scan::$2 ← ! (boolean~) keyboard_event_scan::$1
+ if((boolean~) keyboard_event_scan::$2) goto keyboard_event_scan::@2
+ to:keyboard_event_scan::@13
+keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@1 keyboard_event_scan::@19
+ (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14 ← (byte) keyboard_event_scan::keycode + (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte) keyboard_event_scan::keycode ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@1
+ (byte) keyboard_event_scan::col ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ to:keyboard_event_scan::@3
+keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@4
+ (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan ^ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (boolean~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$6 ← ! (boolean~) keyboard_event_scan::$5
+ if((boolean~) keyboard_event_scan::$6) goto keyboard_event_scan::@4
+ to:keyboard_event_scan::@14
+keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@3 keyboard_event_scan::@5
+ (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+ (byte) keyboard_event_scan::col ← ++ (byte) keyboard_event_scan::col
+ (boolean~) keyboard_event_scan::$13 ← (byte) keyboard_event_scan::col != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$13) goto keyboard_event_scan::@3
+ to:keyboard_event_scan::@18
+keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan::@3
+ (boolean~) keyboard_event_scan::$7 ← (byte) keyboard_events_size != (byte/signed byte/word/signed word/dword/signed dword) 8
+ (boolean~) keyboard_event_scan::$8 ← ! (boolean~) keyboard_event_scan::$7
+ if((boolean~) keyboard_event_scan::$8) goto keyboard_event_scan::@5
+ to:keyboard_event_scan::@15
+keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@14 keyboard_event_scan::@7
+ to:keyboard_event_scan::@4
+keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@14
+ (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_scan::row_scan & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (byte) keyboard_event_scan::event_type ← (byte~) keyboard_event_scan::$9
+ (boolean~) keyboard_event_scan::$10 ← (byte) keyboard_event_scan::event_type == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$11 ← ! (boolean~) keyboard_event_scan::$10
+ if((boolean~) keyboard_event_scan::$11) goto keyboard_event_scan::@6
+ to:keyboard_event_scan::@16
+keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@17
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte) keyboard_event_scan::keycode
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ to:keyboard_event_scan::@7
+keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15
+ (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode | (byte/signed byte/word/signed word/dword/signed dword) 64
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte/word/dword~) keyboard_event_scan::$12
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ to:keyboard_event_scan::@7
+keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan::@16 keyboard_event_scan::@6
+ to:keyboard_event_scan::@5
+keyboard_event_scan::@17: scope:[keyboard_event_scan] from
+ to:keyboard_event_scan::@6
+keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan::@4
+ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row) ← (byte) keyboard_event_scan::row_scan
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@18 keyboard_event_scan::@2
+ (byte) keyboard_event_scan::row ← ++ (byte) keyboard_event_scan::row
+ (boolean~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$15) goto keyboard_event_scan::@1
+ to:keyboard_event_scan::@20
+keyboard_event_scan::@19: scope:[keyboard_event_scan] from
+ to:keyboard_event_scan::@2
+keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@8
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte~) keyboard_event_scan::$16 ← call keyboard_event_pressed (byte) KEY_LSHIFT
+ (boolean~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$18 ← ! (boolean~) keyboard_event_scan::$17
+ if((boolean~) keyboard_event_scan::$18) goto keyboard_event_scan::@9
+ to:keyboard_event_scan::@21
+keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@20 keyboard_event_scan::@21
+ (byte~) keyboard_event_scan::$20 ← call keyboard_event_pressed (byte) KEY_RSHIFT
+ (boolean~) keyboard_event_scan::$21 ← (byte~) keyboard_event_scan::$20 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$22 ← ! (boolean~) keyboard_event_scan::$21
+ if((boolean~) keyboard_event_scan::$22) goto keyboard_event_scan::@10
+ to:keyboard_event_scan::@22
+keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@20
+ (byte~) keyboard_event_scan::$19 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_LSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$19
+ to:keyboard_event_scan::@9
+keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$24 ← call keyboard_event_pressed (byte) KEY_CTRL
+ (boolean~) keyboard_event_scan::$25 ← (byte~) keyboard_event_scan::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$26 ← ! (boolean~) keyboard_event_scan::$25
+ if((boolean~) keyboard_event_scan::$26) goto keyboard_event_scan::@11
+ to:keyboard_event_scan::@23
+keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$23 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_RSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$23
+ to:keyboard_event_scan::@10
+keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@10 keyboard_event_scan::@23
+ (byte~) keyboard_event_scan::$28 ← call keyboard_event_pressed (byte) KEY_COMMODORE
+ (boolean~) keyboard_event_scan::$29 ← (byte~) keyboard_event_scan::$28 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$30 ← ! (boolean~) keyboard_event_scan::$29
+ if((boolean~) keyboard_event_scan::$30) goto keyboard_event_scan::@12
+ to:keyboard_event_scan::@24
+keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@10
+ (byte~) keyboard_event_scan::$27 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_CTRL
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$27
+ to:keyboard_event_scan::@11
+keyboard_event_scan::@12: scope:[keyboard_event_scan] from keyboard_event_scan::@11 keyboard_event_scan::@24
+ to:keyboard_event_scan::@return
+keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@11
+ (byte~) keyboard_event_scan::$31 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_COMMODORE
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$31
+ to:keyboard_event_scan::@12
+keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@12
+ return
+ to:@return
+@20: scope:[] from @19
+ to:@21
+keyboard_event_pressed: scope:[keyboard_event_pressed] from
+ (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3
+ (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0)
+ (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode & (byte/signed byte/word/signed word/dword/signed dword) 7
+ (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits & *((byte[8]) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1)
+ (byte) keyboard_event_pressed::return ← (byte~) keyboard_event_pressed::$2
+ to:keyboard_event_pressed::@return
+keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed keyboard_event_pressed::@1
+ (byte) keyboard_event_pressed::return ← (byte) keyboard_event_pressed::return
+ return (byte) keyboard_event_pressed::return
+ to:@return
+keyboard_event_pressed::@1: scope:[keyboard_event_pressed] from
+ to:keyboard_event_pressed::@return
+@21: scope:[] from @20
+ to:@22
+keyboard_event_get: scope:[keyboard_event_get] from
+ (boolean~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_get::$1 ← ! (boolean~) keyboard_event_get::$0
+ if((boolean~) keyboard_event_get::$1) goto keyboard_event_get::@1
+ to:keyboard_event_get::@3
+keyboard_event_get::@1: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@5
+ (byte) keyboard_events_size ← -- (byte) keyboard_events_size
+ (byte) keyboard_event_get::return ← *((byte[8]) keyboard_events + (byte) keyboard_events_size)
+ to:keyboard_event_get::@return
+keyboard_event_get::@3: scope:[keyboard_event_get] from keyboard_event_get
+ (byte) keyboard_event_get::return ← (byte/word/signed word/dword/signed dword) 255
+ to:keyboard_event_get::@return
+keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get::@1 keyboard_event_get::@2 keyboard_event_get::@3
+ (byte) keyboard_event_get::return ← (byte) keyboard_event_get::return
+ return (byte) keyboard_event_get::return
+ to:@return
+keyboard_event_get::@4: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@2
+keyboard_event_get::@2: scope:[keyboard_event_get] from keyboard_event_get::@4 keyboard_event_get::@6
+ to:keyboard_event_get::@return
+keyboard_event_get::@5: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@1
+keyboard_event_get::@6: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@2
+@22: scope:[] from @21
+ to:@23
main: scope:[main] from
asm { sei }
*((byte*) DTV_FEATURE) ← (byte) DTV_FEATURE_ENABLE
@@ -2280,28 +2703,28 @@ main::@6: scope:[main] from
main::@return: scope:[main] from main::@3
return
to:@return
-@20: scope:[] from @19
- (string~) $0 ← (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@" + (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
- (string~) $1 ← (string~) $0 + (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
+@23: scope:[] from @22
+ (string~) $1 ← (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@" + (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
(string~) $2 ← (string~) $1 + (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
(string~) $3 ← (string~) $2 + (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
(string~) $4 ← (string~) $3 + (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
- (string~) $5 ← (string~) $4 + (string) " nnnnnnn ooooooooo @"
- (string~) $6 ← (string~) $5 + (string) " nnnnnnn nnnnnnnn ooooooooo @"
+ (string~) $5 ← (string~) $4 + (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
+ (string~) $6 ← (string~) $5 + (string) " nnnnnnn ooooooooo @"
(string~) $7 ← (string~) $6 + (string) " nnnnnnn nnnnnnnn ooooooooo @"
- (string~) $8 ← (string~) $7 + (string) "@"
- (byte[]) MENU_COLS ← (string~) $8
- (string~) $9 ← (string) " DTV GfxExplorer MODE 0 8bpp pixel cell @" + (string) " CONTROL PLANE A PLANE B VIC II @"
- (string~) $10 ← (string~) $9 + (string) " bmm 0 patt p0 patt p0 screen s0 @"
- (string~) $11 ← (string~) $10 + (string) " mcm 0 start 00 start 00 gfx g0 @"
- (string~) $12 ← (string~) $11 + (string) " ecm 0 step 00 step 00 colors c0 @"
- (string~) $13 ← (string~) $12 + (string) " hicol 0 mod 00 mod 00 bgcol0 00 @"
- (string~) $14 ← (string~) $13 + (string) " line 0 bgcol1 00 @"
- (string~) $15 ← (string~) $14 + (string) " colof 0 borof 0 bgcol2 00 @"
- (string~) $16 ← (string~) $15 + (string) " chunk 0 overs 0 bgcol3 00 @"
- (string~) $17 ← (string~) $16 + (string) "@"
- (byte[]) MENU_TEXT ← (string~) $17
- to:@21
+ (string~) $8 ← (string~) $7 + (string) " nnnnnnn nnnnnnnn ooooooooo @"
+ (string~) $9 ← (string~) $8 + (string) "@"
+ (byte[]) MENU_COLS ← (string~) $9
+ (string~) $10 ← (string) " DTV GfxExplorer MODE 0 8bpp pixel cell @" + (string) " CONTROL PLANE A PLANE B VIC II @"
+ (string~) $11 ← (string~) $10 + (string) " bmm 0 patt p0 patt p0 screen s0 @"
+ (string~) $12 ← (string~) $11 + (string) " mcm 0 start 00 start 00 gfx g0 @"
+ (string~) $13 ← (string~) $12 + (string) " ecm 0 step 00 step 00 colors c0 @"
+ (string~) $14 ← (string~) $13 + (string) " hicol 0 mod 00 mod 00 bgcol0 00 @"
+ (string~) $15 ← (string~) $14 + (string) " line 0 bgcol1 00 @"
+ (string~) $16 ← (string~) $15 + (string) " colof 0 borof 0 bgcol2 00 @"
+ (string~) $17 ← (string~) $16 + (string) " chunk 0 overs 0 bgcol3 00 @"
+ (string~) $18 ← (string~) $17 + (string) "@"
+ (byte[]) MENU_TEXT ← (string~) $18
+ to:@24
menu: scope:[menu] from
(byte*) menu::SCREEN ← ((byte*)) (word/dword/signed dword) 32768
(byte*) menu::CHARSET ← ((byte*)) (word/dword/signed dword) 38912
@@ -2388,7 +2811,7 @@ menu::@14: scope:[menu] from
menu::@return: scope:[menu] from menu::@4
return
to:@return
-@21: scope:[] from @20
+@24: scope:[] from @23
(byte[25]) form_line_lo ← { fill( 25, 0) }
(byte[25]) form_line_hi ← { fill( 25, 0) }
(byte) form_field_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -2397,12 +2820,10 @@ menu::@return: scope:[menu] from menu::@4
(byte[]) form_fields_y ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 8 }
(byte[]) form_fields_max ← { (byte/signed byte/word/signed word/dword/signed dword) 13, (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/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15 }
(byte[]) 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/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/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/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) key_down_debounce ← (byte/signed byte/word/signed word/dword/signed dword) 0
- (byte) key_right_debounce ← (byte/signed byte/word/signed word/dword/signed dword) 0
(signed byte) FORM_CURSOR_BLINK ← (byte/signed byte/word/signed word/dword/signed dword) 40
- (signed word/signed byte/signed dword~) $18 ← (signed byte) FORM_CURSOR_BLINK / (byte/signed byte/word/signed word/dword/signed dword) 2
- (signed byte) form_cursor_count ← (signed word/signed byte/signed dword~) $18
- to:@22
+ (signed word/signed byte/signed dword~) $19 ← (signed byte) FORM_CURSOR_BLINK / (byte/signed byte/word/signed word/dword/signed dword) 2
+ (signed byte) form_cursor_count ← (signed word/signed byte/signed dword~) $19
+ to:@25
form_set_screen: scope:[form_set_screen] from
(byte*) form_set_screen::line ← (byte*) form_set_screen::screen
(byte) form_set_screen::y ← (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -2423,8 +2844,8 @@ form_set_screen::@2: scope:[form_set_screen] from form_set_screen::@1
form_set_screen::@return: scope:[form_set_screen] from form_set_screen::@2
return
to:@return
-@22: scope:[] from @21
- to:@23
+@25: scope:[] from @24
+ to:@26
form_field_ptr: scope:[form_field_ptr] from
(byte) form_field_ptr::y ← *((byte[]) form_fields_y + (byte) form_field_ptr::field_idx)
(byte*~) form_field_ptr::$0 ← ((byte*)) { *((byte[25]) form_line_hi + (byte) form_field_ptr::y), *((byte[25]) form_line_lo + (byte) form_field_ptr::y) }
@@ -2440,8 +2861,8 @@ form_field_ptr::@return: scope:[form_field_ptr] from form_field_ptr form_field_
to:@return
form_field_ptr::@1: scope:[form_field_ptr] from
to:form_field_ptr::@return
-@23: scope:[] from @22
- to:@24
+@26: scope:[] from @25
+ to:@27
form_render_values: scope:[form_render_values] from
(byte) form_render_values::idx ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:form_render_values::@1
@@ -2458,8 +2879,8 @@ form_render_values::@2: scope:[form_render_values] from form_render_values::@1
form_render_values::@return: scope:[form_render_values] from form_render_values::@2
return
to:@return
-@24: scope:[] from @23
- to:@25
+@27: scope:[] from @26
+ to:@28
form_control: scope:[form_control] from
(byte*~) form_control::$0 ← call form_field_ptr (byte) form_field_idx
(byte*) form_control::field ← (byte*~) form_control::$0
@@ -2467,137 +2888,120 @@ form_control: scope:[form_control] from
(boolean~) form_control::$1 ← (signed byte) form_cursor_count < (byte/signed byte/word/signed word/dword/signed dword) 0
(boolean~) form_control::$2 ← ! (boolean~) form_control::$1
if((boolean~) form_control::$2) goto form_control::@1
- to:form_control::@16
-form_control::@1: scope:[form_control] from form_control form_control::@16
+ to:form_control::@14
+form_control::@1: scope:[form_control] from form_control form_control::@14
(signed word/signed byte/signed dword~) form_control::$3 ← (signed byte) FORM_CURSOR_BLINK / (byte/signed byte/word/signed word/dword/signed dword) 2
(boolean~) form_control::$4 ← (signed byte) form_cursor_count < (signed word/signed byte/signed dword~) form_control::$3
(boolean~) form_control::$5 ← ! (boolean~) form_control::$4
if((boolean~) form_control::$5) goto form_control::@2
- to:form_control::@17
-form_control::@16: scope:[form_control] from form_control
+ to:form_control::@15
+form_control::@14: scope:[form_control] from form_control
(signed byte) form_cursor_count ← (signed byte) FORM_CURSOR_BLINK
to:form_control::@1
-form_control::@2: scope:[form_control] from form_control::@1 form_control::@18
+form_control::@2: scope:[form_control] from form_control::@1 form_control::@16
(byte~) form_control::$7 ← *((byte*) form_control::field) & (byte/signed byte/word/signed word/dword/signed dword) 127
*((byte*) form_control::field) ← (byte~) form_control::$7
to:form_control::@3
-form_control::@17: scope:[form_control] from form_control::@1
+form_control::@15: scope:[form_control] from form_control::@1
(byte/word/dword~) form_control::$6 ← *((byte*) form_control::field) | (byte/word/signed word/dword/signed dword) 128
*((byte*) form_control::field) ← (byte/word/dword~) form_control::$6
to:form_control::@3
-form_control::@3: scope:[form_control] from form_control::@17 form_control::@2
- (byte~) form_control::$8 ← call keyboard_key_pressed (byte) KEY_CRSR_DOWN
- (byte) form_control::key_down ← (byte~) form_control::$8
- (boolean~) form_control::$9 ← (byte) form_control::key_down != (byte) key_down_debounce
- (boolean~) form_control::$10 ← ! (boolean~) form_control::$9
- if((boolean~) form_control::$10) goto form_control::@4
- to:form_control::@19
-form_control::@18: scope:[form_control] from
+form_control::@3: scope:[form_control] from form_control::@15 form_control::@2
+ (void~) form_control::$8 ← call keyboard_event_scan
+ (byte~) form_control::$9 ← call keyboard_event_get
+ (byte) form_control::key_event ← (byte~) form_control::$9
+ (boolean~) form_control::$10 ← (byte) form_control::key_event == (byte) KEY_CRSR_DOWN
+ (boolean~) form_control::$11 ← ! (boolean~) form_control::$10
+ if((boolean~) form_control::$11) goto form_control::@4
+ to:form_control::@17
+form_control::@16: scope:[form_control] from
to:form_control::@2
-form_control::@4: scope:[form_control] from form_control::@3 form_control::@5
- (byte~) form_control::$23 ← call keyboard_key_pressed (byte) KEY_CRSR_RIGHT
- (byte) form_control::key_right ← (byte~) form_control::$23
- (boolean~) form_control::$24 ← (byte) form_control::key_right != (byte) key_right_debounce
- (boolean~) form_control::$25 ← ! (boolean~) form_control::$24
- if((boolean~) form_control::$25) goto form_control::@10
- to:form_control::@26
-form_control::@19: scope:[form_control] from form_control::@3
- (byte) key_down_debounce ← (byte) form_control::key_down
- (boolean~) form_control::$11 ← (byte) form_control::key_down != (byte/signed byte/word/signed word/dword/signed dword) 0
- (boolean~) form_control::$12 ← ! (boolean~) form_control::$11
- if((boolean~) form_control::$12) goto form_control::@5
- to:form_control::@20
-form_control::@5: scope:[form_control] from form_control::@19 form_control::@25
- to:form_control::@4
-form_control::@20: scope:[form_control] from form_control::@19
- (byte~) form_control::$13 ← *((byte*) form_control::field) & (byte/signed byte/word/signed word/dword/signed dword) 127
- *((byte*) form_control::field) ← (byte~) form_control::$13
- (byte~) form_control::$14 ← call keyboard_key_pressed (byte) KEY_RSHIFT
- (boolean~) form_control::$15 ← (byte~) form_control::$14 == (byte/signed byte/word/signed word/dword/signed dword) 0
- (boolean~) form_control::$16 ← ! (boolean~) form_control::$15
- if((boolean~) form_control::$16) goto form_control::@6
- to:form_control::@21
-form_control::@6: scope:[form_control] from form_control::@20 form_control::@23
+form_control::@4: scope:[form_control] from form_control::@22 form_control::@3
+ (boolean~) form_control::$22 ← (byte) form_control::key_event == (byte) KEY_CRSR_RIGHT
+ (boolean~) form_control::$23 ← ! (boolean~) form_control::$22
+ if((boolean~) form_control::$23) goto form_control::@9
+ to:form_control::@23
+form_control::@17: scope:[form_control] from form_control::@3
+ (byte~) form_control::$12 ← *((byte*) form_control::field) & (byte/signed byte/word/signed word/dword/signed dword) 127
+ *((byte*) form_control::field) ← (byte~) form_control::$12
+ (byte~) form_control::$13 ← (byte) keyboard_modifiers & (byte) KEY_MODIFIER_SHIFT
+ (boolean~) form_control::$14 ← (byte~) form_control::$13 == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) form_control::$15 ← ! (boolean~) form_control::$14
+ if((boolean~) form_control::$15) goto form_control::@5
+ to:form_control::@18
+form_control::@5: scope:[form_control] from form_control::@17 form_control::@20
(byte) form_field_idx ← -- (byte) form_field_idx
- (boolean~) form_control::$19 ← (byte) form_field_idx == (byte/word/signed word/dword/signed dword) 255
- (boolean~) form_control::$20 ← ! (boolean~) form_control::$19
- if((boolean~) form_control::$20) goto form_control::@9
- to:form_control::@24
-form_control::@21: scope:[form_control] from form_control::@20
+ (boolean~) form_control::$18 ← (byte) form_field_idx == (byte/word/signed word/dword/signed dword) 255
+ (boolean~) form_control::$19 ← ! (boolean~) form_control::$18
+ if((boolean~) form_control::$19) goto form_control::@8
+ to:form_control::@21
+form_control::@18: scope:[form_control] from form_control::@17
(byte) form_field_idx ← ++ (byte) form_field_idx
- (boolean~) form_control::$17 ← (byte) form_field_idx == (byte) form_fields_cnt
- (boolean~) form_control::$18 ← ! (boolean~) form_control::$17
- if((boolean~) form_control::$18) goto form_control::@7
- to:form_control::@22
-form_control::@7: scope:[form_control] from form_control::@21 form_control::@22
- to:form_control::@8
-form_control::@22: scope:[form_control] from form_control::@21
- (byte) form_field_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) form_control::$16 ← (byte) form_field_idx == (byte) form_fields_cnt
+ (boolean~) form_control::$17 ← ! (boolean~) form_control::$16
+ if((boolean~) form_control::$17) goto form_control::@6
+ to:form_control::@19
+form_control::@6: scope:[form_control] from form_control::@18 form_control::@19
to:form_control::@7
-form_control::@8: scope:[form_control] from form_control::@7 form_control::@9
- (signed word/signed byte/signed dword~) form_control::$22 ← (signed byte) FORM_CURSOR_BLINK / (byte/signed byte/word/signed word/dword/signed dword) 2
- (signed byte) form_cursor_count ← (signed word/signed byte/signed dword~) form_control::$22
- to:form_control::@return
-form_control::@23: scope:[form_control] from
+form_control::@19: scope:[form_control] from form_control::@18
+ (byte) form_field_idx ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:form_control::@6
-form_control::@9: scope:[form_control] from form_control::@24 form_control::@6
+form_control::@7: scope:[form_control] from form_control::@6 form_control::@8
+ (signed word/signed byte/signed dword~) form_control::$21 ← (signed byte) FORM_CURSOR_BLINK / (byte/signed byte/word/signed word/dword/signed dword) 2
+ (signed byte) form_cursor_count ← (signed word/signed byte/signed dword~) form_control::$21
+ to:form_control::@return
+form_control::@20: scope:[form_control] from
+ to:form_control::@5
+form_control::@8: scope:[form_control] from form_control::@21 form_control::@5
+ to:form_control::@7
+form_control::@21: scope:[form_control] from form_control::@5
+ (byte/signed word/word/dword/signed dword~) form_control::$20 ← (byte) form_fields_cnt - (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) form_field_idx ← (byte/signed word/word/dword/signed dword~) form_control::$20
to:form_control::@8
-form_control::@24: scope:[form_control] from form_control::@6
- (byte/signed word/word/dword/signed dword~) form_control::$21 ← (byte) form_fields_cnt - (byte/signed byte/word/signed word/dword/signed dword) 1
- (byte) form_field_idx ← (byte/signed word/word/dword/signed dword~) form_control::$21
- to:form_control::@9
-form_control::@return: scope:[form_control] from form_control::@10 form_control::@8
+form_control::@return: scope:[form_control] from form_control::@7 form_control::@9
return
to:@return
-form_control::@25: scope:[form_control] from
- to:form_control::@5
-form_control::@10: scope:[form_control] from form_control::@11 form_control::@4
+form_control::@22: scope:[form_control] from
+ to:form_control::@4
+form_control::@9: scope:[form_control] from form_control::@12 form_control::@4
to:form_control::@return
-form_control::@26: scope:[form_control] from form_control::@4
- (byte) key_right_debounce ← (byte) form_control::key_right
- (boolean~) form_control::$26 ← (byte) form_control::key_right != (byte/signed byte/word/signed word/dword/signed dword) 0
- (boolean~) form_control::$27 ← ! (boolean~) form_control::$26
- if((boolean~) form_control::$27) goto form_control::@11
- to:form_control::@27
-form_control::@11: scope:[form_control] from form_control::@14 form_control::@26
- to:form_control::@10
-form_control::@27: scope:[form_control] from form_control::@26
- (byte~) form_control::$28 ← call keyboard_key_pressed (byte) KEY_RSHIFT
- (boolean~) form_control::$29 ← (byte~) form_control::$28 == (byte/signed byte/word/signed word/dword/signed dword) 0
- (boolean~) form_control::$30 ← ! (boolean~) form_control::$29
- if((boolean~) form_control::$30) goto form_control::@12
- to:form_control::@28
-form_control::@12: scope:[form_control] from form_control::@27 form_control::@30
+form_control::@23: scope:[form_control] from form_control::@4
+ (byte~) form_control::$24 ← (byte) keyboard_modifiers & (byte) KEY_MODIFIER_SHIFT
+ (boolean~) form_control::$25 ← (byte~) form_control::$24 == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) form_control::$26 ← ! (boolean~) form_control::$25
+ if((boolean~) form_control::$26) goto form_control::@10
+ to:form_control::@24
+form_control::@10: scope:[form_control] from form_control::@23 form_control::@26
*((byte[]) form_fields_val + (byte) form_field_idx) ← -- *((byte[]) form_fields_val + (byte) form_field_idx)
- (boolean~) form_control::$33 ← *((byte[]) form_fields_val + (byte) form_field_idx) == (byte/word/signed word/dword/signed dword) 255
- (boolean~) form_control::$34 ← ! (boolean~) form_control::$33
- if((boolean~) form_control::$34) goto form_control::@15
- to:form_control::@31
-form_control::@28: scope:[form_control] from form_control::@27
+ (boolean~) form_control::$29 ← *((byte[]) form_fields_val + (byte) form_field_idx) == (byte/word/signed word/dword/signed dword) 255
+ (boolean~) form_control::$30 ← ! (boolean~) form_control::$29
+ if((boolean~) form_control::$30) goto form_control::@13
+ to:form_control::@27
+form_control::@24: scope:[form_control] from form_control::@23
*((byte[]) form_fields_val + (byte) form_field_idx) ← ++ *((byte[]) form_fields_val + (byte) form_field_idx)
- (boolean~) form_control::$31 ← *((byte[]) form_fields_val + (byte) form_field_idx) > *((byte[]) form_fields_max + (byte) form_field_idx)
- (boolean~) form_control::$32 ← ! (boolean~) form_control::$31
- if((boolean~) form_control::$32) goto form_control::@13
- to:form_control::@29
-form_control::@13: scope:[form_control] from form_control::@28 form_control::@29
- to:form_control::@14
-form_control::@29: scope:[form_control] from form_control::@28
- *((byte[]) form_fields_val + (byte) form_field_idx) ← (byte/signed byte/word/signed word/dword/signed dword) 0
- to:form_control::@13
-form_control::@14: scope:[form_control] from form_control::@13 form_control::@15
- *((byte*) form_control::field) ← *((byte[]) print_hextab + *((byte[]) form_fields_val + (byte) form_field_idx))
- to:form_control::@11
-form_control::@30: scope:[form_control] from
+ (boolean~) form_control::$27 ← *((byte[]) form_fields_val + (byte) form_field_idx) > *((byte[]) form_fields_max + (byte) form_field_idx)
+ (boolean~) form_control::$28 ← ! (boolean~) form_control::$27
+ if((boolean~) form_control::$28) goto form_control::@11
+ to:form_control::@25
+form_control::@11: scope:[form_control] from form_control::@24 form_control::@25
to:form_control::@12
-form_control::@15: scope:[form_control] from form_control::@12 form_control::@31
- to:form_control::@14
-form_control::@31: scope:[form_control] from form_control::@12
+form_control::@25: scope:[form_control] from form_control::@24
+ *((byte[]) form_fields_val + (byte) form_field_idx) ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ to:form_control::@11
+form_control::@12: scope:[form_control] from form_control::@11 form_control::@13
+ *((byte*) form_control::field) ← *((byte[]) print_hextab + *((byte[]) form_fields_val + (byte) form_field_idx))
+ to:form_control::@9
+form_control::@26: scope:[form_control] from
+ to:form_control::@10
+form_control::@13: scope:[form_control] from form_control::@10 form_control::@27
+ to:form_control::@12
+form_control::@27: scope:[form_control] from form_control::@10
*((byte[]) form_fields_val + (byte) form_field_idx) ← *((byte[]) form_fields_max + (byte) form_field_idx)
- to:form_control::@15
-@25: scope:[] from @24
+ to:form_control::@13
+@28: scope:[] from @27
call main
to:@end
-@end: scope:[] from @25
+@end: scope:[] from @28
Removing unused procedure dtvSetCpuBankSegment1
Removing unused procedure print_str_ln
@@ -2606,6 +3010,7 @@ Removing unused procedure print_sword
Removing unused procedure print_sbyte
Removing unused procedure print_sdword
Removing unused procedure keyboard_init
+Removing unused procedure keyboard_key_pressed
Removing unused procedure keyboard_get_keycode
Removing unused procedure print_str
Removing unused procedure print_dword
@@ -2692,10 +3097,7 @@ Eliminating unused variable (byte) KEY_F7 and assignment [135] (byte) KEY_F7 ←
Eliminating unused variable (byte) KEY_F1 and assignment [136] (byte) KEY_F1 ← (byte/signed byte/word/signed word/dword/signed dword) 4
Eliminating unused variable (byte) KEY_F3 and assignment [137] (byte) KEY_F3 ← (byte/signed byte/word/signed word/dword/signed dword) 5
Eliminating unused variable (byte) KEY_F5 and assignment [138] (byte) KEY_F5 ← (byte/signed byte/word/signed word/dword/signed dword) 6
-Eliminating unused variable (byte) KEY_LSHIFT and assignment [147] (byte) KEY_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 15
Eliminating unused variable (byte) KEY_HOME and assignment [183] (byte) KEY_HOME ← (byte/signed byte/word/signed word/dword/signed dword) 51
-Eliminating unused variable (byte) KEY_CTRL and assignment [190] (byte) KEY_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 58
-Eliminating unused variable (byte) KEY_COMMODORE and assignment [193] (byte) KEY_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 61
Eliminating unused variable (byte) KEY_RUNSTOP and assignment [195] (byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
Eliminating unused variable (byte[]) keyboard_char_keycodes and assignment [196] (byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
Eliminating unused variable - keeping the call (void~) main::$0
@@ -2708,6 +3110,7 @@ Eliminating unused variable - keeping the call (void~) menu::$29
Eliminating unused variable - keeping the call (void~) menu::$30
Eliminating unused variable - keeping the call (void~) menu::$31
Eliminating unused variable - keeping the call (void~) menu::$33
+Eliminating unused variable - keeping the call (void~) form_control::$8
Eliminating unused variable (byte) KEY_3 and assignment [61] (byte) KEY_3 ← (byte/signed byte/word/signed word/dword/signed dword) 8
Eliminating unused variable (byte) KEY_W and assignment [62] (byte) KEY_W ← (byte/signed byte/word/signed word/dword/signed dword) 9
Eliminating unused variable (byte) KEY_A and assignment [63] (byte) KEY_A ← (byte/signed byte/word/signed word/dword/signed dword) 10
@@ -2715,70 +3118,70 @@ Eliminating unused variable (byte) KEY_4 and assignment [64] (byte) KEY_4 ← (b
Eliminating unused variable (byte) KEY_Z and assignment [65] (byte) KEY_Z ← (byte/signed byte/word/signed word/dword/signed dword) 12
Eliminating unused variable (byte) KEY_S and assignment [66] (byte) KEY_S ← (byte/signed byte/word/signed word/dword/signed dword) 13
Eliminating unused variable (byte) KEY_E and assignment [67] (byte) KEY_E ← (byte/signed byte/word/signed word/dword/signed dword) 14
-Eliminating unused variable (byte) KEY_5 and assignment [68] (byte) KEY_5 ← (byte/signed byte/word/signed word/dword/signed dword) 16
-Eliminating unused variable (byte) KEY_R and assignment [69] (byte) KEY_R ← (byte/signed byte/word/signed word/dword/signed dword) 17
-Eliminating unused variable (byte) KEY_D and assignment [70] (byte) KEY_D ← (byte/signed byte/word/signed word/dword/signed dword) 18
-Eliminating unused variable (byte) KEY_6 and assignment [71] (byte) KEY_6 ← (byte/signed byte/word/signed word/dword/signed dword) 19
-Eliminating unused variable (byte) KEY_C and assignment [72] (byte) KEY_C ← (byte/signed byte/word/signed word/dword/signed dword) 20
-Eliminating unused variable (byte) KEY_F and assignment [73] (byte) KEY_F ← (byte/signed byte/word/signed word/dword/signed dword) 21
-Eliminating unused variable (byte) KEY_T and assignment [74] (byte) KEY_T ← (byte/signed byte/word/signed word/dword/signed dword) 22
-Eliminating unused variable (byte) KEY_X and assignment [75] (byte) KEY_X ← (byte/signed byte/word/signed word/dword/signed dword) 23
-Eliminating unused variable (byte) KEY_7 and assignment [76] (byte) KEY_7 ← (byte/signed byte/word/signed word/dword/signed dword) 24
-Eliminating unused variable (byte) KEY_Y and assignment [77] (byte) KEY_Y ← (byte/signed byte/word/signed word/dword/signed dword) 25
-Eliminating unused variable (byte) KEY_G and assignment [78] (byte) KEY_G ← (byte/signed byte/word/signed word/dword/signed dword) 26
-Eliminating unused variable (byte) KEY_8 and assignment [79] (byte) KEY_8 ← (byte/signed byte/word/signed word/dword/signed dword) 27
-Eliminating unused variable (byte) KEY_B and assignment [80] (byte) KEY_B ← (byte/signed byte/word/signed word/dword/signed dword) 28
-Eliminating unused variable (byte) KEY_H and assignment [81] (byte) KEY_H ← (byte/signed byte/word/signed word/dword/signed dword) 29
-Eliminating unused variable (byte) KEY_U and assignment [82] (byte) KEY_U ← (byte/signed byte/word/signed word/dword/signed dword) 30
-Eliminating unused variable (byte) KEY_V and assignment [83] (byte) KEY_V ← (byte/signed byte/word/signed word/dword/signed dword) 31
-Eliminating unused variable (byte) KEY_9 and assignment [84] (byte) KEY_9 ← (byte/signed byte/word/signed word/dword/signed dword) 32
-Eliminating unused variable (byte) KEY_I and assignment [85] (byte) KEY_I ← (byte/signed byte/word/signed word/dword/signed dword) 33
-Eliminating unused variable (byte) KEY_J and assignment [86] (byte) KEY_J ← (byte/signed byte/word/signed word/dword/signed dword) 34
-Eliminating unused variable (byte) KEY_0 and assignment [87] (byte) KEY_0 ← (byte/signed byte/word/signed word/dword/signed dword) 35
-Eliminating unused variable (byte) KEY_M and assignment [88] (byte) KEY_M ← (byte/signed byte/word/signed word/dword/signed dword) 36
-Eliminating unused variable (byte) KEY_K and assignment [89] (byte) KEY_K ← (byte/signed byte/word/signed word/dword/signed dword) 37
-Eliminating unused variable (byte) KEY_O and assignment [90] (byte) KEY_O ← (byte/signed byte/word/signed word/dword/signed dword) 38
-Eliminating unused variable (byte) KEY_N and assignment [91] (byte) KEY_N ← (byte/signed byte/word/signed word/dword/signed dword) 39
-Eliminating unused variable (byte) KEY_PLUS and assignment [92] (byte) KEY_PLUS ← (byte/signed byte/word/signed word/dword/signed dword) 40
-Eliminating unused variable (byte) KEY_P and assignment [93] (byte) KEY_P ← (byte/signed byte/word/signed word/dword/signed dword) 41
-Eliminating unused variable (byte) KEY_L and assignment [94] (byte) KEY_L ← (byte/signed byte/word/signed word/dword/signed dword) 42
-Eliminating unused variable (byte) KEY_MINUS and assignment [95] (byte) KEY_MINUS ← (byte/signed byte/word/signed word/dword/signed dword) 43
-Eliminating unused variable (byte) KEY_DOT and assignment [96] (byte) KEY_DOT ← (byte/signed byte/word/signed word/dword/signed dword) 44
-Eliminating unused variable (byte) KEY_COLON and assignment [97] (byte) KEY_COLON ← (byte/signed byte/word/signed word/dword/signed dword) 45
-Eliminating unused variable (byte) KEY_AT and assignment [98] (byte) KEY_AT ← (byte/signed byte/word/signed word/dword/signed dword) 46
-Eliminating unused variable (byte) KEY_COMMA and assignment [99] (byte) KEY_COMMA ← (byte/signed byte/word/signed word/dword/signed dword) 47
-Eliminating unused variable (byte) KEY_POUND and assignment [100] (byte) KEY_POUND ← (byte/signed byte/word/signed word/dword/signed dword) 48
-Eliminating unused variable (byte) KEY_ASTERISK and assignment [101] (byte) KEY_ASTERISK ← (byte/signed byte/word/signed word/dword/signed dword) 49
-Eliminating unused variable (byte) KEY_SEMICOLON and assignment [102] (byte) KEY_SEMICOLON ← (byte/signed byte/word/signed word/dword/signed dword) 50
-Eliminating unused variable (byte) KEY_EQUALS and assignment [104] (byte) KEY_EQUALS ← (byte/signed byte/word/signed word/dword/signed dword) 53
-Eliminating unused variable (byte) KEY_ARROW_UP and assignment [105] (byte) KEY_ARROW_UP ← (byte/signed byte/word/signed word/dword/signed dword) 54
-Eliminating unused variable (byte) KEY_SLASH and assignment [106] (byte) KEY_SLASH ← (byte/signed byte/word/signed word/dword/signed dword) 55
-Eliminating unused variable (byte) KEY_1 and assignment [107] (byte) KEY_1 ← (byte/signed byte/word/signed word/dword/signed dword) 56
-Eliminating unused variable (byte) KEY_ARROW_LEFT and assignment [108] (byte) KEY_ARROW_LEFT ← (byte/signed byte/word/signed word/dword/signed dword) 57
-Eliminating unused variable (byte) KEY_2 and assignment [109] (byte) KEY_2 ← (byte/signed byte/word/signed word/dword/signed dword) 59
-Eliminating unused variable (byte) KEY_SPACE and assignment [110] (byte) KEY_SPACE ← (byte/signed byte/word/signed word/dword/signed dword) 60
-Eliminating unused variable (byte) KEY_Q and assignment [111] (byte) KEY_Q ← (byte/signed byte/word/signed word/dword/signed dword) 62
-Creating constant string variable for inline (const string) $19 "0123456789abcdef"
-Creating constant string variable for inline (const string) $20 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"
-Creating constant string variable for inline (const string) $21 " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
+Eliminating unused variable (byte) KEY_5 and assignment [69] (byte) KEY_5 ← (byte/signed byte/word/signed word/dword/signed dword) 16
+Eliminating unused variable (byte) KEY_R and assignment [70] (byte) KEY_R ← (byte/signed byte/word/signed word/dword/signed dword) 17
+Eliminating unused variable (byte) KEY_D and assignment [71] (byte) KEY_D ← (byte/signed byte/word/signed word/dword/signed dword) 18
+Eliminating unused variable (byte) KEY_6 and assignment [72] (byte) KEY_6 ← (byte/signed byte/word/signed word/dword/signed dword) 19
+Eliminating unused variable (byte) KEY_C and assignment [73] (byte) KEY_C ← (byte/signed byte/word/signed word/dword/signed dword) 20
+Eliminating unused variable (byte) KEY_F and assignment [74] (byte) KEY_F ← (byte/signed byte/word/signed word/dword/signed dword) 21
+Eliminating unused variable (byte) KEY_T and assignment [75] (byte) KEY_T ← (byte/signed byte/word/signed word/dword/signed dword) 22
+Eliminating unused variable (byte) KEY_X and assignment [76] (byte) KEY_X ← (byte/signed byte/word/signed word/dword/signed dword) 23
+Eliminating unused variable (byte) KEY_7 and assignment [77] (byte) KEY_7 ← (byte/signed byte/word/signed word/dword/signed dword) 24
+Eliminating unused variable (byte) KEY_Y and assignment [78] (byte) KEY_Y ← (byte/signed byte/word/signed word/dword/signed dword) 25
+Eliminating unused variable (byte) KEY_G and assignment [79] (byte) KEY_G ← (byte/signed byte/word/signed word/dword/signed dword) 26
+Eliminating unused variable (byte) KEY_8 and assignment [80] (byte) KEY_8 ← (byte/signed byte/word/signed word/dword/signed dword) 27
+Eliminating unused variable (byte) KEY_B and assignment [81] (byte) KEY_B ← (byte/signed byte/word/signed word/dword/signed dword) 28
+Eliminating unused variable (byte) KEY_H and assignment [82] (byte) KEY_H ← (byte/signed byte/word/signed word/dword/signed dword) 29
+Eliminating unused variable (byte) KEY_U and assignment [83] (byte) KEY_U ← (byte/signed byte/word/signed word/dword/signed dword) 30
+Eliminating unused variable (byte) KEY_V and assignment [84] (byte) KEY_V ← (byte/signed byte/word/signed word/dword/signed dword) 31
+Eliminating unused variable (byte) KEY_9 and assignment [85] (byte) KEY_9 ← (byte/signed byte/word/signed word/dword/signed dword) 32
+Eliminating unused variable (byte) KEY_I and assignment [86] (byte) KEY_I ← (byte/signed byte/word/signed word/dword/signed dword) 33
+Eliminating unused variable (byte) KEY_J and assignment [87] (byte) KEY_J ← (byte/signed byte/word/signed word/dword/signed dword) 34
+Eliminating unused variable (byte) KEY_0 and assignment [88] (byte) KEY_0 ← (byte/signed byte/word/signed word/dword/signed dword) 35
+Eliminating unused variable (byte) KEY_M and assignment [89] (byte) KEY_M ← (byte/signed byte/word/signed word/dword/signed dword) 36
+Eliminating unused variable (byte) KEY_K and assignment [90] (byte) KEY_K ← (byte/signed byte/word/signed word/dword/signed dword) 37
+Eliminating unused variable (byte) KEY_O and assignment [91] (byte) KEY_O ← (byte/signed byte/word/signed word/dword/signed dword) 38
+Eliminating unused variable (byte) KEY_N and assignment [92] (byte) KEY_N ← (byte/signed byte/word/signed word/dword/signed dword) 39
+Eliminating unused variable (byte) KEY_PLUS and assignment [93] (byte) KEY_PLUS ← (byte/signed byte/word/signed word/dword/signed dword) 40
+Eliminating unused variable (byte) KEY_P and assignment [94] (byte) KEY_P ← (byte/signed byte/word/signed word/dword/signed dword) 41
+Eliminating unused variable (byte) KEY_L and assignment [95] (byte) KEY_L ← (byte/signed byte/word/signed word/dword/signed dword) 42
+Eliminating unused variable (byte) KEY_MINUS and assignment [96] (byte) KEY_MINUS ← (byte/signed byte/word/signed word/dword/signed dword) 43
+Eliminating unused variable (byte) KEY_DOT and assignment [97] (byte) KEY_DOT ← (byte/signed byte/word/signed word/dword/signed dword) 44
+Eliminating unused variable (byte) KEY_COLON and assignment [98] (byte) KEY_COLON ← (byte/signed byte/word/signed word/dword/signed dword) 45
+Eliminating unused variable (byte) KEY_AT and assignment [99] (byte) KEY_AT ← (byte/signed byte/word/signed word/dword/signed dword) 46
+Eliminating unused variable (byte) KEY_COMMA and assignment [100] (byte) KEY_COMMA ← (byte/signed byte/word/signed word/dword/signed dword) 47
+Eliminating unused variable (byte) KEY_POUND and assignment [101] (byte) KEY_POUND ← (byte/signed byte/word/signed word/dword/signed dword) 48
+Eliminating unused variable (byte) KEY_ASTERISK and assignment [102] (byte) KEY_ASTERISK ← (byte/signed byte/word/signed word/dword/signed dword) 49
+Eliminating unused variable (byte) KEY_SEMICOLON and assignment [103] (byte) KEY_SEMICOLON ← (byte/signed byte/word/signed word/dword/signed dword) 50
+Eliminating unused variable (byte) KEY_EQUALS and assignment [105] (byte) KEY_EQUALS ← (byte/signed byte/word/signed word/dword/signed dword) 53
+Eliminating unused variable (byte) KEY_ARROW_UP and assignment [106] (byte) KEY_ARROW_UP ← (byte/signed byte/word/signed word/dword/signed dword) 54
+Eliminating unused variable (byte) KEY_SLASH and assignment [107] (byte) KEY_SLASH ← (byte/signed byte/word/signed word/dword/signed dword) 55
+Eliminating unused variable (byte) KEY_1 and assignment [108] (byte) KEY_1 ← (byte/signed byte/word/signed word/dword/signed dword) 56
+Eliminating unused variable (byte) KEY_ARROW_LEFT and assignment [109] (byte) KEY_ARROW_LEFT ← (byte/signed byte/word/signed word/dword/signed dword) 57
+Eliminating unused variable (byte) KEY_2 and assignment [111] (byte) KEY_2 ← (byte/signed byte/word/signed word/dword/signed dword) 59
+Eliminating unused variable (byte) KEY_SPACE and assignment [112] (byte) KEY_SPACE ← (byte/signed byte/word/signed word/dword/signed dword) 60
+Eliminating unused variable (byte) KEY_Q and assignment [114] (byte) KEY_Q ← (byte/signed byte/word/signed word/dword/signed dword) 62
+Creating constant string variable for inline (const string) $20 "0123456789abcdef"
+Creating constant string variable for inline (const string) $21 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"
Creating constant string variable for inline (const string) $22 " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
Creating constant string variable for inline (const string) $23 " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
Creating constant string variable for inline (const string) $24 " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
Creating constant string variable for inline (const string) $25 " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
-Creating constant string variable for inline (const string) $26 " nnnnnnn ooooooooo @"
-Creating constant string variable for inline (const string) $27 " nnnnnnn nnnnnnnn ooooooooo @"
+Creating constant string variable for inline (const string) $26 " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
+Creating constant string variable for inline (const string) $27 " nnnnnnn ooooooooo @"
Creating constant string variable for inline (const string) $28 " nnnnnnn nnnnnnnn ooooooooo @"
-Creating constant string variable for inline (const string) $29 "@"
-Creating constant string variable for inline (const string) $30 " DTV GfxExplorer MODE 0 8bpp pixel cell @"
-Creating constant string variable for inline (const string) $31 " CONTROL PLANE A PLANE B VIC II @"
-Creating constant string variable for inline (const string) $32 " bmm 0 patt p0 patt p0 screen s0 @"
-Creating constant string variable for inline (const string) $33 " mcm 0 start 00 start 00 gfx g0 @"
-Creating constant string variable for inline (const string) $34 " ecm 0 step 00 step 00 colors c0 @"
-Creating constant string variable for inline (const string) $35 " hicol 0 mod 00 mod 00 bgcol0 00 @"
-Creating constant string variable for inline (const string) $36 " line 0 bgcol1 00 @"
-Creating constant string variable for inline (const string) $37 " colof 0 borof 0 bgcol2 00 @"
-Creating constant string variable for inline (const string) $38 " chunk 0 overs 0 bgcol3 00 @"
-Creating constant string variable for inline (const string) $39 "@"
+Creating constant string variable for inline (const string) $29 " nnnnnnn nnnnnnnn ooooooooo @"
+Creating constant string variable for inline (const string) $30 "@"
+Creating constant string variable for inline (const string) $31 " DTV GfxExplorer MODE 0 8bpp pixel cell @"
+Creating constant string variable for inline (const string) $32 " CONTROL PLANE A PLANE B VIC II @"
+Creating constant string variable for inline (const string) $33 " bmm 0 patt p0 patt p0 screen s0 @"
+Creating constant string variable for inline (const string) $34 " mcm 0 start 00 start 00 gfx g0 @"
+Creating constant string variable for inline (const string) $35 " ecm 0 step 00 step 00 colors c0 @"
+Creating constant string variable for inline (const string) $36 " hicol 0 mod 00 mod 00 bgcol0 00 @"
+Creating constant string variable for inline (const string) $37 " line 0 bgcol1 00 @"
+Creating constant string variable for inline (const string) $38 " colof 0 borof 0 bgcol2 00 @"
+Creating constant string variable for inline (const string) $39 " chunk 0 overs 0 bgcol3 00 @"
+Creating constant string variable for inline (const string) $40 "@"
Removing empty block print_str_lines::@6
Removing empty block print_str_lines::@3
Removing empty block print_str_lines::@7
@@ -2798,9 +3201,18 @@ Removing empty block @14
Removing empty block @16
Removing empty block keyboard_matrix_read::@1
Removing empty block @17
-Removing empty block keyboard_key_pressed::@1
Removing empty block @18
-Removing empty block @19
+Removing empty block keyboard_event_scan::@7
+Removing empty block keyboard_event_scan::@17
+Removing empty block keyboard_event_scan::@19
+Removing empty block @20
+Removing empty block keyboard_event_pressed::@1
+Removing empty block @21
+Removing empty block keyboard_event_get::@4
+Removing empty block keyboard_event_get::@2
+Removing empty block keyboard_event_get::@5
+Removing empty block keyboard_event_get::@6
+Removing empty block @22
Removing empty block main::@4
Removing empty block main::@3
Removing empty block main::@5
@@ -2813,15 +3225,15 @@ Removing empty block menu::@12
Removing empty block menu::@13
Removing empty block menu::@14
Removing empty block form_set_screen::@2
-Removing empty block @22
+Removing empty block @25
Removing empty block form_field_ptr::@1
-Removing empty block @23
+Removing empty block @26
Removing empty block form_render_values::@2
-Removing empty block @24
-Removing empty block form_control::@18
-Removing empty block form_control::@23
-Removing empty block form_control::@25
-Removing empty block form_control::@30
+Removing empty block @27
+Removing empty block form_control::@16
+Removing empty block form_control::@20
+Removing empty block form_control::@22
+Removing empty block form_control::@26
PROCEDURE MODIFY VARIABLE ANALYSIS
print_str_lines modifies print_char_cursor
print_str_lines modifies print_line_cursor
@@ -2832,24 +3244,27 @@ print_cls modifies print_char_cursor
print_set_screen modifies print_screen
print_set_screen modifies print_line_cursor
print_set_screen modifies print_char_cursor
+keyboard_event_scan modifies keyboard_events_size
+keyboard_event_scan modifies keyboard_modifiers
+keyboard_event_get modifies keyboard_events_size
main modifies print_screen
main modifies print_line_cursor
main modifies print_char_cursor
main modifies form_cursor_count
-main modifies key_down_debounce
+main modifies keyboard_events_size
+main modifies keyboard_modifiers
main modifies form_field_idx
-main modifies key_right_debounce
menu modifies print_screen
menu modifies print_line_cursor
menu modifies print_char_cursor
menu modifies form_cursor_count
-menu modifies key_down_debounce
+menu modifies keyboard_events_size
+menu modifies keyboard_modifiers
menu modifies form_field_idx
-menu modifies key_right_debounce
form_control modifies form_cursor_count
-form_control modifies key_down_debounce
+form_control modifies keyboard_events_size
+form_control modifies keyboard_modifiers
form_control modifies form_field_idx
-form_control modifies key_right_debounce
Completing Phi functions...
Completing Phi functions...
@@ -2987,10 +3402,10 @@ print_ln::@return: scope:[print_ln] from print_ln::@2
return
to:@return
@11: scope:[] from @1
- (byte*) print_char_cursor#60 ← phi( @1/(byte*) print_char_cursor#0 )
- (byte*) print_line_cursor#60 ← phi( @1/(byte*) print_line_cursor#0 )
- (byte*) print_screen#38 ← phi( @1/(byte*) print_screen#0 )
- (byte[]) print_hextab#0 ← (const string) $19
+ (byte*) print_char_cursor#63 ← phi( @1/(byte*) print_char_cursor#0 )
+ (byte*) print_line_cursor#63 ← phi( @1/(byte*) print_line_cursor#0 )
+ (byte*) print_screen#42 ← phi( @1/(byte*) print_screen#0 )
+ (byte[]) print_hextab#0 ← (const string) $20
to:@15
print_cls: scope:[print_cls] from menu::@15 menu::@18
(byte*) print_screen#9 ← phi( menu::@15/(byte*) print_screen#5 menu::@18/(byte*) print_screen#6 )
@@ -3033,17 +3448,20 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen
return
to:@return
@15: scope:[] from @11
- (byte*) print_char_cursor#58 ← phi( @11/(byte*) print_char_cursor#60 )
- (byte*) print_line_cursor#58 ← phi( @11/(byte*) print_line_cursor#60 )
- (byte*) print_screen#35 ← phi( @11/(byte*) print_screen#38 )
+ (byte*) print_char_cursor#60 ← phi( @11/(byte*) print_char_cursor#63 )
+ (byte*) print_line_cursor#60 ← phi( @11/(byte*) print_line_cursor#63 )
+ (byte*) print_screen#38 ← phi( @11/(byte*) print_screen#42 )
(byte) KEY_CRSR_RIGHT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
(byte) KEY_CRSR_DOWN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
+ (byte) KEY_LSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 15
(byte) KEY_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 52
+ (byte) KEY_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 58
+ (byte) KEY_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 61
(byte[8]) keyboard_matrix_row_bitmask#0 ← { (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_matrix_col_bitmask#0 ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
- to:@20
-keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed
- (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 )
+ (byte[8]) keyboard_matrix_col_bitmask#0 ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ to:@19
+keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1
+ (byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_event_scan::@1/(byte) keyboard_matrix_read::rowid#0 )
*((byte*) CIA1_PORT_A#0) ← *((byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#1)
(byte~) keyboard_matrix_read::$0 ← ~ *((byte*) CIA1_PORT_B#0)
(byte) keyboard_matrix_read::row_pressed_bits#0 ← (byte~) keyboard_matrix_read::$0
@@ -3054,56 +3472,307 @@ keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matri
(byte) keyboard_matrix_read::return#1 ← (byte) keyboard_matrix_read::return#3
return
to:@return
-keyboard_key_pressed: scope:[keyboard_key_pressed] from form_control::@20 form_control::@27 form_control::@3 form_control::@4
- (byte) keyboard_key_pressed::key#4 ← phi( form_control::@20/(byte) keyboard_key_pressed::key#2 form_control::@27/(byte) keyboard_key_pressed::key#3 form_control::@3/(byte) keyboard_key_pressed::key#0 form_control::@4/(byte) keyboard_key_pressed::key#1 )
- (byte~) keyboard_key_pressed::$0 ← (byte) keyboard_key_pressed::key#4 & (byte/signed byte/word/signed word/dword/signed dword) 7
- (byte) keyboard_key_pressed::colidx#0 ← (byte~) keyboard_key_pressed::$0
- (byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3
- (byte) keyboard_key_pressed::rowidx#0 ← (byte~) keyboard_key_pressed::$1
- (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_key_pressed::rowidx#0
+@19: scope:[] from @15
+ (byte*) print_char_cursor#58 ← phi( @15/(byte*) print_char_cursor#60 )
+ (byte*) print_line_cursor#58 ← phi( @15/(byte*) print_line_cursor#60 )
+ (byte*) print_screen#35 ← phi( @15/(byte*) print_screen#38 )
+ (byte[8]) keyboard_events#0 ← { fill( 8, 0) }
+ (byte) keyboard_events_size#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_modifiers#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) KEY_MODIFIER_LSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) KEY_MODIFIER_RSHIFT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
+ (byte) KEY_MODIFIER_CTRL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
+ (byte) KEY_MODIFIER_COMMODORE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT#0 | (byte) KEY_MODIFIER_RSHIFT#0
+ (byte) KEY_MODIFIER_SHIFT#0 ← (byte~) $0
+ (byte[8]) keyboard_scan_values#0 ← { fill( 8, 0) }
+ to:@23
+keyboard_event_scan: scope:[keyboard_event_scan] from form_control::@3
+ (byte) keyboard_events_size#81 ← phi( form_control::@3/(byte) keyboard_events_size#38 )
+ (byte) keyboard_event_scan::keycode#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_event_scan::row#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ to:keyboard_event_scan::@1
+keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8
+ (byte) keyboard_events_size#73 ← phi( keyboard_event_scan/(byte) keyboard_events_size#81 keyboard_event_scan::@8/(byte) keyboard_events_size#82 )
+ (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte) keyboard_event_scan::keycode#0 keyboard_event_scan::@8/(byte) keyboard_event_scan::keycode#14 )
+ (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte) keyboard_event_scan::row#0 keyboard_event_scan::@8/(byte) keyboard_event_scan::row#1 )
+ (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2
call keyboard_matrix_read param-assignment
(byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#1
- to:keyboard_key_pressed::@2
-keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_pressed
- (byte) keyboard_key_pressed::colidx#1 ← phi( keyboard_key_pressed/(byte) keyboard_key_pressed::colidx#0 )
- (byte) keyboard_matrix_read::return#4 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::return#2 )
- (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#4
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#1)
- (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$3
- to:keyboard_key_pressed::@return
-keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
- (byte) keyboard_key_pressed::return#6 ← phi( keyboard_key_pressed::@2/(byte) keyboard_key_pressed::return#0 )
- (byte) keyboard_key_pressed::return#1 ← (byte) keyboard_key_pressed::return#6
+ to:keyboard_event_scan::@25
+keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan::@1
+ (byte) keyboard_events_size#61 ← phi( keyboard_event_scan::@1/(byte) keyboard_events_size#73 )
+ (byte) keyboard_event_scan::keycode#7 ← phi( keyboard_event_scan::@1/(byte) keyboard_event_scan::keycode#11 )
+ (byte) keyboard_event_scan::row#3 ← phi( keyboard_event_scan::@1/(byte) keyboard_event_scan::row#2 )
+ (byte) keyboard_matrix_read::return#4 ← phi( keyboard_event_scan::@1/(byte) keyboard_matrix_read::return#2 )
+ (byte~) keyboard_event_scan::$0 ← (byte) keyboard_matrix_read::return#4
+ (byte) keyboard_event_scan::row_scan#0 ← (byte~) keyboard_event_scan::$0
+ (boolean~) keyboard_event_scan::$1 ← (byte) keyboard_event_scan::row_scan#0 != *((byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#3)
+ (boolean~) keyboard_event_scan::$2 ← ! (boolean~) keyboard_event_scan::$1
+ if((boolean~) keyboard_event_scan::$2) goto keyboard_event_scan::@2
+ to:keyboard_event_scan::@13
+keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@25
+ (byte) keyboard_events_size#87 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#61 )
+ (byte) keyboard_event_scan::row#9 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::row#3 )
+ (byte) keyboard_event_scan::keycode#3 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#7 )
+ (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14 ← (byte) keyboard_event_scan::keycode#3 + (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte) keyboard_event_scan::keycode#1 ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@25
+ (byte) keyboard_events_size#43 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#61 )
+ (byte) keyboard_event_scan::keycode#12 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#7 )
+ (byte) keyboard_event_scan::row#7 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::row#3 )
+ (byte) keyboard_event_scan::row_scan#4 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::row_scan#0 )
+ (byte) keyboard_event_scan::col#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ to:keyboard_event_scan::@3
+keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@4
+ (byte) keyboard_events_size#29 ← phi( keyboard_event_scan::@13/(byte) keyboard_events_size#43 keyboard_event_scan::@4/(byte) keyboard_events_size#44 )
+ (byte) keyboard_event_scan::keycode#8 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::keycode#12 keyboard_event_scan::@4/(byte) keyboard_event_scan::keycode#2 )
+ (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::col#0 keyboard_event_scan::@4/(byte) keyboard_event_scan::col#1 )
+ (byte) keyboard_event_scan::row#4 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::row#7 keyboard_event_scan::@4/(byte) keyboard_event_scan::row#8 )
+ (byte) keyboard_event_scan::row_scan#1 ← phi( keyboard_event_scan::@13/(byte) keyboard_event_scan::row_scan#4 keyboard_event_scan::@4/(byte) keyboard_event_scan::row_scan#5 )
+ (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#1 ^ *((byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#4)
+ (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2)
+ (boolean~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$6 ← ! (boolean~) keyboard_event_scan::$5
+ if((boolean~) keyboard_event_scan::$6) goto keyboard_event_scan::@4
+ to:keyboard_event_scan::@14
+keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@16 keyboard_event_scan::@3 keyboard_event_scan::@5 keyboard_event_scan::@6
+ (byte) keyboard_events_size#44 ← phi( keyboard_event_scan::@16/(byte) keyboard_events_size#2 keyboard_event_scan::@3/(byte) keyboard_events_size#29 keyboard_event_scan::@5/(byte) keyboard_events_size#62 keyboard_event_scan::@6/(byte) keyboard_events_size#1 )
+ (byte) keyboard_event_scan::row#8 ← phi( keyboard_event_scan::@16/(byte) keyboard_event_scan::row#10 keyboard_event_scan::@3/(byte) keyboard_event_scan::row#4 keyboard_event_scan::@5/(byte) keyboard_event_scan::row#11 keyboard_event_scan::@6/(byte) keyboard_event_scan::row#12 )
+ (byte) keyboard_event_scan::row_scan#5 ← phi( keyboard_event_scan::@16/(byte) keyboard_event_scan::row_scan#7 keyboard_event_scan::@3/(byte) keyboard_event_scan::row_scan#1 keyboard_event_scan::@5/(byte) keyboard_event_scan::row_scan#8 keyboard_event_scan::@6/(byte) keyboard_event_scan::row_scan#9 )
+ (byte) keyboard_event_scan::col#3 ← phi( keyboard_event_scan::@16/(byte) keyboard_event_scan::col#5 keyboard_event_scan::@3/(byte) keyboard_event_scan::col#2 keyboard_event_scan::@5/(byte) keyboard_event_scan::col#6 keyboard_event_scan::@6/(byte) keyboard_event_scan::col#7 )
+ (byte) keyboard_event_scan::keycode#4 ← phi( keyboard_event_scan::@16/(byte) keyboard_event_scan::keycode#6 keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#8 keyboard_event_scan::@5/(byte) keyboard_event_scan::keycode#9 keyboard_event_scan::@6/(byte) keyboard_event_scan::keycode#5 )
+ (byte) keyboard_event_scan::keycode#2 ← ++ (byte) keyboard_event_scan::keycode#4
+ (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#3
+ (boolean~) keyboard_event_scan::$13 ← (byte) keyboard_event_scan::col#1 != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$13) goto keyboard_event_scan::@3
+ to:keyboard_event_scan::@18
+keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan::@3
+ (byte) keyboard_event_scan::row#13 ← phi( keyboard_event_scan::@3/(byte) keyboard_event_scan::row#4 )
+ (byte) keyboard_event_scan::keycode#13 ← phi( keyboard_event_scan::@3/(byte) keyboard_event_scan::keycode#8 )
+ (byte) keyboard_event_scan::col#8 ← phi( keyboard_event_scan::@3/(byte) keyboard_event_scan::col#2 )
+ (byte) keyboard_event_scan::row_scan#6 ← phi( keyboard_event_scan::@3/(byte) keyboard_event_scan::row_scan#1 )
+ (byte) keyboard_events_size#14 ← phi( keyboard_event_scan::@3/(byte) keyboard_events_size#29 )
+ (boolean~) keyboard_event_scan::$7 ← (byte) keyboard_events_size#14 != (byte/signed byte/word/signed word/dword/signed dword) 8
+ (boolean~) keyboard_event_scan::$8 ← ! (boolean~) keyboard_event_scan::$7
+ if((boolean~) keyboard_event_scan::$8) goto keyboard_event_scan::@5
+ to:keyboard_event_scan::@15
+keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@14
+ (byte) keyboard_events_size#62 ← phi( keyboard_event_scan::@14/(byte) keyboard_events_size#14 )
+ (byte) keyboard_event_scan::row#11 ← phi( keyboard_event_scan::@14/(byte) keyboard_event_scan::row#13 )
+ (byte) keyboard_event_scan::row_scan#8 ← phi( keyboard_event_scan::@14/(byte) keyboard_event_scan::row_scan#6 )
+ (byte) keyboard_event_scan::col#6 ← phi( keyboard_event_scan::@14/(byte) keyboard_event_scan::col#8 )
+ (byte) keyboard_event_scan::keycode#9 ← phi( keyboard_event_scan::@14/(byte) keyboard_event_scan::keycode#13 )
+ to:keyboard_event_scan::@4
+keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@14
+ (byte) keyboard_event_scan::row#14 ← phi( keyboard_event_scan::@14/(byte) keyboard_event_scan::row#13 )
+ (byte) keyboard_events_size#30 ← phi( keyboard_event_scan::@14/(byte) keyboard_events_size#14 )
+ (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@14/(byte) keyboard_event_scan::keycode#13 )
+ (byte) keyboard_event_scan::col#4 ← phi( keyboard_event_scan::@14/(byte) keyboard_event_scan::col#8 )
+ (byte) keyboard_event_scan::row_scan#2 ← phi( keyboard_event_scan::@14/(byte) keyboard_event_scan::row_scan#6 )
+ (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_scan::row_scan#2 & *((byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#4)
+ (byte) keyboard_event_scan::event_type#0 ← (byte~) keyboard_event_scan::$9
+ (boolean~) keyboard_event_scan::$10 ← (byte) keyboard_event_scan::event_type#0 == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$11 ← ! (boolean~) keyboard_event_scan::$10
+ if((boolean~) keyboard_event_scan::$11) goto keyboard_event_scan::@6
+ to:keyboard_event_scan::@16
+keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@15
+ (byte) keyboard_event_scan::row#12 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::row#14 )
+ (byte) keyboard_event_scan::row_scan#9 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::row_scan#2 )
+ (byte) keyboard_event_scan::col#7 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::col#4 )
+ (byte) keyboard_events_size#15 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#30 )
+ (byte) keyboard_event_scan::keycode#5 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::keycode#10 )
+ *((byte[8]) keyboard_events#0 + (byte) keyboard_events_size#15) ← (byte) keyboard_event_scan::keycode#5
+ (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#15
+ to:keyboard_event_scan::@4
+keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15
+ (byte) keyboard_event_scan::row#10 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::row#14 )
+ (byte) keyboard_event_scan::row_scan#7 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::row_scan#2 )
+ (byte) keyboard_event_scan::col#5 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::col#4 )
+ (byte) keyboard_events_size#16 ← phi( keyboard_event_scan::@15/(byte) keyboard_events_size#30 )
+ (byte) keyboard_event_scan::keycode#6 ← phi( keyboard_event_scan::@15/(byte) keyboard_event_scan::keycode#10 )
+ (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode#6 | (byte/signed byte/word/signed word/dword/signed dword) 64
+ *((byte[8]) keyboard_events#0 + (byte) keyboard_events_size#16) ← (byte/word/dword~) keyboard_event_scan::$12
+ (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#16
+ to:keyboard_event_scan::@4
+keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan::@4
+ (byte) keyboard_events_size#86 ← phi( keyboard_event_scan::@4/(byte) keyboard_events_size#44 )
+ (byte) keyboard_event_scan::keycode#15 ← phi( keyboard_event_scan::@4/(byte) keyboard_event_scan::keycode#2 )
+ (byte) keyboard_event_scan::row#5 ← phi( keyboard_event_scan::@4/(byte) keyboard_event_scan::row#8 )
+ (byte) keyboard_event_scan::row_scan#3 ← phi( keyboard_event_scan::@4/(byte) keyboard_event_scan::row_scan#5 )
+ *((byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#5) ← (byte) keyboard_event_scan::row_scan#3
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@18 keyboard_event_scan::@2
+ (byte) keyboard_events_size#82 ← phi( keyboard_event_scan::@18/(byte) keyboard_events_size#86 keyboard_event_scan::@2/(byte) keyboard_events_size#87 )
+ (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@18/(byte) keyboard_event_scan::keycode#15 keyboard_event_scan::@2/(byte) keyboard_event_scan::keycode#1 )
+ (byte) keyboard_event_scan::row#6 ← phi( keyboard_event_scan::@18/(byte) keyboard_event_scan::row#5 keyboard_event_scan::@2/(byte) keyboard_event_scan::row#9 )
+ (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#6
+ (boolean~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row#1 != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$15) goto keyboard_event_scan::@1
+ to:keyboard_event_scan::@20
+keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@8
+ (byte) keyboard_events_size#96 ← phi( keyboard_event_scan::@8/(byte) keyboard_events_size#82 )
+ (byte) keyboard_modifiers#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_event_pressed::keycode#0 ← (byte) KEY_LSHIFT#0
+ call keyboard_event_pressed param-assignment
+ (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#5
+ to:keyboard_event_scan::@26
+keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20
+ (byte) keyboard_events_size#94 ← phi( keyboard_event_scan::@20/(byte) keyboard_events_size#96 )
+ (byte) keyboard_modifiers#28 ← phi( keyboard_event_scan::@20/(byte) keyboard_modifiers#1 )
+ (byte) keyboard_event_pressed::return#6 ← phi( keyboard_event_scan::@20/(byte) keyboard_event_pressed::return#0 )
+ (byte~) keyboard_event_scan::$16 ← (byte) keyboard_event_pressed::return#6
+ (boolean~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$18 ← ! (boolean~) keyboard_event_scan::$17
+ if((boolean~) keyboard_event_scan::$18) goto keyboard_event_scan::@9
+ to:keyboard_event_scan::@21
+keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26
+ (byte) keyboard_events_size#91 ← phi( keyboard_event_scan::@21/(byte) keyboard_events_size#93 keyboard_event_scan::@26/(byte) keyboard_events_size#94 )
+ (byte) keyboard_modifiers#44 ← phi( keyboard_event_scan::@21/(byte) keyboard_modifiers#2 keyboard_event_scan::@26/(byte) keyboard_modifiers#28 )
+ (byte) keyboard_event_pressed::keycode#1 ← (byte) KEY_RSHIFT#0
+ call keyboard_event_pressed param-assignment
+ (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#5
+ to:keyboard_event_scan::@27
+keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9
+ (byte) keyboard_events_size#89 ← phi( keyboard_event_scan::@9/(byte) keyboard_events_size#91 )
+ (byte) keyboard_modifiers#29 ← phi( keyboard_event_scan::@9/(byte) keyboard_modifiers#44 )
+ (byte) keyboard_event_pressed::return#7 ← phi( keyboard_event_scan::@9/(byte) keyboard_event_pressed::return#1 )
+ (byte~) keyboard_event_scan::$20 ← (byte) keyboard_event_pressed::return#7
+ (boolean~) keyboard_event_scan::$21 ← (byte~) keyboard_event_scan::$20 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$22 ← ! (boolean~) keyboard_event_scan::$21
+ if((boolean~) keyboard_event_scan::$22) goto keyboard_event_scan::@10
+ to:keyboard_event_scan::@22
+keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26
+ (byte) keyboard_events_size#93 ← phi( keyboard_event_scan::@26/(byte) keyboard_events_size#94 )
+ (byte) keyboard_modifiers#14 ← phi( keyboard_event_scan::@26/(byte) keyboard_modifiers#28 )
+ (byte~) keyboard_event_scan::$19 ← (byte) keyboard_modifiers#14 | (byte) KEY_MODIFIER_LSHIFT#0
+ (byte) keyboard_modifiers#2 ← (byte~) keyboard_event_scan::$19
+ to:keyboard_event_scan::@9
+keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27
+ (byte) keyboard_events_size#83 ← phi( keyboard_event_scan::@22/(byte) keyboard_events_size#88 keyboard_event_scan::@27/(byte) keyboard_events_size#89 )
+ (byte) keyboard_modifiers#45 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#29 )
+ (byte) keyboard_event_pressed::keycode#2 ← (byte) KEY_CTRL#0
+ call keyboard_event_pressed param-assignment
+ (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#5
+ to:keyboard_event_scan::@28
+keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10
+ (byte) keyboard_events_size#75 ← phi( keyboard_event_scan::@10/(byte) keyboard_events_size#83 )
+ (byte) keyboard_modifiers#30 ← phi( keyboard_event_scan::@10/(byte) keyboard_modifiers#45 )
+ (byte) keyboard_event_pressed::return#8 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_pressed::return#2 )
+ (byte~) keyboard_event_scan::$24 ← (byte) keyboard_event_pressed::return#8
+ (boolean~) keyboard_event_scan::$25 ← (byte~) keyboard_event_scan::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$26 ← ! (boolean~) keyboard_event_scan::$25
+ if((boolean~) keyboard_event_scan::$26) goto keyboard_event_scan::@11
+ to:keyboard_event_scan::@23
+keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27
+ (byte) keyboard_events_size#88 ← phi( keyboard_event_scan::@27/(byte) keyboard_events_size#89 )
+ (byte) keyboard_modifiers#15 ← phi( keyboard_event_scan::@27/(byte) keyboard_modifiers#29 )
+ (byte~) keyboard_event_scan::$23 ← (byte) keyboard_modifiers#15 | (byte) KEY_MODIFIER_RSHIFT#0
+ (byte) keyboard_modifiers#3 ← (byte~) keyboard_event_scan::$23
+ to:keyboard_event_scan::@10
+keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28
+ (byte) keyboard_events_size#63 ← phi( keyboard_event_scan::@23/(byte) keyboard_events_size#74 keyboard_event_scan::@28/(byte) keyboard_events_size#75 )
+ (byte) keyboard_modifiers#46 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#30 )
+ (byte) keyboard_event_pressed::keycode#3 ← (byte) KEY_COMMODORE#0
+ call keyboard_event_pressed param-assignment
+ (byte) keyboard_event_pressed::return#3 ← (byte) keyboard_event_pressed::return#5
+ to:keyboard_event_scan::@29
+keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan::@11
+ (byte) keyboard_events_size#45 ← phi( keyboard_event_scan::@11/(byte) keyboard_events_size#63 )
+ (byte) keyboard_modifiers#31 ← phi( keyboard_event_scan::@11/(byte) keyboard_modifiers#46 )
+ (byte) keyboard_event_pressed::return#9 ← phi( keyboard_event_scan::@11/(byte) keyboard_event_pressed::return#3 )
+ (byte~) keyboard_event_scan::$28 ← (byte) keyboard_event_pressed::return#9
+ (boolean~) keyboard_event_scan::$29 ← (byte~) keyboard_event_scan::$28 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$30 ← ! (boolean~) keyboard_event_scan::$29
+ if((boolean~) keyboard_event_scan::$30) goto keyboard_event_scan::@12
+ to:keyboard_event_scan::@24
+keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28
+ (byte) keyboard_events_size#74 ← phi( keyboard_event_scan::@28/(byte) keyboard_events_size#75 )
+ (byte) keyboard_modifiers#16 ← phi( keyboard_event_scan::@28/(byte) keyboard_modifiers#30 )
+ (byte~) keyboard_event_scan::$27 ← (byte) keyboard_modifiers#16 | (byte) KEY_MODIFIER_CTRL#0
+ (byte) keyboard_modifiers#4 ← (byte~) keyboard_event_scan::$27
+ to:keyboard_event_scan::@11
+keyboard_event_scan::@12: scope:[keyboard_event_scan] from keyboard_event_scan::@29
+ (byte) keyboard_modifiers#32 ← phi( keyboard_event_scan::@29/(byte) keyboard_modifiers#31 )
+ (byte) keyboard_events_size#31 ← phi( keyboard_event_scan::@29/(byte) keyboard_events_size#45 )
+ to:keyboard_event_scan::@return
+keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29
+ (byte) keyboard_events_size#32 ← phi( keyboard_event_scan::@29/(byte) keyboard_events_size#45 )
+ (byte) keyboard_modifiers#17 ← phi( keyboard_event_scan::@29/(byte) keyboard_modifiers#31 )
+ (byte~) keyboard_event_scan::$31 ← (byte) keyboard_modifiers#17 | (byte) KEY_MODIFIER_COMMODORE#0
+ (byte) keyboard_modifiers#5 ← (byte~) keyboard_event_scan::$31
+ to:keyboard_event_scan::@return
+keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@12 keyboard_event_scan::@24
+ (byte) keyboard_modifiers#18 ← phi( keyboard_event_scan::@12/(byte) keyboard_modifiers#32 keyboard_event_scan::@24/(byte) keyboard_modifiers#5 )
+ (byte) keyboard_events_size#17 ← phi( keyboard_event_scan::@12/(byte) keyboard_events_size#31 keyboard_event_scan::@24/(byte) keyboard_events_size#32 )
+ (byte) keyboard_events_size#3 ← (byte) keyboard_events_size#17
+ (byte) keyboard_modifiers#6 ← (byte) keyboard_modifiers#18
return
to:@return
-main: scope:[main] from @25
- (byte) form_fields_cnt#37 ← phi( @25/(byte) form_fields_cnt#39 )
- (byte) key_right_debounce#25 ← phi( @25/(byte) key_right_debounce#24 )
- (byte) form_field_idx#37 ← phi( @25/(byte) form_field_idx#36 )
- (byte) key_down_debounce#25 ← phi( @25/(byte) key_down_debounce#24 )
- (signed byte) form_cursor_count#27 ← phi( @25/(signed byte) form_cursor_count#26 )
- (byte*) print_char_cursor#49 ← phi( @25/(byte*) print_char_cursor#45 )
- (byte*) print_line_cursor#46 ← phi( @25/(byte*) print_line_cursor#43 )
- (byte*) print_screen#25 ← phi( @25/(byte*) print_screen#24 )
+keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@10 keyboard_event_scan::@11 keyboard_event_scan::@20 keyboard_event_scan::@9
+ (byte) keyboard_event_pressed::keycode#4 ← phi( keyboard_event_scan::@10/(byte) keyboard_event_pressed::keycode#2 keyboard_event_scan::@11/(byte) keyboard_event_pressed::keycode#3 keyboard_event_scan::@20/(byte) keyboard_event_pressed::keycode#0 keyboard_event_scan::@9/(byte) keyboard_event_pressed::keycode#1 )
+ (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3
+ (byte) keyboard_event_pressed::row_bits#0 ← *((byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0)
+ (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7
+ (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits#0 & *((byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1)
+ (byte) keyboard_event_pressed::return#4 ← (byte~) keyboard_event_pressed::$2
+ to:keyboard_event_pressed::@return
+keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed
+ (byte) keyboard_event_pressed::return#10 ← phi( keyboard_event_pressed/(byte) keyboard_event_pressed::return#4 )
+ (byte) keyboard_event_pressed::return#5 ← (byte) keyboard_event_pressed::return#10
+ return
+ to:@return
+keyboard_event_get: scope:[keyboard_event_get] from form_control::@29
+ (byte) keyboard_events_size#18 ← phi( form_control::@29/(byte) keyboard_events_size#10 )
+ (boolean~) keyboard_event_get::$0 ← (byte) keyboard_events_size#18 == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_get::$1 ← ! (boolean~) keyboard_event_get::$0
+ if((boolean~) keyboard_event_get::$1) goto keyboard_event_get::@1
+ to:keyboard_event_get::@3
+keyboard_event_get::@1: scope:[keyboard_event_get] from keyboard_event_get
+ (byte) keyboard_events_size#19 ← phi( keyboard_event_get/(byte) keyboard_events_size#18 )
+ (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#19
+ (byte) keyboard_event_get::return#0 ← *((byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4)
+ to:keyboard_event_get::@return
+keyboard_event_get::@3: scope:[keyboard_event_get] from keyboard_event_get
+ (byte) keyboard_events_size#33 ← phi( keyboard_event_get/(byte) keyboard_events_size#18 )
+ (byte) keyboard_event_get::return#1 ← (byte/word/signed word/dword/signed dword) 255
+ to:keyboard_event_get::@return
+keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get::@1 keyboard_event_get::@3
+ (byte) keyboard_events_size#20 ← phi( keyboard_event_get::@1/(byte) keyboard_events_size#4 keyboard_event_get::@3/(byte) keyboard_events_size#33 )
+ (byte) keyboard_event_get::return#4 ← phi( keyboard_event_get::@1/(byte) keyboard_event_get::return#0 keyboard_event_get::@3/(byte) keyboard_event_get::return#1 )
+ (byte) keyboard_event_get::return#2 ← (byte) keyboard_event_get::return#4
+ (byte) keyboard_events_size#5 ← (byte) keyboard_events_size#20
+ return
+ to:@return
+main: scope:[main] from @28
+ (byte) form_fields_cnt#36 ← phi( @28/(byte) form_fields_cnt#38 )
+ (byte) form_field_idx#36 ← phi( @28/(byte) form_field_idx#35 )
+ (byte) keyboard_modifiers#47 ← phi( @28/(byte) keyboard_modifiers#43 )
+ (byte) keyboard_events_size#46 ← phi( @28/(byte) keyboard_events_size#42 )
+ (signed byte) form_cursor_count#26 ← phi( @28/(signed byte) form_cursor_count#25 )
+ (byte*) print_char_cursor#49 ← phi( @28/(byte*) print_char_cursor#45 )
+ (byte*) print_line_cursor#46 ← phi( @28/(byte*) print_line_cursor#43 )
+ (byte*) print_screen#25 ← phi( @28/(byte*) print_screen#24 )
asm { sei }
*((byte*) DTV_FEATURE#0) ← (byte) DTV_FEATURE_ENABLE#0
to:main::@1
main::@1: scope:[main] from main main::@7
- (byte) form_fields_cnt#34 ← phi( main/(byte) form_fields_cnt#37 main::@7/(byte) form_fields_cnt#38 )
- (byte) key_right_debounce#16 ← phi( main/(byte) key_right_debounce#25 main::@7/(byte) key_right_debounce#0 )
- (byte) form_field_idx#26 ← phi( main/(byte) form_field_idx#37 main::@7/(byte) form_field_idx#0 )
- (byte) key_down_debounce#16 ← phi( main/(byte) key_down_debounce#25 main::@7/(byte) key_down_debounce#0 )
- (signed byte) form_cursor_count#19 ← phi( main/(signed byte) form_cursor_count#27 main::@7/(signed byte) form_cursor_count#0 )
+ (byte) form_fields_cnt#35 ← phi( main/(byte) form_fields_cnt#36 main::@7/(byte) form_fields_cnt#37 )
+ (byte) form_field_idx#26 ← phi( main/(byte) form_field_idx#36 main::@7/(byte) form_field_idx#0 )
+ (byte) keyboard_modifiers#34 ← phi( main/(byte) keyboard_modifiers#47 main::@7/(byte) keyboard_modifiers#7 )
+ (byte) keyboard_events_size#35 ← phi( main/(byte) keyboard_events_size#46 main::@7/(byte) keyboard_events_size#6 )
+ (signed byte) form_cursor_count#19 ← phi( main/(signed byte) form_cursor_count#26 main::@7/(signed byte) form_cursor_count#0 )
(byte*) print_char_cursor#42 ← phi( main/(byte*) print_char_cursor#49 main::@7/(byte*) print_char_cursor#10 )
(byte*) print_line_cursor#40 ← phi( main/(byte*) print_line_cursor#46 main::@7/(byte*) print_line_cursor#9 )
(byte*) print_screen#20 ← phi( main/(byte*) print_screen#25 main::@7/(byte*) print_screen#3 )
if(true) goto main::@2
to:main::@return
main::@2: scope:[main] from main::@1
- (byte) form_fields_cnt#32 ← phi( main::@1/(byte) form_fields_cnt#34 )
- (byte) key_right_debounce#15 ← phi( main::@1/(byte) key_right_debounce#16 )
+ (byte) form_fields_cnt#32 ← phi( main::@1/(byte) form_fields_cnt#35 )
(byte) form_field_idx#25 ← phi( main::@1/(byte) form_field_idx#26 )
- (byte) key_down_debounce#15 ← phi( main::@1/(byte) key_down_debounce#16 )
+ (byte) keyboard_modifiers#33 ← phi( main::@1/(byte) keyboard_modifiers#34 )
+ (byte) keyboard_events_size#34 ← phi( main::@1/(byte) keyboard_events_size#35 )
(signed byte) form_cursor_count#18 ← phi( main::@1/(signed byte) form_cursor_count#19 )
(byte*) print_char_cursor#41 ← phi( main::@1/(byte*) print_char_cursor#42 )
(byte*) print_line_cursor#39 ← phi( main::@1/(byte*) print_line_cursor#40 )
@@ -3111,10 +3780,10 @@ main::@2: scope:[main] from main::@1
call menu param-assignment
to:main::@7
main::@7: scope:[main] from main::@2
- (byte) form_fields_cnt#38 ← phi( main::@2/(byte) form_fields_cnt#32 )
- (byte) key_right_debounce#8 ← phi( main::@2/(byte) key_right_debounce#3 )
+ (byte) form_fields_cnt#37 ← phi( main::@2/(byte) form_fields_cnt#32 )
(byte) form_field_idx#11 ← phi( main::@2/(byte) form_field_idx#3 )
- (byte) key_down_debounce#8 ← phi( main::@2/(byte) key_down_debounce#3 )
+ (byte) keyboard_modifiers#19 ← phi( main::@2/(byte) keyboard_modifiers#10 )
+ (byte) keyboard_events_size#21 ← phi( main::@2/(byte) keyboard_events_size#9 )
(signed byte) form_cursor_count#10 ← phi( main::@2/(signed byte) form_cursor_count#3 )
(byte*) print_char_cursor#27 ← phi( main::@2/(byte*) print_char_cursor#18 )
(byte*) print_line_cursor#26 ← phi( main::@2/(byte*) print_line_cursor#17 )
@@ -3123,14 +3792,14 @@ main::@7: scope:[main] from main::@2
(byte*) print_line_cursor#9 ← (byte*) print_line_cursor#26
(byte*) print_char_cursor#10 ← (byte*) print_char_cursor#27
(signed byte) form_cursor_count#0 ← (signed byte) form_cursor_count#10
- (byte) key_down_debounce#0 ← (byte) key_down_debounce#8
+ (byte) keyboard_events_size#6 ← (byte) keyboard_events_size#21
+ (byte) keyboard_modifiers#7 ← (byte) keyboard_modifiers#19
(byte) form_field_idx#0 ← (byte) form_field_idx#11
- (byte) key_right_debounce#0 ← (byte) key_right_debounce#8
to:main::@1
main::@return: scope:[main] from main::@1
- (byte) key_right_debounce#9 ← phi( main::@1/(byte) key_right_debounce#16 )
(byte) form_field_idx#12 ← phi( main::@1/(byte) form_field_idx#26 )
- (byte) key_down_debounce#9 ← phi( main::@1/(byte) key_down_debounce#16 )
+ (byte) keyboard_modifiers#20 ← phi( main::@1/(byte) keyboard_modifiers#34 )
+ (byte) keyboard_events_size#22 ← phi( main::@1/(byte) keyboard_events_size#35 )
(signed byte) form_cursor_count#11 ← phi( main::@1/(signed byte) form_cursor_count#19 )
(byte*) print_char_cursor#28 ← phi( main::@1/(byte*) print_char_cursor#42 )
(byte*) print_line_cursor#27 ← phi( main::@1/(byte*) print_line_cursor#40 )
@@ -3139,17 +3808,18 @@ main::@return: scope:[main] from main::@1
(byte*) print_line_cursor#10 ← (byte*) print_line_cursor#27
(byte*) print_char_cursor#11 ← (byte*) print_char_cursor#28
(signed byte) form_cursor_count#1 ← (signed byte) form_cursor_count#11
- (byte) key_down_debounce#1 ← (byte) key_down_debounce#9
+ (byte) keyboard_events_size#7 ← (byte) keyboard_events_size#22
+ (byte) keyboard_modifiers#8 ← (byte) keyboard_modifiers#20
(byte) form_field_idx#1 ← (byte) form_field_idx#12
- (byte) key_right_debounce#1 ← (byte) key_right_debounce#9
return
to:@return
-@20: scope:[] from @15
- (byte*) print_char_cursor#57 ← phi( @15/(byte*) print_char_cursor#58 )
- (byte*) print_line_cursor#56 ← phi( @15/(byte*) print_line_cursor#58 )
- (byte*) print_screen#34 ← phi( @15/(byte*) print_screen#35 )
- (string~) $0 ← (const string) $20 + (const string) $21
- (string~) $1 ← (string~) $0 + (const string) $22
+@23: scope:[] from @19
+ (byte) keyboard_modifiers#64 ← phi( @19/(byte) keyboard_modifiers#0 )
+ (byte) keyboard_events_size#67 ← phi( @19/(byte) keyboard_events_size#0 )
+ (byte*) print_char_cursor#57 ← phi( @19/(byte*) print_char_cursor#58 )
+ (byte*) print_line_cursor#56 ← phi( @19/(byte*) print_line_cursor#58 )
+ (byte*) print_screen#34 ← phi( @19/(byte*) print_screen#35 )
+ (string~) $1 ← (const string) $21 + (const string) $22
(string~) $2 ← (string~) $1 + (const string) $23
(string~) $3 ← (string~) $2 + (const string) $24
(string~) $4 ← (string~) $3 + (const string) $25
@@ -3157,9 +3827,9 @@ main::@return: scope:[main] from main::@1
(string~) $6 ← (string~) $5 + (const string) $27
(string~) $7 ← (string~) $6 + (const string) $28
(string~) $8 ← (string~) $7 + (const string) $29
- (byte[]) MENU_COLS#0 ← (string~) $8
- (string~) $9 ← (const string) $30 + (const string) $31
- (string~) $10 ← (string~) $9 + (const string) $32
+ (string~) $9 ← (string~) $8 + (const string) $30
+ (byte[]) MENU_COLS#0 ← (string~) $9
+ (string~) $10 ← (const string) $31 + (const string) $32
(string~) $11 ← (string~) $10 + (const string) $33
(string~) $12 ← (string~) $11 + (const string) $34
(string~) $13 ← (string~) $12 + (const string) $35
@@ -3167,14 +3837,15 @@ main::@return: scope:[main] from main::@1
(string~) $15 ← (string~) $14 + (const string) $37
(string~) $16 ← (string~) $15 + (const string) $38
(string~) $17 ← (string~) $16 + (const string) $39
- (byte[]) MENU_TEXT#0 ← (string~) $17
- to:@21
+ (string~) $18 ← (string~) $17 + (const string) $40
+ (byte[]) MENU_TEXT#0 ← (string~) $18
+ to:@24
menu: scope:[menu] from main::@2
- (byte) form_fields_cnt#29 ← phi( main::@2/(byte) form_fields_cnt#32 )
- (byte) key_right_debounce#65 ← phi( main::@2/(byte) key_right_debounce#15 )
- (byte) form_field_idx#67 ← phi( main::@2/(byte) form_field_idx#25 )
- (byte) key_down_debounce#65 ← phi( main::@2/(byte) key_down_debounce#15 )
- (signed byte) form_cursor_count#58 ← phi( main::@2/(signed byte) form_cursor_count#18 )
+ (byte) form_fields_cnt#30 ← phi( main::@2/(byte) form_fields_cnt#32 )
+ (byte) form_field_idx#61 ← phi( main::@2/(byte) form_field_idx#25 )
+ (byte) keyboard_modifiers#81 ← phi( main::@2/(byte) keyboard_modifiers#33 )
+ (byte) keyboard_events_size#100 ← phi( main::@2/(byte) keyboard_events_size#34 )
+ (signed byte) form_cursor_count#53 ← phi( main::@2/(signed byte) form_cursor_count#18 )
(byte*) print_char_cursor#54 ← phi( main::@2/(byte*) print_char_cursor#41 )
(byte*) print_line_cursor#53 ← phi( main::@2/(byte*) print_line_cursor#39 )
(byte*) print_screen#31 ← phi( main::@2/(byte*) print_screen#19 )
@@ -3215,11 +3886,11 @@ menu: scope:[menu] from main::@2
(byte) menu::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:menu::@1
menu::@1: scope:[menu] from menu menu::@1
- (byte) form_fields_cnt#27 ← phi( menu/(byte) form_fields_cnt#29 menu::@1/(byte) form_fields_cnt#27 )
- (byte) key_right_debounce#64 ← phi( menu/(byte) key_right_debounce#65 menu::@1/(byte) key_right_debounce#64 )
- (byte) form_field_idx#66 ← phi( menu/(byte) form_field_idx#67 menu::@1/(byte) form_field_idx#66 )
- (byte) key_down_debounce#64 ← phi( menu/(byte) key_down_debounce#65 menu::@1/(byte) key_down_debounce#64 )
- (signed byte) form_cursor_count#57 ← phi( menu/(signed byte) form_cursor_count#58 menu::@1/(signed byte) form_cursor_count#57 )
+ (byte) form_fields_cnt#27 ← phi( menu/(byte) form_fields_cnt#30 menu::@1/(byte) form_fields_cnt#27 )
+ (byte) form_field_idx#60 ← phi( menu/(byte) form_field_idx#61 menu::@1/(byte) form_field_idx#60 )
+ (byte) keyboard_modifiers#80 ← phi( menu/(byte) keyboard_modifiers#81 menu::@1/(byte) keyboard_modifiers#80 )
+ (byte) keyboard_events_size#99 ← phi( menu/(byte) keyboard_events_size#100 menu::@1/(byte) keyboard_events_size#99 )
+ (signed byte) form_cursor_count#52 ← phi( menu/(signed byte) form_cursor_count#53 menu::@1/(signed byte) form_cursor_count#52 )
(byte*) print_char_cursor#50 ← phi( menu/(byte*) print_char_cursor#54 menu::@1/(byte*) print_char_cursor#50 )
(byte*) print_line_cursor#47 ← phi( menu/(byte*) print_line_cursor#53 menu::@1/(byte*) print_line_cursor#47 )
(byte*) print_screen#26 ← phi( menu/(byte*) print_screen#31 menu::@1/(byte*) print_screen#26 )
@@ -3231,10 +3902,10 @@ menu::@1: scope:[menu] from menu menu::@1
to:menu::@8
menu::@8: scope:[menu] from menu::@1
(byte) form_fields_cnt#25 ← phi( menu::@1/(byte) form_fields_cnt#27 )
- (byte) key_right_debounce#63 ← phi( menu::@1/(byte) key_right_debounce#64 )
- (byte) form_field_idx#65 ← phi( menu::@1/(byte) form_field_idx#66 )
- (byte) key_down_debounce#63 ← phi( menu::@1/(byte) key_down_debounce#64 )
- (signed byte) form_cursor_count#56 ← phi( menu::@1/(signed byte) form_cursor_count#57 )
+ (byte) form_field_idx#59 ← phi( menu::@1/(byte) form_field_idx#60 )
+ (byte) keyboard_modifiers#79 ← phi( menu::@1/(byte) keyboard_modifiers#80 )
+ (byte) keyboard_events_size#98 ← phi( menu::@1/(byte) keyboard_events_size#99 )
+ (signed byte) form_cursor_count#51 ← phi( menu::@1/(signed byte) form_cursor_count#52 )
(byte*) print_char_cursor#43 ← phi( menu::@1/(byte*) print_char_cursor#50 )
(byte*) print_line_cursor#41 ← phi( menu::@1/(byte*) print_line_cursor#47 )
(byte*) print_screen#21 ← phi( menu::@1/(byte*) print_screen#26 )
@@ -3245,10 +3916,10 @@ menu::@8: scope:[menu] from menu::@1
to:menu::@15
menu::@15: scope:[menu] from menu::@8
(byte) form_fields_cnt#23 ← phi( menu::@8/(byte) form_fields_cnt#25 )
- (byte) key_right_debounce#62 ← phi( menu::@8/(byte) key_right_debounce#63 )
- (byte) form_field_idx#64 ← phi( menu::@8/(byte) form_field_idx#65 )
- (byte) key_down_debounce#62 ← phi( menu::@8/(byte) key_down_debounce#63 )
- (signed byte) form_cursor_count#55 ← phi( menu::@8/(signed byte) form_cursor_count#56 )
+ (byte) form_field_idx#58 ← phi( menu::@8/(byte) form_field_idx#59 )
+ (byte) keyboard_modifiers#78 ← phi( menu::@8/(byte) keyboard_modifiers#79 )
+ (byte) keyboard_events_size#97 ← phi( menu::@8/(byte) keyboard_events_size#98 )
+ (signed byte) form_cursor_count#50 ← phi( menu::@8/(signed byte) form_cursor_count#51 )
(byte*) print_char_cursor#29 ← phi( menu::@8/(byte*) print_char_cursor#9 )
(byte*) print_line_cursor#28 ← phi( menu::@8/(byte*) print_line_cursor#8 )
(byte*) print_screen#15 ← phi( menu::@8/(byte*) print_screen#2 )
@@ -3258,11 +3929,11 @@ menu::@15: scope:[menu] from menu::@8
call print_cls param-assignment
to:menu::@16
menu::@16: scope:[menu] from menu::@15
- (byte) form_fields_cnt#20 ← phi( menu::@15/(byte) form_fields_cnt#23 )
- (byte) key_right_debounce#61 ← phi( menu::@15/(byte) key_right_debounce#62 )
- (byte) form_field_idx#61 ← phi( menu::@15/(byte) form_field_idx#64 )
- (byte) key_down_debounce#61 ← phi( menu::@15/(byte) key_down_debounce#62 )
- (signed byte) form_cursor_count#54 ← phi( menu::@15/(signed byte) form_cursor_count#55 )
+ (byte) form_fields_cnt#21 ← phi( menu::@15/(byte) form_fields_cnt#23 )
+ (byte) form_field_idx#57 ← phi( menu::@15/(byte) form_field_idx#58 )
+ (byte) keyboard_modifiers#77 ← phi( menu::@15/(byte) keyboard_modifiers#78 )
+ (byte) keyboard_events_size#95 ← phi( menu::@15/(byte) keyboard_events_size#97 )
+ (signed byte) form_cursor_count#49 ← phi( menu::@15/(signed byte) form_cursor_count#50 )
(byte*) print_screen#27 ← phi( menu::@15/(byte*) print_screen#5 )
(byte*) print_char_cursor#30 ← phi( menu::@15/(byte*) print_char_cursor#7 )
(byte*) print_line_cursor#29 ← phi( menu::@15/(byte*) print_line_cursor#6 )
@@ -3272,11 +3943,11 @@ menu::@16: scope:[menu] from menu::@15
call print_str_lines param-assignment
to:menu::@17
menu::@17: scope:[menu] from menu::@16
- (byte) form_fields_cnt#18 ← phi( menu::@16/(byte) form_fields_cnt#20 )
- (byte) key_right_debounce#59 ← phi( menu::@16/(byte) key_right_debounce#61 )
- (byte) form_field_idx#59 ← phi( menu::@16/(byte) form_field_idx#61 )
- (byte) key_down_debounce#60 ← phi( menu::@16/(byte) key_down_debounce#61 )
- (signed byte) form_cursor_count#53 ← phi( menu::@16/(signed byte) form_cursor_count#54 )
+ (byte) form_fields_cnt#18 ← phi( menu::@16/(byte) form_fields_cnt#21 )
+ (byte) form_field_idx#54 ← phi( menu::@16/(byte) form_field_idx#57 )
+ (byte) keyboard_modifiers#76 ← phi( menu::@16/(byte) keyboard_modifiers#77 )
+ (byte) keyboard_events_size#92 ← phi( menu::@16/(byte) keyboard_events_size#95 )
+ (signed byte) form_cursor_count#48 ← phi( menu::@16/(signed byte) form_cursor_count#49 )
(byte*) print_screen#22 ← phi( menu::@16/(byte*) print_screen#27 )
(byte*) print_line_cursor#30 ← phi( menu::@16/(byte*) print_line_cursor#2 )
(byte*) print_char_cursor#31 ← phi( menu::@16/(byte*) print_char_cursor#3 )
@@ -3286,11 +3957,11 @@ menu::@17: scope:[menu] from menu::@16
call print_set_screen param-assignment
to:menu::@18
menu::@18: scope:[menu] from menu::@17
- (byte) form_fields_cnt#15 ← phi( menu::@17/(byte) form_fields_cnt#18 )
- (byte) key_right_debounce#56 ← phi( menu::@17/(byte) key_right_debounce#59 )
- (byte) form_field_idx#56 ← phi( menu::@17/(byte) form_field_idx#59 )
- (byte) key_down_debounce#59 ← phi( menu::@17/(byte) key_down_debounce#60 )
- (signed byte) form_cursor_count#50 ← phi( menu::@17/(signed byte) form_cursor_count#53 )
+ (byte) form_fields_cnt#16 ← phi( menu::@17/(byte) form_fields_cnt#18 )
+ (byte) form_field_idx#52 ← phi( menu::@17/(byte) form_field_idx#54 )
+ (byte) keyboard_modifiers#75 ← phi( menu::@17/(byte) keyboard_modifiers#76 )
+ (byte) keyboard_events_size#90 ← phi( menu::@17/(byte) keyboard_events_size#92 )
+ (signed byte) form_cursor_count#45 ← phi( menu::@17/(signed byte) form_cursor_count#48 )
(byte*) print_char_cursor#32 ← phi( menu::@17/(byte*) print_char_cursor#9 )
(byte*) print_line_cursor#31 ← phi( menu::@17/(byte*) print_line_cursor#8 )
(byte*) print_screen#16 ← phi( menu::@17/(byte*) print_screen#2 )
@@ -3300,11 +3971,11 @@ menu::@18: scope:[menu] from menu::@17
call print_cls param-assignment
to:menu::@19
menu::@19: scope:[menu] from menu::@18
- (byte) form_fields_cnt#13 ← phi( menu::@18/(byte) form_fields_cnt#15 )
- (byte) key_right_debounce#52 ← phi( menu::@18/(byte) key_right_debounce#56 )
- (byte) form_field_idx#54 ← phi( menu::@18/(byte) form_field_idx#56 )
- (byte) key_down_debounce#55 ← phi( menu::@18/(byte) key_down_debounce#59 )
- (signed byte) form_cursor_count#46 ← phi( menu::@18/(signed byte) form_cursor_count#50 )
+ (byte) form_fields_cnt#13 ← phi( menu::@18/(byte) form_fields_cnt#16 )
+ (byte) form_field_idx#49 ← phi( menu::@18/(byte) form_field_idx#52 )
+ (byte) keyboard_modifiers#73 ← phi( menu::@18/(byte) keyboard_modifiers#75 )
+ (byte) keyboard_events_size#84 ← phi( menu::@18/(byte) keyboard_events_size#90 )
+ (signed byte) form_cursor_count#43 ← phi( menu::@18/(signed byte) form_cursor_count#45 )
(byte*) print_screen#39 ← phi( menu::@18/(byte*) print_screen#6 )
(byte*) print_char_cursor#33 ← phi( menu::@18/(byte*) print_char_cursor#7 )
(byte*) print_line_cursor#32 ← phi( menu::@18/(byte*) print_line_cursor#6 )
@@ -3315,10 +3986,10 @@ menu::@19: scope:[menu] from menu::@18
to:menu::@20
menu::@20: scope:[menu] from menu::@19
(byte) form_fields_cnt#11 ← phi( menu::@19/(byte) form_fields_cnt#13 )
- (byte) key_right_debounce#47 ← phi( menu::@19/(byte) key_right_debounce#52 )
- (byte) form_field_idx#51 ← phi( menu::@19/(byte) form_field_idx#54 )
- (byte) key_down_debounce#49 ← phi( menu::@19/(byte) key_down_debounce#55 )
- (signed byte) form_cursor_count#42 ← phi( menu::@19/(signed byte) form_cursor_count#46 )
+ (byte) form_field_idx#47 ← phi( menu::@19/(byte) form_field_idx#49 )
+ (byte) keyboard_modifiers#70 ← phi( menu::@19/(byte) keyboard_modifiers#73 )
+ (byte) keyboard_events_size#76 ← phi( menu::@19/(byte) keyboard_events_size#84 )
+ (signed byte) form_cursor_count#40 ← phi( menu::@19/(signed byte) form_cursor_count#43 )
(byte*) print_screen#36 ← phi( menu::@19/(byte*) print_screen#39 )
(byte*) print_line_cursor#33 ← phi( menu::@19/(byte*) print_line_cursor#2 )
(byte*) print_char_cursor#34 ← phi( menu::@19/(byte*) print_char_cursor#3 )
@@ -3329,97 +4000,97 @@ menu::@20: scope:[menu] from menu::@19
to:menu::@21
menu::@21: scope:[menu] from menu::@20
(byte) form_fields_cnt#9 ← phi( menu::@20/(byte) form_fields_cnt#11 )
- (byte) key_right_debounce#38 ← phi( menu::@20/(byte) key_right_debounce#47 )
- (byte) form_field_idx#46 ← phi( menu::@20/(byte) form_field_idx#51 )
- (byte) key_down_debounce#40 ← phi( menu::@20/(byte) key_down_debounce#49 )
- (signed byte) form_cursor_count#36 ← phi( menu::@20/(signed byte) form_cursor_count#42 )
+ (byte) form_field_idx#43 ← phi( menu::@20/(byte) form_field_idx#47 )
+ (byte) keyboard_modifiers#61 ← phi( menu::@20/(byte) keyboard_modifiers#70 )
+ (byte) keyboard_events_size#64 ← phi( menu::@20/(byte) keyboard_events_size#76 )
+ (signed byte) form_cursor_count#34 ← phi( menu::@20/(signed byte) form_cursor_count#40 )
(byte*) print_char_cursor#55 ← phi( menu::@20/(byte*) print_char_cursor#17 )
(byte*) print_line_cursor#54 ← phi( menu::@20/(byte*) print_line_cursor#16 )
(byte*) print_screen#32 ← phi( menu::@20/(byte*) print_screen#36 )
call form_render_values param-assignment
to:menu::@22
menu::@22: scope:[menu] from menu::@21
- (byte) form_fields_cnt#35 ← phi( menu::@21/(byte) form_fields_cnt#9 )
- (byte) key_right_debounce#26 ← phi( menu::@21/(byte) key_right_debounce#38 )
- (byte) form_field_idx#38 ← phi( menu::@21/(byte) form_field_idx#46 )
- (byte) key_down_debounce#26 ← phi( menu::@21/(byte) key_down_debounce#40 )
- (signed byte) form_cursor_count#28 ← phi( menu::@21/(signed byte) form_cursor_count#36 )
+ (byte) form_fields_cnt#33 ← phi( menu::@21/(byte) form_fields_cnt#9 )
+ (byte) form_field_idx#37 ← phi( menu::@21/(byte) form_field_idx#43 )
+ (byte) keyboard_modifiers#48 ← phi( menu::@21/(byte) keyboard_modifiers#61 )
+ (byte) keyboard_events_size#47 ← phi( menu::@21/(byte) keyboard_events_size#64 )
+ (signed byte) form_cursor_count#27 ← phi( menu::@21/(signed byte) form_cursor_count#34 )
(byte*) print_char_cursor#51 ← phi( menu::@21/(byte*) print_char_cursor#55 )
(byte*) print_line_cursor#48 ← phi( menu::@21/(byte*) print_line_cursor#54 )
(byte*) print_screen#28 ← phi( menu::@21/(byte*) print_screen#32 )
to:menu::@2
menu::@2: scope:[menu] from menu::@22 menu::@23
- (byte) form_fields_cnt#33 ← phi( menu::@22/(byte) form_fields_cnt#35 menu::@23/(byte) form_fields_cnt#36 )
- (byte) key_right_debounce#18 ← phi( menu::@22/(byte) key_right_debounce#26 menu::@23/(byte) key_right_debounce#2 )
- (byte) form_field_idx#28 ← phi( menu::@22/(byte) form_field_idx#38 menu::@23/(byte) form_field_idx#2 )
- (byte) key_down_debounce#18 ← phi( menu::@22/(byte) key_down_debounce#26 menu::@23/(byte) key_down_debounce#2 )
- (signed byte) form_cursor_count#21 ← phi( menu::@22/(signed byte) form_cursor_count#28 menu::@23/(signed byte) form_cursor_count#2 )
+ (byte) form_fields_cnt#31 ← phi( menu::@22/(byte) form_fields_cnt#33 menu::@23/(byte) form_fields_cnt#34 )
+ (byte) form_field_idx#28 ← phi( menu::@22/(byte) form_field_idx#37 menu::@23/(byte) form_field_idx#2 )
+ (byte) keyboard_modifiers#36 ← phi( menu::@22/(byte) keyboard_modifiers#48 menu::@23/(byte) keyboard_modifiers#9 )
+ (byte) keyboard_events_size#37 ← phi( menu::@22/(byte) keyboard_events_size#47 menu::@23/(byte) keyboard_events_size#8 )
+ (signed byte) form_cursor_count#21 ← phi( menu::@22/(signed byte) form_cursor_count#27 menu::@23/(signed byte) form_cursor_count#2 )
(byte*) print_char_cursor#44 ← phi( menu::@22/(byte*) print_char_cursor#51 menu::@23/(byte*) print_char_cursor#52 )
(byte*) print_line_cursor#42 ← phi( menu::@22/(byte*) print_line_cursor#48 menu::@23/(byte*) print_line_cursor#49 )
(byte*) print_screen#23 ← phi( menu::@22/(byte*) print_screen#28 menu::@23/(byte*) print_screen#29 )
if(true) goto menu::@3
to:menu::@return
menu::@3: scope:[menu] from menu::@2
- (byte) form_fields_cnt#30 ← phi( menu::@2/(byte) form_fields_cnt#33 )
+ (byte) form_fields_cnt#28 ← phi( menu::@2/(byte) form_fields_cnt#31 )
(byte*) print_char_cursor#61 ← phi( menu::@2/(byte*) print_char_cursor#44 )
(byte*) print_line_cursor#61 ← phi( menu::@2/(byte*) print_line_cursor#42 )
(byte*) print_screen#40 ← phi( menu::@2/(byte*) print_screen#23 )
- (byte) key_right_debounce#39 ← phi( menu::@2/(byte) key_right_debounce#18 )
- (byte) form_field_idx#47 ← phi( menu::@2/(byte) form_field_idx#28 )
- (byte) key_down_debounce#41 ← phi( menu::@2/(byte) key_down_debounce#18 )
- (signed byte) form_cursor_count#37 ← phi( menu::@2/(signed byte) form_cursor_count#21 )
+ (byte) form_field_idx#44 ← phi( menu::@2/(byte) form_field_idx#28 )
+ (byte) keyboard_modifiers#62 ← phi( menu::@2/(byte) keyboard_modifiers#36 )
+ (byte) keyboard_events_size#65 ← phi( menu::@2/(byte) keyboard_events_size#37 )
+ (signed byte) form_cursor_count#35 ← phi( menu::@2/(signed byte) form_cursor_count#21 )
to:menu::@5
menu::@5: scope:[menu] from menu::@3 menu::@6
- (byte) form_fields_cnt#28 ← phi( menu::@3/(byte) form_fields_cnt#30 menu::@6/(byte) form_fields_cnt#31 )
+ (byte) form_fields_cnt#26 ← phi( menu::@3/(byte) form_fields_cnt#28 menu::@6/(byte) form_fields_cnt#29 )
(byte*) print_char_cursor#59 ← phi( menu::@3/(byte*) print_char_cursor#61 menu::@6/(byte*) print_char_cursor#62 )
(byte*) print_line_cursor#59 ← phi( menu::@3/(byte*) print_line_cursor#61 menu::@6/(byte*) print_line_cursor#62 )
(byte*) print_screen#37 ← phi( menu::@3/(byte*) print_screen#40 menu::@6/(byte*) print_screen#41 )
- (byte) key_right_debounce#27 ← phi( menu::@3/(byte) key_right_debounce#39 menu::@6/(byte) key_right_debounce#40 )
- (byte) form_field_idx#39 ← phi( menu::@3/(byte) form_field_idx#47 menu::@6/(byte) form_field_idx#48 )
- (byte) key_down_debounce#27 ← phi( menu::@3/(byte) key_down_debounce#41 menu::@6/(byte) key_down_debounce#42 )
- (signed byte) form_cursor_count#29 ← phi( menu::@3/(signed byte) form_cursor_count#37 menu::@6/(signed byte) form_cursor_count#38 )
+ (byte) form_field_idx#38 ← phi( menu::@3/(byte) form_field_idx#44 menu::@6/(byte) form_field_idx#45 )
+ (byte) keyboard_modifiers#49 ← phi( menu::@3/(byte) keyboard_modifiers#62 menu::@6/(byte) keyboard_modifiers#63 )
+ (byte) keyboard_events_size#48 ← phi( menu::@3/(byte) keyboard_events_size#65 menu::@6/(byte) keyboard_events_size#66 )
+ (signed byte) form_cursor_count#28 ← phi( menu::@3/(signed byte) form_cursor_count#35 menu::@6/(signed byte) form_cursor_count#36 )
(boolean~) menu::$32 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255
if((boolean~) menu::$32) goto menu::@6
to:menu::@7
menu::@6: scope:[menu] from menu::@5
- (byte) form_fields_cnt#31 ← phi( menu::@5/(byte) form_fields_cnt#28 )
+ (byte) form_fields_cnt#29 ← phi( menu::@5/(byte) form_fields_cnt#26 )
(byte*) print_char_cursor#62 ← phi( menu::@5/(byte*) print_char_cursor#59 )
(byte*) print_line_cursor#62 ← phi( menu::@5/(byte*) print_line_cursor#59 )
(byte*) print_screen#41 ← phi( menu::@5/(byte*) print_screen#37 )
- (byte) key_right_debounce#40 ← phi( menu::@5/(byte) key_right_debounce#27 )
- (byte) form_field_idx#48 ← phi( menu::@5/(byte) form_field_idx#39 )
- (byte) key_down_debounce#42 ← phi( menu::@5/(byte) key_down_debounce#27 )
- (signed byte) form_cursor_count#38 ← phi( menu::@5/(signed byte) form_cursor_count#29 )
+ (byte) form_field_idx#45 ← phi( menu::@5/(byte) form_field_idx#38 )
+ (byte) keyboard_modifiers#63 ← phi( menu::@5/(byte) keyboard_modifiers#49 )
+ (byte) keyboard_events_size#66 ← phi( menu::@5/(byte) keyboard_events_size#48 )
+ (signed byte) form_cursor_count#36 ← phi( menu::@5/(signed byte) form_cursor_count#28 )
to:menu::@5
menu::@7: scope:[menu] from menu::@5
- (byte) form_fields_cnt#26 ← phi( menu::@5/(byte) form_fields_cnt#28 )
+ (byte) form_fields_cnt#24 ← phi( menu::@5/(byte) form_fields_cnt#26 )
(byte*) print_char_cursor#56 ← phi( menu::@5/(byte*) print_char_cursor#59 )
(byte*) print_line_cursor#55 ← phi( menu::@5/(byte*) print_line_cursor#59 )
(byte*) print_screen#33 ← phi( menu::@5/(byte*) print_screen#37 )
- (byte) key_right_debounce#17 ← phi( menu::@5/(byte) key_right_debounce#27 )
- (byte) form_field_idx#27 ← phi( menu::@5/(byte) form_field_idx#39 )
- (byte) key_down_debounce#17 ← phi( menu::@5/(byte) key_down_debounce#27 )
- (signed byte) form_cursor_count#20 ← phi( menu::@5/(signed byte) form_cursor_count#29 )
+ (byte) form_field_idx#27 ← phi( menu::@5/(byte) form_field_idx#38 )
+ (byte) keyboard_modifiers#35 ← phi( menu::@5/(byte) keyboard_modifiers#49 )
+ (byte) keyboard_events_size#36 ← phi( menu::@5/(byte) keyboard_events_size#48 )
+ (signed byte) form_cursor_count#20 ← phi( menu::@5/(signed byte) form_cursor_count#28 )
call form_control param-assignment
to:menu::@23
menu::@23: scope:[menu] from menu::@7
- (byte) form_fields_cnt#36 ← phi( menu::@7/(byte) form_fields_cnt#26 )
+ (byte) form_fields_cnt#34 ← phi( menu::@7/(byte) form_fields_cnt#24 )
(byte*) print_char_cursor#52 ← phi( menu::@7/(byte*) print_char_cursor#56 )
(byte*) print_line_cursor#49 ← phi( menu::@7/(byte*) print_line_cursor#55 )
(byte*) print_screen#29 ← phi( menu::@7/(byte*) print_screen#33 )
- (byte) key_right_debounce#10 ← phi( menu::@7/(byte) key_right_debounce#5 )
(byte) form_field_idx#13 ← phi( menu::@7/(byte) form_field_idx#9 )
- (byte) key_down_debounce#10 ← phi( menu::@7/(byte) key_down_debounce#6 )
+ (byte) keyboard_modifiers#21 ← phi( menu::@7/(byte) keyboard_modifiers#12 )
+ (byte) keyboard_events_size#23 ← phi( menu::@7/(byte) keyboard_events_size#12 )
(signed byte) form_cursor_count#12 ← phi( menu::@7/(signed byte) form_cursor_count#8 )
(signed byte) form_cursor_count#2 ← (signed byte) form_cursor_count#12
- (byte) key_down_debounce#2 ← (byte) key_down_debounce#10
+ (byte) keyboard_events_size#8 ← (byte) keyboard_events_size#23
+ (byte) keyboard_modifiers#9 ← (byte) keyboard_modifiers#21
(byte) form_field_idx#2 ← (byte) form_field_idx#13
- (byte) key_right_debounce#2 ← (byte) key_right_debounce#10
to:menu::@2
menu::@return: scope:[menu] from menu::@2
- (byte) key_right_debounce#11 ← phi( menu::@2/(byte) key_right_debounce#18 )
(byte) form_field_idx#14 ← phi( menu::@2/(byte) form_field_idx#28 )
- (byte) key_down_debounce#11 ← phi( menu::@2/(byte) key_down_debounce#18 )
+ (byte) keyboard_modifiers#22 ← phi( menu::@2/(byte) keyboard_modifiers#36 )
+ (byte) keyboard_events_size#24 ← phi( menu::@2/(byte) keyboard_events_size#37 )
(signed byte) form_cursor_count#13 ← phi( menu::@2/(signed byte) form_cursor_count#21 )
(byte*) print_char_cursor#35 ← phi( menu::@2/(byte*) print_char_cursor#44 )
(byte*) print_line_cursor#34 ← phi( menu::@2/(byte*) print_line_cursor#42 )
@@ -3428,15 +4099,17 @@ menu::@return: scope:[menu] from menu::@2
(byte*) print_line_cursor#17 ← (byte*) print_line_cursor#34
(byte*) print_char_cursor#18 ← (byte*) print_char_cursor#35
(signed byte) form_cursor_count#3 ← (signed byte) form_cursor_count#13
- (byte) key_down_debounce#3 ← (byte) key_down_debounce#11
+ (byte) keyboard_events_size#9 ← (byte) keyboard_events_size#24
+ (byte) keyboard_modifiers#10 ← (byte) keyboard_modifiers#22
(byte) form_field_idx#3 ← (byte) form_field_idx#14
- (byte) key_right_debounce#3 ← (byte) key_right_debounce#11
return
to:@return
-@21: scope:[] from @20
- (byte*) print_char_cursor#53 ← phi( @20/(byte*) print_char_cursor#57 )
- (byte*) print_line_cursor#50 ← phi( @20/(byte*) print_line_cursor#56 )
- (byte*) print_screen#30 ← phi( @20/(byte*) print_screen#34 )
+@24: scope:[] from @23
+ (byte) keyboard_modifiers#60 ← phi( @23/(byte) keyboard_modifiers#64 )
+ (byte) keyboard_events_size#60 ← phi( @23/(byte) keyboard_events_size#67 )
+ (byte*) print_char_cursor#53 ← phi( @23/(byte*) print_char_cursor#57 )
+ (byte*) print_line_cursor#50 ← phi( @23/(byte*) print_line_cursor#56 )
+ (byte*) print_screen#30 ← phi( @23/(byte*) print_screen#34 )
(byte[25]) form_line_lo#0 ← { fill( 25, 0) }
(byte[25]) form_line_hi#0 ← { fill( 25, 0) }
(byte) form_field_idx#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -3445,12 +4118,10 @@ menu::@return: scope:[menu] from menu::@2
(byte[]) form_fields_y#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) 6, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 8 }
(byte[]) form_fields_max#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 13, (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/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 15 }
(byte[]) form_fields_val#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/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/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/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) key_down_debounce#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0
- (byte) key_right_debounce#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0
(signed byte) FORM_CURSOR_BLINK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 40
- (signed word/signed byte/signed dword~) $18 ← (signed byte) FORM_CURSOR_BLINK#0 / (byte/signed byte/word/signed word/dword/signed dword) 2
- (signed byte) form_cursor_count#4 ← (signed word/signed byte/signed dword~) $18
- to:@25
+ (signed word/signed byte/signed dword~) $19 ← (signed byte) FORM_CURSOR_BLINK#0 / (byte/signed byte/word/signed word/dword/signed dword) 2
+ (signed byte) form_cursor_count#4 ← (signed word/signed byte/signed dword~) $19
+ to:@28
form_set_screen: scope:[form_set_screen] from menu::@20
(byte*) form_set_screen::screen#1 ← phi( menu::@20/(byte*) form_set_screen::screen#0 )
(byte*) form_set_screen::line#0 ← (byte*) form_set_screen::screen#1
@@ -3513,20 +4184,20 @@ form_render_values::@return: scope:[form_render_values] from form_render_values
return
to:@return
form_control: scope:[form_control] from menu::@7
- (byte) form_fields_cnt#24 ← phi( menu::@7/(byte) form_fields_cnt#26 )
- (byte) key_right_debounce#60 ← phi( menu::@7/(byte) key_right_debounce#17 )
- (byte) key_down_debounce#56 ← phi( menu::@7/(byte) key_down_debounce#17 )
+ (byte) form_fields_cnt#22 ← phi( menu::@7/(byte) form_fields_cnt#24 )
+ (byte) keyboard_modifiers#74 ← phi( menu::@7/(byte) keyboard_modifiers#35 )
+ (byte) keyboard_events_size#85 ← phi( menu::@7/(byte) keyboard_events_size#36 )
(signed byte) form_cursor_count#22 ← phi( menu::@7/(signed byte) form_cursor_count#20 )
(byte) form_field_idx#15 ← phi( menu::@7/(byte) form_field_idx#27 )
(byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#15
call form_field_ptr param-assignment
(byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#1
- to:form_control::@32
-form_control::@32: scope:[form_control] from form_control
- (byte) form_fields_cnt#22 ← phi( form_control/(byte) form_fields_cnt#24 )
- (byte) form_field_idx#63 ← phi( form_control/(byte) form_field_idx#15 )
- (byte) key_right_debounce#58 ← phi( form_control/(byte) key_right_debounce#60 )
- (byte) key_down_debounce#51 ← phi( form_control/(byte) key_down_debounce#56 )
+ to:form_control::@28
+form_control::@28: scope:[form_control] from form_control
+ (byte) form_fields_cnt#20 ← phi( form_control/(byte) form_fields_cnt#22 )
+ (byte) form_field_idx#56 ← phi( form_control/(byte) form_field_idx#15 )
+ (byte) keyboard_modifiers#72 ← phi( form_control/(byte) keyboard_modifiers#74 )
+ (byte) keyboard_events_size#78 ← phi( form_control/(byte) keyboard_events_size#85 )
(signed byte) form_cursor_count#14 ← phi( form_control/(signed byte) form_cursor_count#22 )
(byte*) form_field_ptr::return#6 ← phi( form_control/(byte*) form_field_ptr::return#3 )
(byte*~) form_control::$0 ← (byte*) form_field_ptr::return#6
@@ -3535,333 +4206,275 @@ form_control::@32: scope:[form_control] from form_control
(boolean~) form_control::$1 ← (signed byte) form_cursor_count#5 < (byte/signed byte/word/signed word/dword/signed dword) 0
(boolean~) form_control::$2 ← ! (boolean~) form_control::$1
if((boolean~) form_control::$2) goto form_control::@1
- to:form_control::@16
-form_control::@1: scope:[form_control] from form_control::@16 form_control::@32
- (byte) form_fields_cnt#19 ← phi( form_control::@16/(byte) form_fields_cnt#21 form_control::@32/(byte) form_fields_cnt#22 )
- (byte) form_field_idx#60 ← phi( form_control::@16/(byte) form_field_idx#62 form_control::@32/(byte) form_field_idx#63 )
- (byte) key_right_debounce#53 ← phi( form_control::@16/(byte) key_right_debounce#57 form_control::@32/(byte) key_right_debounce#58 )
- (byte) key_down_debounce#43 ← phi( form_control::@16/(byte) key_down_debounce#50 form_control::@32/(byte) key_down_debounce#51 )
- (byte*) form_control::field#5 ← phi( form_control::@16/(byte*) form_control::field#11 form_control::@32/(byte*) form_control::field#0 )
- (signed byte) form_cursor_count#15 ← phi( form_control::@16/(signed byte) form_cursor_count#6 form_control::@32/(signed byte) form_cursor_count#5 )
+ to:form_control::@14
+form_control::@1: scope:[form_control] from form_control::@14 form_control::@28
+ (byte) form_fields_cnt#17 ← phi( form_control::@14/(byte) form_fields_cnt#19 form_control::@28/(byte) form_fields_cnt#20 )
+ (byte) form_field_idx#53 ← phi( form_control::@14/(byte) form_field_idx#55 form_control::@28/(byte) form_field_idx#56 )
+ (byte) keyboard_modifiers#65 ← phi( form_control::@14/(byte) keyboard_modifiers#71 form_control::@28/(byte) keyboard_modifiers#72 )
+ (byte) keyboard_events_size#68 ← phi( form_control::@14/(byte) keyboard_events_size#77 form_control::@28/(byte) keyboard_events_size#78 )
+ (byte*) form_control::field#5 ← phi( form_control::@14/(byte*) form_control::field#11 form_control::@28/(byte*) form_control::field#0 )
+ (signed byte) form_cursor_count#15 ← phi( form_control::@14/(signed byte) form_cursor_count#6 form_control::@28/(signed byte) form_cursor_count#5 )
(signed word/signed byte/signed dword~) form_control::$3 ← (signed byte) FORM_CURSOR_BLINK#0 / (byte/signed byte/word/signed word/dword/signed dword) 2
(boolean~) form_control::$4 ← (signed byte) form_cursor_count#15 < (signed word/signed byte/signed dword~) form_control::$3
(boolean~) form_control::$5 ← ! (boolean~) form_control::$4
if((boolean~) form_control::$5) goto form_control::@2
- to:form_control::@17
-form_control::@16: scope:[form_control] from form_control::@32
- (byte) form_fields_cnt#21 ← phi( form_control::@32/(byte) form_fields_cnt#22 )
- (byte) form_field_idx#62 ← phi( form_control::@32/(byte) form_field_idx#63 )
- (byte) key_right_debounce#57 ← phi( form_control::@32/(byte) key_right_debounce#58 )
- (byte) key_down_debounce#50 ← phi( form_control::@32/(byte) key_down_debounce#51 )
- (byte*) form_control::field#11 ← phi( form_control::@32/(byte*) form_control::field#0 )
+ to:form_control::@15
+form_control::@14: scope:[form_control] from form_control::@28
+ (byte) form_fields_cnt#19 ← phi( form_control::@28/(byte) form_fields_cnt#20 )
+ (byte) form_field_idx#55 ← phi( form_control::@28/(byte) form_field_idx#56 )
+ (byte) keyboard_modifiers#71 ← phi( form_control::@28/(byte) keyboard_modifiers#72 )
+ (byte) keyboard_events_size#77 ← phi( form_control::@28/(byte) keyboard_events_size#78 )
+ (byte*) form_control::field#11 ← phi( form_control::@28/(byte*) form_control::field#0 )
(signed byte) form_cursor_count#6 ← (signed byte) FORM_CURSOR_BLINK#0
to:form_control::@1
form_control::@2: scope:[form_control] from form_control::@1
- (byte) form_fields_cnt#17 ← phi( form_control::@1/(byte) form_fields_cnt#19 )
- (byte) form_field_idx#58 ← phi( form_control::@1/(byte) form_field_idx#60 )
- (signed byte) form_cursor_count#52 ← phi( form_control::@1/(signed byte) form_cursor_count#15 )
- (byte) key_right_debounce#49 ← phi( form_control::@1/(byte) key_right_debounce#53 )
- (byte) key_down_debounce#29 ← phi( form_control::@1/(byte) key_down_debounce#43 )
+ (signed byte) form_cursor_count#47 ← phi( form_control::@1/(signed byte) form_cursor_count#15 )
+ (byte) form_fields_cnt#15 ← phi( form_control::@1/(byte) form_fields_cnt#17 )
+ (byte) form_field_idx#51 ← phi( form_control::@1/(byte) form_field_idx#53 )
+ (byte) keyboard_modifiers#51 ← phi( form_control::@1/(byte) keyboard_modifiers#65 )
+ (byte) keyboard_events_size#50 ← phi( form_control::@1/(byte) keyboard_events_size#68 )
(byte*) form_control::field#1 ← phi( form_control::@1/(byte*) form_control::field#5 )
(byte~) form_control::$7 ← *((byte*) form_control::field#1) & (byte/signed byte/word/signed word/dword/signed dword) 127
*((byte*) form_control::field#1) ← (byte~) form_control::$7
to:form_control::@3
-form_control::@17: scope:[form_control] from form_control::@1
- (byte) form_fields_cnt#16 ← phi( form_control::@1/(byte) form_fields_cnt#19 )
- (byte) form_field_idx#57 ← phi( form_control::@1/(byte) form_field_idx#60 )
- (signed byte) form_cursor_count#51 ← phi( form_control::@1/(signed byte) form_cursor_count#15 )
- (byte) key_right_debounce#48 ← phi( form_control::@1/(byte) key_right_debounce#53 )
- (byte) key_down_debounce#28 ← phi( form_control::@1/(byte) key_down_debounce#43 )
+form_control::@15: scope:[form_control] from form_control::@1
+ (signed byte) form_cursor_count#46 ← phi( form_control::@1/(signed byte) form_cursor_count#15 )
+ (byte) form_fields_cnt#14 ← phi( form_control::@1/(byte) form_fields_cnt#17 )
+ (byte) form_field_idx#50 ← phi( form_control::@1/(byte) form_field_idx#53 )
+ (byte) keyboard_modifiers#50 ← phi( form_control::@1/(byte) keyboard_modifiers#65 )
+ (byte) keyboard_events_size#49 ← phi( form_control::@1/(byte) keyboard_events_size#68 )
(byte*) form_control::field#2 ← phi( form_control::@1/(byte*) form_control::field#5 )
(byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#2) | (byte/word/signed word/dword/signed dword) 128
*((byte*) form_control::field#2) ← (byte/word/dword~) form_control::$6
to:form_control::@3
-form_control::@3: scope:[form_control] from form_control::@17 form_control::@2
- (byte) form_fields_cnt#14 ← phi( form_control::@17/(byte) form_fields_cnt#16 form_control::@2/(byte) form_fields_cnt#17 )
- (byte) form_field_idx#55 ← phi( form_control::@17/(byte) form_field_idx#57 form_control::@2/(byte) form_field_idx#58 )
- (signed byte) form_cursor_count#47 ← phi( form_control::@17/(signed byte) form_cursor_count#51 form_control::@2/(signed byte) form_cursor_count#52 )
- (byte*) form_control::field#15 ← phi( form_control::@17/(byte*) form_control::field#2 form_control::@2/(byte*) form_control::field#1 )
- (byte) key_right_debounce#41 ← phi( form_control::@17/(byte) key_right_debounce#48 form_control::@2/(byte) key_right_debounce#49 )
- (byte) key_down_debounce#19 ← phi( form_control::@17/(byte) key_down_debounce#28 form_control::@2/(byte) key_down_debounce#29 )
- (byte) keyboard_key_pressed::key#0 ← (byte) KEY_CRSR_DOWN#0
- call keyboard_key_pressed param-assignment
- (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#1
- to:form_control::@33
-form_control::@33: scope:[form_control] from form_control::@3
- (byte) form_fields_cnt#12 ← phi( form_control::@3/(byte) form_fields_cnt#14 )
- (byte) form_field_idx#52 ← phi( form_control::@3/(byte) form_field_idx#55 )
- (signed byte) form_cursor_count#43 ← phi( form_control::@3/(signed byte) form_cursor_count#47 )
+form_control::@3: scope:[form_control] from form_control::@15 form_control::@2
+ (signed byte) form_cursor_count#44 ← phi( form_control::@15/(signed byte) form_cursor_count#46 form_control::@2/(signed byte) form_cursor_count#47 )
+ (byte) form_fields_cnt#12 ← phi( form_control::@15/(byte) form_fields_cnt#14 form_control::@2/(byte) form_fields_cnt#15 )
+ (byte) form_field_idx#48 ← phi( form_control::@15/(byte) form_field_idx#50 form_control::@2/(byte) form_field_idx#51 )
+ (byte*) form_control::field#15 ← phi( form_control::@15/(byte*) form_control::field#2 form_control::@2/(byte*) form_control::field#1 )
+ (byte) keyboard_modifiers#37 ← phi( form_control::@15/(byte) keyboard_modifiers#50 form_control::@2/(byte) keyboard_modifiers#51 )
+ (byte) keyboard_events_size#38 ← phi( form_control::@15/(byte) keyboard_events_size#49 form_control::@2/(byte) keyboard_events_size#50 )
+ call keyboard_event_scan param-assignment
+ to:form_control::@29
+form_control::@29: scope:[form_control] from form_control::@3
+ (signed byte) form_cursor_count#41 ← phi( form_control::@3/(signed byte) form_cursor_count#44 )
+ (byte) form_fields_cnt#10 ← phi( form_control::@3/(byte) form_fields_cnt#12 )
+ (byte) form_field_idx#46 ← phi( form_control::@3/(byte) form_field_idx#48 )
(byte*) form_control::field#12 ← phi( form_control::@3/(byte*) form_control::field#15 )
- (byte) key_right_debounce#28 ← phi( form_control::@3/(byte) key_right_debounce#41 )
- (byte) key_down_debounce#12 ← phi( form_control::@3/(byte) key_down_debounce#19 )
- (byte) keyboard_key_pressed::return#7 ← phi( form_control::@3/(byte) keyboard_key_pressed::return#2 )
- (byte~) form_control::$8 ← (byte) keyboard_key_pressed::return#7
- (byte) form_control::key_down#0 ← (byte~) form_control::$8
- (boolean~) form_control::$9 ← (byte) form_control::key_down#0 != (byte) key_down_debounce#12
- (boolean~) form_control::$10 ← ! (boolean~) form_control::$9
- if((boolean~) form_control::$10) goto form_control::@4
- to:form_control::@19
-form_control::@4: scope:[form_control] from form_control::@33 form_control::@5
- (byte*) form_control::field#20 ← phi( form_control::@33/(byte*) form_control::field#12 form_control::@5/(byte*) form_control::field#21 )
- (byte) form_field_idx#49 ← phi( form_control::@33/(byte) form_field_idx#52 form_control::@5/(byte) form_field_idx#53 )
- (byte) key_down_debounce#44 ← phi( form_control::@33/(byte) key_down_debounce#12 form_control::@5/(byte) key_down_debounce#52 )
- (signed byte) form_cursor_count#39 ← phi( form_control::@33/(signed byte) form_cursor_count#43 form_control::@5/(signed byte) form_cursor_count#44 )
- (byte) key_right_debounce#19 ← phi( form_control::@33/(byte) key_right_debounce#28 form_control::@5/(byte) key_right_debounce#29 )
- (byte) keyboard_key_pressed::key#1 ← (byte) KEY_CRSR_RIGHT#0
- call keyboard_key_pressed param-assignment
- (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#1
- to:form_control::@34
-form_control::@34: scope:[form_control] from form_control::@4
- (byte*) form_control::field#19 ← phi( form_control::@4/(byte*) form_control::field#20 )
- (byte) form_field_idx#43 ← phi( form_control::@4/(byte) form_field_idx#49 )
- (byte) key_down_debounce#34 ← phi( form_control::@4/(byte) key_down_debounce#44 )
- (signed byte) form_cursor_count#30 ← phi( form_control::@4/(signed byte) form_cursor_count#39 )
- (byte) key_right_debounce#12 ← phi( form_control::@4/(byte) key_right_debounce#19 )
- (byte) keyboard_key_pressed::return#8 ← phi( form_control::@4/(byte) keyboard_key_pressed::return#3 )
- (byte~) form_control::$23 ← (byte) keyboard_key_pressed::return#8
- (byte) form_control::key_right#0 ← (byte~) form_control::$23
- (boolean~) form_control::$24 ← (byte) form_control::key_right#0 != (byte) key_right_debounce#12
- (boolean~) form_control::$25 ← ! (boolean~) form_control::$24
- if((boolean~) form_control::$25) goto form_control::@10
- to:form_control::@26
-form_control::@19: scope:[form_control] from form_control::@33
- (signed byte) form_cursor_count#48 ← phi( form_control::@33/(signed byte) form_cursor_count#43 )
- (byte) form_fields_cnt#10 ← phi( form_control::@33/(byte) form_fields_cnt#12 )
- (byte) form_field_idx#50 ← phi( form_control::@33/(byte) form_field_idx#52 )
- (byte) key_right_debounce#42 ← phi( form_control::@33/(byte) key_right_debounce#28 )
- (byte*) form_control::field#6 ← phi( form_control::@33/(byte*) form_control::field#12 )
- (byte) form_control::key_down#1 ← phi( form_control::@33/(byte) form_control::key_down#0 )
- (byte) key_down_debounce#5 ← (byte) form_control::key_down#1
- (boolean~) form_control::$11 ← (byte) form_control::key_down#1 != (byte/signed byte/word/signed word/dword/signed dword) 0
- (boolean~) form_control::$12 ← ! (boolean~) form_control::$11
- if((boolean~) form_control::$12) goto form_control::@5
- to:form_control::@20
-form_control::@5: scope:[form_control] from form_control::@19
- (byte*) form_control::field#21 ← phi( form_control::@19/(byte*) form_control::field#6 )
- (byte) form_field_idx#53 ← phi( form_control::@19/(byte) form_field_idx#50 )
- (byte) key_down_debounce#52 ← phi( form_control::@19/(byte) key_down_debounce#5 )
- (signed byte) form_cursor_count#44 ← phi( form_control::@19/(signed byte) form_cursor_count#48 )
- (byte) key_right_debounce#29 ← phi( form_control::@19/(byte) key_right_debounce#42 )
- to:form_control::@4
-form_control::@20: scope:[form_control] from form_control::@19
- (byte) key_right_debounce#54 ← phi( form_control::@19/(byte) key_right_debounce#42 )
- (byte) key_down_debounce#57 ← phi( form_control::@19/(byte) key_down_debounce#5 )
- (byte) form_fields_cnt#8 ← phi( form_control::@19/(byte) form_fields_cnt#10 )
- (byte) form_field_idx#40 ← phi( form_control::@19/(byte) form_field_idx#50 )
- (byte*) form_control::field#3 ← phi( form_control::@19/(byte*) form_control::field#6 )
- (byte~) form_control::$13 ← *((byte*) form_control::field#3) & (byte/signed byte/word/signed word/dword/signed dword) 127
- *((byte*) form_control::field#3) ← (byte~) form_control::$13
- (byte) keyboard_key_pressed::key#2 ← (byte) KEY_RSHIFT#0
- call keyboard_key_pressed param-assignment
- (byte) keyboard_key_pressed::return#4 ← (byte) keyboard_key_pressed::return#1
- to:form_control::@35
-form_control::@35: scope:[form_control] from form_control::@20
- (byte) key_right_debounce#50 ← phi( form_control::@20/(byte) key_right_debounce#54 )
- (byte) key_down_debounce#53 ← phi( form_control::@20/(byte) key_down_debounce#57 )
- (byte) form_fields_cnt#5 ← phi( form_control::@20/(byte) form_fields_cnt#8 )
- (byte) form_field_idx#29 ← phi( form_control::@20/(byte) form_field_idx#40 )
- (byte) keyboard_key_pressed::return#9 ← phi( form_control::@20/(byte) keyboard_key_pressed::return#4 )
- (byte~) form_control::$14 ← (byte) keyboard_key_pressed::return#9
- (boolean~) form_control::$15 ← (byte~) form_control::$14 == (byte/signed byte/word/signed word/dword/signed dword) 0
- (boolean~) form_control::$16 ← ! (boolean~) form_control::$15
- if((boolean~) form_control::$16) goto form_control::@6
- to:form_control::@21
-form_control::@6: scope:[form_control] from form_control::@35
- (byte) key_right_debounce#44 ← phi( form_control::@35/(byte) key_right_debounce#50 )
- (byte) key_down_debounce#46 ← phi( form_control::@35/(byte) key_down_debounce#53 )
- (byte) form_fields_cnt#6 ← phi( form_control::@35/(byte) form_fields_cnt#5 )
- (byte) form_field_idx#16 ← phi( form_control::@35/(byte) form_field_idx#29 )
+ (byte) keyboard_modifiers#23 ← phi( form_control::@3/(byte) keyboard_modifiers#6 )
+ (byte) keyboard_events_size#25 ← phi( form_control::@3/(byte) keyboard_events_size#3 )
+ (byte) keyboard_events_size#10 ← (byte) keyboard_events_size#25
+ (byte) keyboard_modifiers#11 ← (byte) keyboard_modifiers#23
+ call keyboard_event_get param-assignment
+ (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2
+ to:form_control::@30
+form_control::@30: scope:[form_control] from form_control::@29
+ (signed byte) form_cursor_count#37 ← phi( form_control::@29/(signed byte) form_cursor_count#41 )
+ (byte) form_fields_cnt#8 ← phi( form_control::@29/(byte) form_fields_cnt#10 )
+ (byte) form_field_idx#39 ← phi( form_control::@29/(byte) form_field_idx#46 )
+ (byte) keyboard_modifiers#38 ← phi( form_control::@29/(byte) keyboard_modifiers#11 )
+ (byte*) form_control::field#6 ← phi( form_control::@29/(byte*) form_control::field#12 )
+ (byte) keyboard_events_size#26 ← phi( form_control::@29/(byte) keyboard_events_size#5 )
+ (byte) keyboard_event_get::return#5 ← phi( form_control::@29/(byte) keyboard_event_get::return#3 )
+ (byte~) form_control::$9 ← (byte) keyboard_event_get::return#5
+ (byte) keyboard_events_size#11 ← (byte) keyboard_events_size#26
+ (byte) form_control::key_event#0 ← (byte~) form_control::$9
+ (boolean~) form_control::$10 ← (byte) form_control::key_event#0 == (byte) KEY_CRSR_DOWN#0
+ (boolean~) form_control::$11 ← ! (boolean~) form_control::$10
+ if((boolean~) form_control::$11) goto form_control::@4
+ to:form_control::@17
+form_control::@4: scope:[form_control] from form_control::@30
+ (byte*) form_control::field#17 ← phi( form_control::@30/(byte*) form_control::field#6 )
+ (byte) form_field_idx#42 ← phi( form_control::@30/(byte) form_field_idx#39 )
+ (byte) keyboard_events_size#55 ← phi( form_control::@30/(byte) keyboard_events_size#11 )
+ (signed byte) form_cursor_count#29 ← phi( form_control::@30/(signed byte) form_cursor_count#37 )
+ (byte) keyboard_modifiers#42 ← phi( form_control::@30/(byte) keyboard_modifiers#38 )
+ (byte) form_control::key_event#1 ← phi( form_control::@30/(byte) form_control::key_event#0 )
+ (boolean~) form_control::$22 ← (byte) form_control::key_event#1 == (byte) KEY_CRSR_RIGHT#0
+ (boolean~) form_control::$23 ← ! (boolean~) form_control::$22
+ if((boolean~) form_control::$23) goto form_control::@9
+ to:form_control::@23
+form_control::@17: scope:[form_control] from form_control::@30
+ (byte) keyboard_events_size#79 ← phi( form_control::@30/(byte) keyboard_events_size#11 )
+ (byte) form_fields_cnt#5 ← phi( form_control::@30/(byte) form_fields_cnt#8 )
+ (byte) form_field_idx#29 ← phi( form_control::@30/(byte) form_field_idx#39 )
+ (byte) keyboard_modifiers#24 ← phi( form_control::@30/(byte) keyboard_modifiers#38 )
+ (byte*) form_control::field#3 ← phi( form_control::@30/(byte*) form_control::field#6 )
+ (byte~) form_control::$12 ← *((byte*) form_control::field#3) & (byte/signed byte/word/signed word/dword/signed dword) 127
+ *((byte*) form_control::field#3) ← (byte~) form_control::$12
+ (byte~) form_control::$13 ← (byte) keyboard_modifiers#24 & (byte) KEY_MODIFIER_SHIFT#0
+ (boolean~) form_control::$14 ← (byte~) form_control::$13 == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) form_control::$15 ← ! (boolean~) form_control::$14
+ if((boolean~) form_control::$15) goto form_control::@5
+ to:form_control::@18
+form_control::@5: scope:[form_control] from form_control::@17
+ (byte) keyboard_modifiers#67 ← phi( form_control::@17/(byte) keyboard_modifiers#24 )
+ (byte) keyboard_events_size#70 ← phi( form_control::@17/(byte) keyboard_events_size#79 )
+ (byte) form_fields_cnt#6 ← phi( form_control::@17/(byte) form_fields_cnt#5 )
+ (byte) form_field_idx#16 ← phi( form_control::@17/(byte) form_field_idx#29 )
(byte) form_field_idx#5 ← -- (byte) form_field_idx#16
- (boolean~) form_control::$19 ← (byte) form_field_idx#5 == (byte/word/signed word/dword/signed dword) 255
- (boolean~) form_control::$20 ← ! (boolean~) form_control::$19
- if((boolean~) form_control::$20) goto form_control::@9
- to:form_control::@24
-form_control::@21: scope:[form_control] from form_control::@35
- (byte) key_right_debounce#43 ← phi( form_control::@35/(byte) key_right_debounce#50 )
- (byte) key_down_debounce#45 ← phi( form_control::@35/(byte) key_down_debounce#53 )
- (byte) form_fields_cnt#2 ← phi( form_control::@35/(byte) form_fields_cnt#5 )
- (byte) form_field_idx#17 ← phi( form_control::@35/(byte) form_field_idx#29 )
+ (boolean~) form_control::$18 ← (byte) form_field_idx#5 == (byte/word/signed word/dword/signed dword) 255
+ (boolean~) form_control::$19 ← ! (boolean~) form_control::$18
+ if((boolean~) form_control::$19) goto form_control::@8
+ to:form_control::@21
+form_control::@18: scope:[form_control] from form_control::@17
+ (byte) keyboard_modifiers#66 ← phi( form_control::@17/(byte) keyboard_modifiers#24 )
+ (byte) keyboard_events_size#69 ← phi( form_control::@17/(byte) keyboard_events_size#79 )
+ (byte) form_fields_cnt#2 ← phi( form_control::@17/(byte) form_fields_cnt#5 )
+ (byte) form_field_idx#17 ← phi( form_control::@17/(byte) form_field_idx#29 )
(byte) form_field_idx#6 ← ++ (byte) form_field_idx#17
- (boolean~) form_control::$17 ← (byte) form_field_idx#6 == (byte) form_fields_cnt#2
- (boolean~) form_control::$18 ← ! (boolean~) form_control::$17
- if((boolean~) form_control::$18) goto form_control::@7
- to:form_control::@22
-form_control::@7: scope:[form_control] from form_control::@21
- (byte) key_right_debounce#32 ← phi( form_control::@21/(byte) key_right_debounce#43 )
- (byte) form_field_idx#41 ← phi( form_control::@21/(byte) form_field_idx#6 )
- (byte) key_down_debounce#32 ← phi( form_control::@21/(byte) key_down_debounce#45 )
- to:form_control::@8
-form_control::@22: scope:[form_control] from form_control::@21
- (byte) key_right_debounce#30 ← phi( form_control::@21/(byte) key_right_debounce#43 )
- (byte) key_down_debounce#30 ← phi( form_control::@21/(byte) key_down_debounce#45 )
+ (boolean~) form_control::$16 ← (byte) form_field_idx#6 == (byte) form_fields_cnt#2
+ (boolean~) form_control::$17 ← ! (boolean~) form_control::$16
+ if((boolean~) form_control::$17) goto form_control::@6
+ to:form_control::@19
+form_control::@6: scope:[form_control] from form_control::@18
+ (byte) form_field_idx#40 ← phi( form_control::@18/(byte) form_field_idx#6 )
+ (byte) keyboard_modifiers#54 ← phi( form_control::@18/(byte) keyboard_modifiers#66 )
+ (byte) keyboard_events_size#53 ← phi( form_control::@18/(byte) keyboard_events_size#69 )
+ to:form_control::@7
+form_control::@19: scope:[form_control] from form_control::@18
+ (byte) keyboard_modifiers#52 ← phi( form_control::@18/(byte) keyboard_modifiers#66 )
+ (byte) keyboard_events_size#51 ← phi( form_control::@18/(byte) keyboard_events_size#69 )
(byte) form_field_idx#7 ← (byte/signed byte/word/signed word/dword/signed dword) 0
- to:form_control::@8
-form_control::@8: scope:[form_control] from form_control::@22 form_control::@24 form_control::@7 form_control::@9
- (byte) key_right_debounce#23 ← phi( form_control::@22/(byte) key_right_debounce#30 form_control::@24/(byte) key_right_debounce#31 form_control::@7/(byte) key_right_debounce#32 form_control::@9/(byte) key_right_debounce#33 )
- (byte) form_field_idx#32 ← phi( form_control::@22/(byte) form_field_idx#7 form_control::@24/(byte) form_field_idx#8 form_control::@7/(byte) form_field_idx#41 form_control::@9/(byte) form_field_idx#42 )
- (byte) key_down_debounce#23 ← phi( form_control::@22/(byte) key_down_debounce#30 form_control::@24/(byte) key_down_debounce#31 form_control::@7/(byte) key_down_debounce#32 form_control::@9/(byte) key_down_debounce#33 )
- (signed word/signed byte/signed dword~) form_control::$22 ← (signed byte) FORM_CURSOR_BLINK#0 / (byte/signed byte/word/signed word/dword/signed dword) 2
- (signed byte) form_cursor_count#7 ← (signed word/signed byte/signed dword~) form_control::$22
+ to:form_control::@7
+form_control::@7: scope:[form_control] from form_control::@19 form_control::@21 form_control::@6 form_control::@8
+ (byte) form_field_idx#30 ← phi( form_control::@19/(byte) form_field_idx#7 form_control::@21/(byte) form_field_idx#8 form_control::@6/(byte) form_field_idx#40 form_control::@8/(byte) form_field_idx#41 )
+ (byte) keyboard_modifiers#40 ← phi( form_control::@19/(byte) keyboard_modifiers#52 form_control::@21/(byte) keyboard_modifiers#53 form_control::@6/(byte) keyboard_modifiers#54 form_control::@8/(byte) keyboard_modifiers#55 )
+ (byte) keyboard_events_size#40 ← phi( form_control::@19/(byte) keyboard_events_size#51 form_control::@21/(byte) keyboard_events_size#52 form_control::@6/(byte) keyboard_events_size#53 form_control::@8/(byte) keyboard_events_size#54 )
+ (signed word/signed byte/signed dword~) form_control::$21 ← (signed byte) FORM_CURSOR_BLINK#0 / (byte/signed byte/word/signed word/dword/signed dword) 2
+ (signed byte) form_cursor_count#7 ← (signed word/signed byte/signed dword~) form_control::$21
to:form_control::@return
-form_control::@9: scope:[form_control] from form_control::@6
- (byte) key_right_debounce#33 ← phi( form_control::@6/(byte) key_right_debounce#44 )
- (byte) form_field_idx#42 ← phi( form_control::@6/(byte) form_field_idx#5 )
- (byte) key_down_debounce#33 ← phi( form_control::@6/(byte) key_down_debounce#46 )
- to:form_control::@8
-form_control::@24: scope:[form_control] from form_control::@6
- (byte) key_right_debounce#31 ← phi( form_control::@6/(byte) key_right_debounce#44 )
- (byte) key_down_debounce#31 ← phi( form_control::@6/(byte) key_down_debounce#46 )
- (byte) form_fields_cnt#3 ← phi( form_control::@6/(byte) form_fields_cnt#6 )
- (byte/signed word/word/dword/signed dword~) form_control::$21 ← (byte) form_fields_cnt#3 - (byte/signed byte/word/signed word/dword/signed dword) 1
- (byte) form_field_idx#8 ← (byte/signed word/word/dword/signed dword~) form_control::$21
- to:form_control::@8
-form_control::@return: scope:[form_control] from form_control::@10 form_control::@11 form_control::@14 form_control::@8
- (byte) key_right_debounce#13 ← phi( form_control::@10/(byte) key_right_debounce#20 form_control::@11/(byte) key_right_debounce#21 form_control::@14/(byte) key_right_debounce#22 form_control::@8/(byte) key_right_debounce#23 )
- (byte) form_field_idx#18 ← phi( form_control::@10/(byte) form_field_idx#30 form_control::@11/(byte) form_field_idx#31 form_control::@14/(byte) form_field_idx#22 form_control::@8/(byte) form_field_idx#32 )
- (byte) key_down_debounce#13 ← phi( form_control::@10/(byte) key_down_debounce#20 form_control::@11/(byte) key_down_debounce#21 form_control::@14/(byte) key_down_debounce#22 form_control::@8/(byte) key_down_debounce#23 )
- (signed byte) form_cursor_count#16 ← phi( form_control::@10/(signed byte) form_cursor_count#23 form_control::@11/(signed byte) form_cursor_count#24 form_control::@14/(signed byte) form_cursor_count#25 form_control::@8/(signed byte) form_cursor_count#7 )
+form_control::@8: scope:[form_control] from form_control::@5
+ (byte) form_field_idx#41 ← phi( form_control::@5/(byte) form_field_idx#5 )
+ (byte) keyboard_modifiers#55 ← phi( form_control::@5/(byte) keyboard_modifiers#67 )
+ (byte) keyboard_events_size#54 ← phi( form_control::@5/(byte) keyboard_events_size#70 )
+ to:form_control::@7
+form_control::@21: scope:[form_control] from form_control::@5
+ (byte) keyboard_modifiers#53 ← phi( form_control::@5/(byte) keyboard_modifiers#67 )
+ (byte) keyboard_events_size#52 ← phi( form_control::@5/(byte) keyboard_events_size#70 )
+ (byte) form_fields_cnt#3 ← phi( form_control::@5/(byte) form_fields_cnt#6 )
+ (byte/signed word/word/dword/signed dword~) form_control::$20 ← (byte) form_fields_cnt#3 - (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) form_field_idx#8 ← (byte/signed word/word/dword/signed dword~) form_control::$20
+ to:form_control::@7
+form_control::@return: scope:[form_control] from form_control::@12 form_control::@7 form_control::@9
+ (byte) form_field_idx#18 ← phi( form_control::@12/(byte) form_field_idx#22 form_control::@7/(byte) form_field_idx#30 form_control::@9/(byte) form_field_idx#31 )
+ (byte) keyboard_modifiers#25 ← phi( form_control::@12/(byte) keyboard_modifiers#39 form_control::@7/(byte) keyboard_modifiers#40 form_control::@9/(byte) keyboard_modifiers#41 )
+ (byte) keyboard_events_size#27 ← phi( form_control::@12/(byte) keyboard_events_size#39 form_control::@7/(byte) keyboard_events_size#40 form_control::@9/(byte) keyboard_events_size#41 )
+ (signed byte) form_cursor_count#16 ← phi( form_control::@12/(signed byte) form_cursor_count#23 form_control::@7/(signed byte) form_cursor_count#7 form_control::@9/(signed byte) form_cursor_count#24 )
(signed byte) form_cursor_count#8 ← (signed byte) form_cursor_count#16
- (byte) key_down_debounce#6 ← (byte) key_down_debounce#13
+ (byte) keyboard_events_size#12 ← (byte) keyboard_events_size#27
+ (byte) keyboard_modifiers#12 ← (byte) keyboard_modifiers#25
(byte) form_field_idx#9 ← (byte) form_field_idx#18
- (byte) key_right_debounce#5 ← (byte) key_right_debounce#13
return
to:@return
-form_control::@10: scope:[form_control] from form_control::@34
- (byte) key_right_debounce#20 ← phi( form_control::@34/(byte) key_right_debounce#12 )
- (byte) form_field_idx#30 ← phi( form_control::@34/(byte) form_field_idx#43 )
- (byte) key_down_debounce#20 ← phi( form_control::@34/(byte) key_down_debounce#34 )
- (signed byte) form_cursor_count#23 ← phi( form_control::@34/(signed byte) form_cursor_count#30 )
+form_control::@9: scope:[form_control] from form_control::@4
+ (byte) form_field_idx#31 ← phi( form_control::@4/(byte) form_field_idx#42 )
+ (byte) keyboard_modifiers#41 ← phi( form_control::@4/(byte) keyboard_modifiers#42 )
+ (byte) keyboard_events_size#41 ← phi( form_control::@4/(byte) keyboard_events_size#55 )
+ (signed byte) form_cursor_count#24 ← phi( form_control::@4/(signed byte) form_cursor_count#29 )
to:form_control::@return
-form_control::@26: scope:[form_control] from form_control::@34
- (byte*) form_control::field#18 ← phi( form_control::@34/(byte*) form_control::field#19 )
- (byte) form_field_idx#44 ← phi( form_control::@34/(byte) form_field_idx#43 )
- (byte) key_down_debounce#35 ← phi( form_control::@34/(byte) key_down_debounce#34 )
- (signed byte) form_cursor_count#31 ← phi( form_control::@34/(signed byte) form_cursor_count#30 )
- (byte) form_control::key_right#1 ← phi( form_control::@34/(byte) form_control::key_right#0 )
- (byte) key_right_debounce#6 ← (byte) form_control::key_right#1
- (boolean~) form_control::$26 ← (byte) form_control::key_right#1 != (byte/signed byte/word/signed word/dword/signed dword) 0
- (boolean~) form_control::$27 ← ! (boolean~) form_control::$26
- if((boolean~) form_control::$27) goto form_control::@11
- to:form_control::@27
-form_control::@11: scope:[form_control] from form_control::@26
- (byte) key_right_debounce#21 ← phi( form_control::@26/(byte) key_right_debounce#6 )
- (byte) form_field_idx#31 ← phi( form_control::@26/(byte) form_field_idx#44 )
- (byte) key_down_debounce#21 ← phi( form_control::@26/(byte) key_down_debounce#35 )
- (signed byte) form_cursor_count#24 ← phi( form_control::@26/(signed byte) form_cursor_count#31 )
- to:form_control::@return
-form_control::@27: scope:[form_control] from form_control::@26
- (byte) key_right_debounce#55 ← phi( form_control::@26/(byte) key_right_debounce#6 )
- (byte) key_down_debounce#58 ← phi( form_control::@26/(byte) key_down_debounce#35 )
- (signed byte) form_cursor_count#49 ← phi( form_control::@26/(signed byte) form_cursor_count#31 )
- (byte*) form_control::field#17 ← phi( form_control::@26/(byte*) form_control::field#18 )
- (byte) form_field_idx#45 ← phi( form_control::@26/(byte) form_field_idx#44 )
- (byte) keyboard_key_pressed::key#3 ← (byte) KEY_RSHIFT#0
- call keyboard_key_pressed param-assignment
- (byte) keyboard_key_pressed::return#5 ← (byte) keyboard_key_pressed::return#1
- to:form_control::@36
-form_control::@36: scope:[form_control] from form_control::@27
- (byte) key_right_debounce#51 ← phi( form_control::@27/(byte) key_right_debounce#55 )
- (byte) key_down_debounce#54 ← phi( form_control::@27/(byte) key_down_debounce#58 )
- (signed byte) form_cursor_count#45 ← phi( form_control::@27/(signed byte) form_cursor_count#49 )
- (byte*) form_control::field#16 ← phi( form_control::@27/(byte*) form_control::field#17 )
- (byte) form_field_idx#33 ← phi( form_control::@27/(byte) form_field_idx#45 )
- (byte) keyboard_key_pressed::return#10 ← phi( form_control::@27/(byte) keyboard_key_pressed::return#5 )
- (byte~) form_control::$28 ← (byte) keyboard_key_pressed::return#10
- (boolean~) form_control::$29 ← (byte~) form_control::$28 == (byte/signed byte/word/signed word/dword/signed dword) 0
- (boolean~) form_control::$30 ← ! (boolean~) form_control::$29
- if((boolean~) form_control::$30) goto form_control::@12
- to:form_control::@28
-form_control::@12: scope:[form_control] from form_control::@36
- (byte) key_right_debounce#46 ← phi( form_control::@36/(byte) key_right_debounce#51 )
- (byte) key_down_debounce#48 ← phi( form_control::@36/(byte) key_down_debounce#54 )
- (signed byte) form_cursor_count#41 ← phi( form_control::@36/(signed byte) form_cursor_count#45 )
- (byte*) form_control::field#14 ← phi( form_control::@36/(byte*) form_control::field#16 )
- (byte) form_field_idx#19 ← phi( form_control::@36/(byte) form_field_idx#33 )
+form_control::@23: scope:[form_control] from form_control::@4
+ (byte) keyboard_events_size#80 ← phi( form_control::@4/(byte) keyboard_events_size#55 )
+ (signed byte) form_cursor_count#42 ← phi( form_control::@4/(signed byte) form_cursor_count#29 )
+ (byte*) form_control::field#16 ← phi( form_control::@4/(byte*) form_control::field#17 )
+ (byte) form_field_idx#32 ← phi( form_control::@4/(byte) form_field_idx#42 )
+ (byte) keyboard_modifiers#26 ← phi( form_control::@4/(byte) keyboard_modifiers#42 )
+ (byte~) form_control::$24 ← (byte) keyboard_modifiers#26 & (byte) KEY_MODIFIER_SHIFT#0
+ (boolean~) form_control::$25 ← (byte~) form_control::$24 == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) form_control::$26 ← ! (boolean~) form_control::$25
+ if((boolean~) form_control::$26) goto form_control::@10
+ to:form_control::@24
+form_control::@10: scope:[form_control] from form_control::@23
+ (byte) keyboard_modifiers#69 ← phi( form_control::@23/(byte) keyboard_modifiers#26 )
+ (byte) keyboard_events_size#72 ← phi( form_control::@23/(byte) keyboard_events_size#80 )
+ (signed byte) form_cursor_count#39 ← phi( form_control::@23/(signed byte) form_cursor_count#42 )
+ (byte*) form_control::field#14 ← phi( form_control::@23/(byte*) form_control::field#16 )
+ (byte) form_field_idx#19 ← phi( form_control::@23/(byte) form_field_idx#32 )
*((byte[]) form_fields_val#0 + (byte) form_field_idx#19) ← -- *((byte[]) form_fields_val#0 + (byte) form_field_idx#19)
- (boolean~) form_control::$33 ← *((byte[]) form_fields_val#0 + (byte) form_field_idx#19) == (byte/word/signed word/dword/signed dword) 255
- (boolean~) form_control::$34 ← ! (boolean~) form_control::$33
- if((boolean~) form_control::$34) goto form_control::@15
- to:form_control::@31
-form_control::@28: scope:[form_control] from form_control::@36
- (byte) key_right_debounce#45 ← phi( form_control::@36/(byte) key_right_debounce#51 )
- (byte) key_down_debounce#47 ← phi( form_control::@36/(byte) key_down_debounce#54 )
- (signed byte) form_cursor_count#40 ← phi( form_control::@36/(signed byte) form_cursor_count#45 )
- (byte*) form_control::field#13 ← phi( form_control::@36/(byte*) form_control::field#16 )
- (byte) form_field_idx#20 ← phi( form_control::@36/(byte) form_field_idx#33 )
+ (boolean~) form_control::$29 ← *((byte[]) form_fields_val#0 + (byte) form_field_idx#19) == (byte/word/signed word/dword/signed dword) 255
+ (boolean~) form_control::$30 ← ! (boolean~) form_control::$29
+ if((boolean~) form_control::$30) goto form_control::@13
+ to:form_control::@27
+form_control::@24: scope:[form_control] from form_control::@23
+ (byte) keyboard_modifiers#68 ← phi( form_control::@23/(byte) keyboard_modifiers#26 )
+ (byte) keyboard_events_size#71 ← phi( form_control::@23/(byte) keyboard_events_size#80 )
+ (signed byte) form_cursor_count#38 ← phi( form_control::@23/(signed byte) form_cursor_count#42 )
+ (byte*) form_control::field#13 ← phi( form_control::@23/(byte*) form_control::field#16 )
+ (byte) form_field_idx#20 ← phi( form_control::@23/(byte) form_field_idx#32 )
*((byte[]) form_fields_val#0 + (byte) form_field_idx#20) ← ++ *((byte[]) form_fields_val#0 + (byte) form_field_idx#20)
- (boolean~) form_control::$31 ← *((byte[]) form_fields_val#0 + (byte) form_field_idx#20) > *((byte[]) form_fields_max#0 + (byte) form_field_idx#20)
- (boolean~) form_control::$32 ← ! (boolean~) form_control::$31
- if((boolean~) form_control::$32) goto form_control::@13
- to:form_control::@29
-form_control::@13: scope:[form_control] from form_control::@28
- (byte) key_right_debounce#34 ← phi( form_control::@28/(byte) key_right_debounce#45 )
- (byte) key_down_debounce#36 ← phi( form_control::@28/(byte) key_down_debounce#47 )
- (signed byte) form_cursor_count#32 ← phi( form_control::@28/(signed byte) form_cursor_count#40 )
- (byte*) form_control::field#7 ← phi( form_control::@28/(byte*) form_control::field#13 )
- (byte) form_field_idx#34 ← phi( form_control::@28/(byte) form_field_idx#20 )
- to:form_control::@14
-form_control::@29: scope:[form_control] from form_control::@28
- (byte) key_right_debounce#36 ← phi( form_control::@28/(byte) key_right_debounce#45 )
- (byte) key_down_debounce#38 ← phi( form_control::@28/(byte) key_down_debounce#47 )
- (signed byte) form_cursor_count#34 ← phi( form_control::@28/(signed byte) form_cursor_count#40 )
- (byte*) form_control::field#9 ← phi( form_control::@28/(byte*) form_control::field#13 )
- (byte) form_field_idx#21 ← phi( form_control::@28/(byte) form_field_idx#20 )
+ (boolean~) form_control::$27 ← *((byte[]) form_fields_val#0 + (byte) form_field_idx#20) > *((byte[]) form_fields_max#0 + (byte) form_field_idx#20)
+ (boolean~) form_control::$28 ← ! (boolean~) form_control::$27
+ if((boolean~) form_control::$28) goto form_control::@11
+ to:form_control::@25
+form_control::@11: scope:[form_control] from form_control::@24
+ (byte) keyboard_modifiers#56 ← phi( form_control::@24/(byte) keyboard_modifiers#68 )
+ (byte) keyboard_events_size#56 ← phi( form_control::@24/(byte) keyboard_events_size#71 )
+ (signed byte) form_cursor_count#30 ← phi( form_control::@24/(signed byte) form_cursor_count#38 )
+ (byte*) form_control::field#7 ← phi( form_control::@24/(byte*) form_control::field#13 )
+ (byte) form_field_idx#33 ← phi( form_control::@24/(byte) form_field_idx#20 )
+ to:form_control::@12
+form_control::@25: scope:[form_control] from form_control::@24
+ (byte) keyboard_modifiers#58 ← phi( form_control::@24/(byte) keyboard_modifiers#68 )
+ (byte) keyboard_events_size#58 ← phi( form_control::@24/(byte) keyboard_events_size#71 )
+ (signed byte) form_cursor_count#32 ← phi( form_control::@24/(signed byte) form_cursor_count#38 )
+ (byte*) form_control::field#9 ← phi( form_control::@24/(byte*) form_control::field#13 )
+ (byte) form_field_idx#21 ← phi( form_control::@24/(byte) form_field_idx#20 )
*((byte[]) form_fields_val#0 + (byte) form_field_idx#21) ← (byte/signed byte/word/signed word/dword/signed dword) 0
- to:form_control::@14
-form_control::@14: scope:[form_control] from form_control::@13 form_control::@15 form_control::@29 form_control::@31
- (byte) key_right_debounce#22 ← phi( form_control::@13/(byte) key_right_debounce#34 form_control::@15/(byte) key_right_debounce#35 form_control::@29/(byte) key_right_debounce#36 form_control::@31/(byte) key_right_debounce#37 )
- (byte) key_down_debounce#22 ← phi( form_control::@13/(byte) key_down_debounce#36 form_control::@15/(byte) key_down_debounce#37 form_control::@29/(byte) key_down_debounce#38 form_control::@31/(byte) key_down_debounce#39 )
- (signed byte) form_cursor_count#25 ← phi( form_control::@13/(signed byte) form_cursor_count#32 form_control::@15/(signed byte) form_cursor_count#33 form_control::@29/(signed byte) form_cursor_count#34 form_control::@31/(signed byte) form_cursor_count#35 )
- (byte*) form_control::field#4 ← phi( form_control::@13/(byte*) form_control::field#7 form_control::@15/(byte*) form_control::field#8 form_control::@29/(byte*) form_control::field#9 form_control::@31/(byte*) form_control::field#10 )
- (byte) form_field_idx#22 ← phi( form_control::@13/(byte) form_field_idx#34 form_control::@15/(byte) form_field_idx#35 form_control::@29/(byte) form_field_idx#21 form_control::@31/(byte) form_field_idx#23 )
+ to:form_control::@12
+form_control::@12: scope:[form_control] from form_control::@11 form_control::@13 form_control::@25 form_control::@27
+ (byte) keyboard_modifiers#39 ← phi( form_control::@11/(byte) keyboard_modifiers#56 form_control::@13/(byte) keyboard_modifiers#57 form_control::@25/(byte) keyboard_modifiers#58 form_control::@27/(byte) keyboard_modifiers#59 )
+ (byte) keyboard_events_size#39 ← phi( form_control::@11/(byte) keyboard_events_size#56 form_control::@13/(byte) keyboard_events_size#57 form_control::@25/(byte) keyboard_events_size#58 form_control::@27/(byte) keyboard_events_size#59 )
+ (signed byte) form_cursor_count#23 ← phi( form_control::@11/(signed byte) form_cursor_count#30 form_control::@13/(signed byte) form_cursor_count#31 form_control::@25/(signed byte) form_cursor_count#32 form_control::@27/(signed byte) form_cursor_count#33 )
+ (byte*) form_control::field#4 ← phi( form_control::@11/(byte*) form_control::field#7 form_control::@13/(byte*) form_control::field#8 form_control::@25/(byte*) form_control::field#9 form_control::@27/(byte*) form_control::field#10 )
+ (byte) form_field_idx#22 ← phi( form_control::@11/(byte) form_field_idx#33 form_control::@13/(byte) form_field_idx#34 form_control::@25/(byte) form_field_idx#21 form_control::@27/(byte) form_field_idx#23 )
*((byte*) form_control::field#4) ← *((byte[]) print_hextab#0 + *((byte[]) form_fields_val#0 + (byte) form_field_idx#22))
to:form_control::@return
-form_control::@15: scope:[form_control] from form_control::@12
- (byte) key_right_debounce#35 ← phi( form_control::@12/(byte) key_right_debounce#46 )
- (byte) key_down_debounce#37 ← phi( form_control::@12/(byte) key_down_debounce#48 )
- (signed byte) form_cursor_count#33 ← phi( form_control::@12/(signed byte) form_cursor_count#41 )
- (byte*) form_control::field#8 ← phi( form_control::@12/(byte*) form_control::field#14 )
- (byte) form_field_idx#35 ← phi( form_control::@12/(byte) form_field_idx#19 )
- to:form_control::@14
-form_control::@31: scope:[form_control] from form_control::@12
- (byte) key_right_debounce#37 ← phi( form_control::@12/(byte) key_right_debounce#46 )
- (byte) key_down_debounce#39 ← phi( form_control::@12/(byte) key_down_debounce#48 )
- (signed byte) form_cursor_count#35 ← phi( form_control::@12/(signed byte) form_cursor_count#41 )
- (byte*) form_control::field#10 ← phi( form_control::@12/(byte*) form_control::field#14 )
- (byte) form_field_idx#23 ← phi( form_control::@12/(byte) form_field_idx#19 )
+form_control::@13: scope:[form_control] from form_control::@10
+ (byte) keyboard_modifiers#57 ← phi( form_control::@10/(byte) keyboard_modifiers#69 )
+ (byte) keyboard_events_size#57 ← phi( form_control::@10/(byte) keyboard_events_size#72 )
+ (signed byte) form_cursor_count#31 ← phi( form_control::@10/(signed byte) form_cursor_count#39 )
+ (byte*) form_control::field#8 ← phi( form_control::@10/(byte*) form_control::field#14 )
+ (byte) form_field_idx#34 ← phi( form_control::@10/(byte) form_field_idx#19 )
+ to:form_control::@12
+form_control::@27: scope:[form_control] from form_control::@10
+ (byte) keyboard_modifiers#59 ← phi( form_control::@10/(byte) keyboard_modifiers#69 )
+ (byte) keyboard_events_size#59 ← phi( form_control::@10/(byte) keyboard_events_size#72 )
+ (signed byte) form_cursor_count#33 ← phi( form_control::@10/(signed byte) form_cursor_count#39 )
+ (byte*) form_control::field#10 ← phi( form_control::@10/(byte*) form_control::field#14 )
+ (byte) form_field_idx#23 ← phi( form_control::@10/(byte) form_field_idx#19 )
*((byte[]) form_fields_val#0 + (byte) form_field_idx#23) ← *((byte[]) form_fields_max#0 + (byte) form_field_idx#23)
- to:form_control::@14
-@25: scope:[] from @21
- (byte) form_fields_cnt#39 ← phi( @21/(byte) form_fields_cnt#0 )
- (byte) key_right_debounce#24 ← phi( @21/(byte) key_right_debounce#4 )
- (byte) form_field_idx#36 ← phi( @21/(byte) form_field_idx#4 )
- (byte) key_down_debounce#24 ← phi( @21/(byte) key_down_debounce#4 )
- (signed byte) form_cursor_count#26 ← phi( @21/(signed byte) form_cursor_count#4 )
- (byte*) print_char_cursor#45 ← phi( @21/(byte*) print_char_cursor#53 )
- (byte*) print_line_cursor#43 ← phi( @21/(byte*) print_line_cursor#50 )
- (byte*) print_screen#24 ← phi( @21/(byte*) print_screen#30 )
+ to:form_control::@12
+@28: scope:[] from @24
+ (byte) form_fields_cnt#38 ← phi( @24/(byte) form_fields_cnt#0 )
+ (byte) form_field_idx#35 ← phi( @24/(byte) form_field_idx#4 )
+ (byte) keyboard_modifiers#43 ← phi( @24/(byte) keyboard_modifiers#60 )
+ (byte) keyboard_events_size#42 ← phi( @24/(byte) keyboard_events_size#60 )
+ (signed byte) form_cursor_count#25 ← phi( @24/(signed byte) form_cursor_count#4 )
+ (byte*) print_char_cursor#45 ← phi( @24/(byte*) print_char_cursor#53 )
+ (byte*) print_line_cursor#43 ← phi( @24/(byte*) print_line_cursor#50 )
+ (byte*) print_screen#24 ← phi( @24/(byte*) print_screen#30 )
call main param-assignment
- to:@26
-@26: scope:[] from @25
- (byte) key_right_debounce#14 ← phi( @25/(byte) key_right_debounce#1 )
- (byte) form_field_idx#24 ← phi( @25/(byte) form_field_idx#1 )
- (byte) key_down_debounce#14 ← phi( @25/(byte) key_down_debounce#1 )
- (signed byte) form_cursor_count#17 ← phi( @25/(signed byte) form_cursor_count#1 )
- (byte*) print_char_cursor#36 ← phi( @25/(byte*) print_char_cursor#11 )
- (byte*) print_line_cursor#35 ← phi( @25/(byte*) print_line_cursor#10 )
- (byte*) print_screen#18 ← phi( @25/(byte*) print_screen#4 )
+ to:@29
+@29: scope:[] from @28
+ (byte) form_field_idx#24 ← phi( @28/(byte) form_field_idx#1 )
+ (byte) keyboard_modifiers#27 ← phi( @28/(byte) keyboard_modifiers#8 )
+ (byte) keyboard_events_size#28 ← phi( @28/(byte) keyboard_events_size#7 )
+ (signed byte) form_cursor_count#17 ← phi( @28/(signed byte) form_cursor_count#1 )
+ (byte*) print_char_cursor#36 ← phi( @28/(byte*) print_char_cursor#11 )
+ (byte*) print_line_cursor#35 ← phi( @28/(byte*) print_line_cursor#10 )
+ (byte*) print_screen#18 ← phi( @28/(byte*) print_screen#4 )
(byte*) print_screen#8 ← (byte*) print_screen#18
(byte*) print_line_cursor#18 ← (byte*) print_line_cursor#35
(byte*) print_char_cursor#19 ← (byte*) print_char_cursor#36
(signed byte) form_cursor_count#9 ← (signed byte) form_cursor_count#17
- (byte) key_down_debounce#7 ← (byte) key_down_debounce#14
+ (byte) keyboard_events_size#13 ← (byte) keyboard_events_size#28
+ (byte) keyboard_modifiers#13 ← (byte) keyboard_modifiers#27
(byte) form_field_idx#10 ← (byte) form_field_idx#24
- (byte) key_right_debounce#7 ← (byte) key_right_debounce#14
to:@end
-@end: scope:[] from @26
+@end: scope:[] from @29
SYMBOL TABLE SSA
-(string~) $0
+(byte~) $0
(string~) $1
(string~) $10
(string~) $11
@@ -3871,31 +4484,32 @@ SYMBOL TABLE SSA
(string~) $15
(string~) $16
(string~) $17
-(signed word/signed byte/signed dword~) $18
-(const string) $19 = (string) "0123456789abcdef"
+(string~) $18
+(signed word/signed byte/signed dword~) $19
(string~) $2
-(const string) $20 = (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"
-(const string) $21 = (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
+(const string) $20 = (string) "0123456789abcdef"
+(const string) $21 = (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"
(const string) $22 = (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
(const string) $23 = (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
(const string) $24 = (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
(const string) $25 = (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
-(const string) $26 = (string) " nnnnnnn ooooooooo @"
-(const string) $27 = (string) " nnnnnnn nnnnnnnn ooooooooo @"
+(const string) $26 = (string) " nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
+(const string) $27 = (string) " nnnnnnn ooooooooo @"
(const string) $28 = (string) " nnnnnnn nnnnnnnn ooooooooo @"
-(const string) $29 = (string) "@"
+(const string) $29 = (string) " nnnnnnn nnnnnnnn ooooooooo @"
(string~) $3
-(const string) $30 = (string) " DTV GfxExplorer MODE 0 8bpp pixel cell @"
-(const string) $31 = (string) " CONTROL PLANE A PLANE B VIC II @"
-(const string) $32 = (string) " bmm 0 patt p0 patt p0 screen s0 @"
-(const string) $33 = (string) " mcm 0 start 00 start 00 gfx g0 @"
-(const string) $34 = (string) " ecm 0 step 00 step 00 colors c0 @"
-(const string) $35 = (string) " hicol 0 mod 00 mod 00 bgcol0 00 @"
-(const string) $36 = (string) " line 0 bgcol1 00 @"
-(const string) $37 = (string) " colof 0 borof 0 bgcol2 00 @"
-(const string) $38 = (string) " chunk 0 overs 0 bgcol3 00 @"
-(const string) $39 = (string) "@"
+(const string) $30 = (string) "@"
+(const string) $31 = (string) " DTV GfxExplorer MODE 0 8bpp pixel cell @"
+(const string) $32 = (string) " CONTROL PLANE A PLANE B VIC II @"
+(const string) $33 = (string) " bmm 0 patt p0 patt p0 screen s0 @"
+(const string) $34 = (string) " mcm 0 start 00 start 00 gfx g0 @"
+(const string) $35 = (string) " ecm 0 step 00 step 00 colors c0 @"
+(const string) $36 = (string) " hicol 0 mod 00 mod 00 bgcol0 00 @"
+(const string) $37 = (string) " line 0 bgcol1 00 @"
+(const string) $38 = (string) " colof 0 borof 0 bgcol2 00 @"
+(const string) $39 = (string) " chunk 0 overs 0 bgcol3 00 @"
(string~) $4
+(const string) $40 = (string) "@"
(string~) $5
(string~) $6
(string~) $7
@@ -3904,10 +4518,11 @@ SYMBOL TABLE SSA
(label) @1
(label) @11
(label) @15
-(label) @20
-(label) @21
-(label) @25
-(label) @26
+(label) @19
+(label) @23
+(label) @24
+(label) @28
+(label) @29
(label) @begin
(label) @end
(byte*) BGCOL
@@ -3944,10 +4559,26 @@ SYMBOL TABLE SSA
(byte[16]) DTV_PALETTE_DEFAULT#0
(signed byte) FORM_CURSOR_BLINK
(signed byte) FORM_CURSOR_BLINK#0
+(byte) KEY_COMMODORE
+(byte) KEY_COMMODORE#0
(byte) KEY_CRSR_DOWN
(byte) KEY_CRSR_DOWN#0
(byte) KEY_CRSR_RIGHT
(byte) KEY_CRSR_RIGHT#0
+(byte) KEY_CTRL
+(byte) KEY_CTRL#0
+(byte) KEY_LSHIFT
+(byte) KEY_LSHIFT#0
+(byte) KEY_MODIFIER_COMMODORE
+(byte) KEY_MODIFIER_COMMODORE#0
+(byte) KEY_MODIFIER_CTRL
+(byte) KEY_MODIFIER_CTRL#0
+(byte) KEY_MODIFIER_LSHIFT
+(byte) KEY_MODIFIER_LSHIFT#0
+(byte) KEY_MODIFIER_RSHIFT
+(byte) KEY_MODIFIER_RSHIFT#0
+(byte) KEY_MODIFIER_SHIFT
+(byte) KEY_MODIFIER_SHIFT#0
(byte) KEY_RSHIFT
(byte) KEY_RSHIFT#0
(byte[]) MENU_COLS
@@ -3973,37 +4604,32 @@ SYMBOL TABLE SSA
(boolean~) form_control::$1
(boolean~) form_control::$10
(boolean~) form_control::$11
-(boolean~) form_control::$12
+(byte~) form_control::$12
(byte~) form_control::$13
-(byte~) form_control::$14
+(boolean~) form_control::$14
(boolean~) form_control::$15
(boolean~) form_control::$16
(boolean~) form_control::$17
(boolean~) form_control::$18
(boolean~) form_control::$19
(boolean~) form_control::$2
-(boolean~) form_control::$20
-(byte/signed word/word/dword/signed dword~) form_control::$21
-(signed word/signed byte/signed dword~) form_control::$22
-(byte~) form_control::$23
-(boolean~) form_control::$24
+(byte/signed word/word/dword/signed dword~) form_control::$20
+(signed word/signed byte/signed dword~) form_control::$21
+(boolean~) form_control::$22
+(boolean~) form_control::$23
+(byte~) form_control::$24
(boolean~) form_control::$25
(boolean~) form_control::$26
(boolean~) form_control::$27
-(byte~) form_control::$28
+(boolean~) form_control::$28
(boolean~) form_control::$29
(signed word/signed byte/signed dword~) form_control::$3
(boolean~) form_control::$30
-(boolean~) form_control::$31
-(boolean~) form_control::$32
-(boolean~) form_control::$33
-(boolean~) form_control::$34
(boolean~) form_control::$4
(boolean~) form_control::$5
(byte/word/dword~) form_control::$6
(byte~) form_control::$7
-(byte~) form_control::$8
-(boolean~) form_control::$9
+(byte~) form_control::$9
(label) form_control::@1
(label) form_control::@10
(label) form_control::@11
@@ -4011,25 +4637,19 @@ SYMBOL TABLE SSA
(label) form_control::@13
(label) form_control::@14
(label) form_control::@15
-(label) form_control::@16
(label) form_control::@17
+(label) form_control::@18
(label) form_control::@19
(label) form_control::@2
-(label) form_control::@20
(label) form_control::@21
-(label) form_control::@22
+(label) form_control::@23
(label) form_control::@24
-(label) form_control::@26
+(label) form_control::@25
(label) form_control::@27
(label) form_control::@28
(label) form_control::@29
(label) form_control::@3
-(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::@30
(label) form_control::@4
(label) form_control::@5
(label) form_control::@6
@@ -4048,11 +4668,7 @@ SYMBOL TABLE SSA
(byte*) form_control::field#15
(byte*) form_control::field#16
(byte*) form_control::field#17
-(byte*) form_control::field#18
-(byte*) form_control::field#19
(byte*) form_control::field#2
-(byte*) form_control::field#20
-(byte*) form_control::field#21
(byte*) form_control::field#3
(byte*) form_control::field#4
(byte*) form_control::field#5
@@ -4060,12 +4676,9 @@ SYMBOL TABLE SSA
(byte*) form_control::field#7
(byte*) form_control::field#8
(byte*) form_control::field#9
-(byte) form_control::key_down
-(byte) form_control::key_down#0
-(byte) form_control::key_down#1
-(byte) form_control::key_right
-(byte) form_control::key_right#0
-(byte) form_control::key_right#1
+(byte) form_control::key_event
+(byte) form_control::key_event#0
+(byte) form_control::key_event#1
(signed byte) form_cursor_count
(signed byte) form_cursor_count#0
(signed byte) form_cursor_count#1
@@ -4117,11 +4730,6 @@ SYMBOL TABLE SSA
(signed byte) form_cursor_count#51
(signed byte) form_cursor_count#52
(signed byte) form_cursor_count#53
-(signed byte) form_cursor_count#54
-(signed byte) form_cursor_count#55
-(signed byte) form_cursor_count#56
-(signed byte) form_cursor_count#57
-(signed byte) form_cursor_count#58
(signed byte) form_cursor_count#6
(signed byte) form_cursor_count#7
(signed byte) form_cursor_count#8
@@ -4186,12 +4794,6 @@ SYMBOL TABLE SSA
(byte) form_field_idx#6
(byte) form_field_idx#60
(byte) form_field_idx#61
-(byte) form_field_idx#62
-(byte) form_field_idx#63
-(byte) form_field_idx#64
-(byte) form_field_idx#65
-(byte) form_field_idx#66
-(byte) form_field_idx#67
(byte) form_field_idx#7
(byte) form_field_idx#8
(byte) form_field_idx#9
@@ -4253,7 +4855,6 @@ SYMBOL TABLE SSA
(byte) form_fields_cnt#36
(byte) form_fields_cnt#37
(byte) form_fields_cnt#38
-(byte) form_fields_cnt#39
(byte) form_fields_cnt#4
(byte) form_fields_cnt#5
(byte) form_fields_cnt#6
@@ -4303,172 +4904,266 @@ SYMBOL TABLE SSA
(byte) form_set_screen::y#0
(byte) form_set_screen::y#1
(byte) form_set_screen::y#2
-(byte) key_down_debounce
-(byte) key_down_debounce#0
-(byte) key_down_debounce#1
-(byte) key_down_debounce#10
-(byte) key_down_debounce#11
-(byte) key_down_debounce#12
-(byte) key_down_debounce#13
-(byte) key_down_debounce#14
-(byte) key_down_debounce#15
-(byte) key_down_debounce#16
-(byte) key_down_debounce#17
-(byte) key_down_debounce#18
-(byte) key_down_debounce#19
-(byte) key_down_debounce#2
-(byte) key_down_debounce#20
-(byte) key_down_debounce#21
-(byte) key_down_debounce#22
-(byte) key_down_debounce#23
-(byte) key_down_debounce#24
-(byte) key_down_debounce#25
-(byte) key_down_debounce#26
-(byte) key_down_debounce#27
-(byte) key_down_debounce#28
-(byte) key_down_debounce#29
-(byte) key_down_debounce#3
-(byte) key_down_debounce#30
-(byte) key_down_debounce#31
-(byte) key_down_debounce#32
-(byte) key_down_debounce#33
-(byte) key_down_debounce#34
-(byte) key_down_debounce#35
-(byte) key_down_debounce#36
-(byte) key_down_debounce#37
-(byte) key_down_debounce#38
-(byte) key_down_debounce#39
-(byte) key_down_debounce#4
-(byte) key_down_debounce#40
-(byte) key_down_debounce#41
-(byte) key_down_debounce#42
-(byte) key_down_debounce#43
-(byte) key_down_debounce#44
-(byte) key_down_debounce#45
-(byte) key_down_debounce#46
-(byte) key_down_debounce#47
-(byte) key_down_debounce#48
-(byte) key_down_debounce#49
-(byte) key_down_debounce#5
-(byte) key_down_debounce#50
-(byte) key_down_debounce#51
-(byte) key_down_debounce#52
-(byte) key_down_debounce#53
-(byte) key_down_debounce#54
-(byte) key_down_debounce#55
-(byte) key_down_debounce#56
-(byte) key_down_debounce#57
-(byte) key_down_debounce#58
-(byte) key_down_debounce#59
-(byte) key_down_debounce#6
-(byte) key_down_debounce#60
-(byte) key_down_debounce#61
-(byte) key_down_debounce#62
-(byte) key_down_debounce#63
-(byte) key_down_debounce#64
-(byte) key_down_debounce#65
-(byte) key_down_debounce#7
-(byte) key_down_debounce#8
-(byte) key_down_debounce#9
-(byte) key_right_debounce
-(byte) key_right_debounce#0
-(byte) key_right_debounce#1
-(byte) key_right_debounce#10
-(byte) key_right_debounce#11
-(byte) key_right_debounce#12
-(byte) key_right_debounce#13
-(byte) key_right_debounce#14
-(byte) key_right_debounce#15
-(byte) key_right_debounce#16
-(byte) key_right_debounce#17
-(byte) key_right_debounce#18
-(byte) key_right_debounce#19
-(byte) key_right_debounce#2
-(byte) key_right_debounce#20
-(byte) key_right_debounce#21
-(byte) key_right_debounce#22
-(byte) key_right_debounce#23
-(byte) key_right_debounce#24
-(byte) key_right_debounce#25
-(byte) key_right_debounce#26
-(byte) key_right_debounce#27
-(byte) key_right_debounce#28
-(byte) key_right_debounce#29
-(byte) key_right_debounce#3
-(byte) key_right_debounce#30
-(byte) key_right_debounce#31
-(byte) key_right_debounce#32
-(byte) key_right_debounce#33
-(byte) key_right_debounce#34
-(byte) key_right_debounce#35
-(byte) key_right_debounce#36
-(byte) key_right_debounce#37
-(byte) key_right_debounce#38
-(byte) key_right_debounce#39
-(byte) key_right_debounce#4
-(byte) key_right_debounce#40
-(byte) key_right_debounce#41
-(byte) key_right_debounce#42
-(byte) key_right_debounce#43
-(byte) key_right_debounce#44
-(byte) key_right_debounce#45
-(byte) key_right_debounce#46
-(byte) key_right_debounce#47
-(byte) key_right_debounce#48
-(byte) key_right_debounce#49
-(byte) key_right_debounce#5
-(byte) key_right_debounce#50
-(byte) key_right_debounce#51
-(byte) key_right_debounce#52
-(byte) key_right_debounce#53
-(byte) key_right_debounce#54
-(byte) key_right_debounce#55
-(byte) key_right_debounce#56
-(byte) key_right_debounce#57
-(byte) key_right_debounce#58
-(byte) key_right_debounce#59
-(byte) key_right_debounce#6
-(byte) key_right_debounce#60
-(byte) key_right_debounce#61
-(byte) key_right_debounce#62
-(byte) key_right_debounce#63
-(byte) key_right_debounce#64
-(byte) key_right_debounce#65
-(byte) key_right_debounce#7
-(byte) key_right_debounce#8
-(byte) key_right_debounce#9
-(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
-(byte~) keyboard_key_pressed::$0
-(byte~) keyboard_key_pressed::$1
-(byte~) keyboard_key_pressed::$2
-(byte~) keyboard_key_pressed::$3
-(label) keyboard_key_pressed::@2
-(label) keyboard_key_pressed::@return
-(byte) keyboard_key_pressed::colidx
-(byte) keyboard_key_pressed::colidx#0
-(byte) keyboard_key_pressed::colidx#1
-(byte) keyboard_key_pressed::key
-(byte) keyboard_key_pressed::key#0
-(byte) keyboard_key_pressed::key#1
-(byte) keyboard_key_pressed::key#2
-(byte) keyboard_key_pressed::key#3
-(byte) keyboard_key_pressed::key#4
-(byte) keyboard_key_pressed::return
-(byte) keyboard_key_pressed::return#0
-(byte) keyboard_key_pressed::return#1
-(byte) keyboard_key_pressed::return#10
-(byte) keyboard_key_pressed::return#2
-(byte) keyboard_key_pressed::return#3
-(byte) keyboard_key_pressed::return#4
-(byte) keyboard_key_pressed::return#5
-(byte) keyboard_key_pressed::return#6
-(byte) keyboard_key_pressed::return#7
-(byte) keyboard_key_pressed::return#8
-(byte) keyboard_key_pressed::return#9
-(byte) keyboard_key_pressed::rowidx
-(byte) keyboard_key_pressed::rowidx#0
-(byte[]) keyboard_matrix_col_bitmask
-(byte[]) keyboard_matrix_col_bitmask#0
+(byte()) keyboard_event_get()
+(boolean~) keyboard_event_get::$0
+(boolean~) keyboard_event_get::$1
+(label) keyboard_event_get::@1
+(label) keyboard_event_get::@3
+(label) keyboard_event_get::@return
+(byte) keyboard_event_get::return
+(byte) keyboard_event_get::return#0
+(byte) keyboard_event_get::return#1
+(byte) keyboard_event_get::return#2
+(byte) keyboard_event_get::return#3
+(byte) keyboard_event_get::return#4
+(byte) keyboard_event_get::return#5
+(byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
+(byte~) keyboard_event_pressed::$0
+(byte~) keyboard_event_pressed::$1
+(byte~) keyboard_event_pressed::$2
+(label) keyboard_event_pressed::@return
+(byte) keyboard_event_pressed::keycode
+(byte) keyboard_event_pressed::keycode#0
+(byte) keyboard_event_pressed::keycode#1
+(byte) keyboard_event_pressed::keycode#2
+(byte) keyboard_event_pressed::keycode#3
+(byte) keyboard_event_pressed::keycode#4
+(byte) keyboard_event_pressed::return
+(byte) keyboard_event_pressed::return#0
+(byte) keyboard_event_pressed::return#1
+(byte) keyboard_event_pressed::return#10
+(byte) keyboard_event_pressed::return#2
+(byte) keyboard_event_pressed::return#3
+(byte) keyboard_event_pressed::return#4
+(byte) keyboard_event_pressed::return#5
+(byte) keyboard_event_pressed::return#6
+(byte) keyboard_event_pressed::return#7
+(byte) keyboard_event_pressed::return#8
+(byte) keyboard_event_pressed::return#9
+(byte) keyboard_event_pressed::row_bits
+(byte) keyboard_event_pressed::row_bits#0
+(void()) keyboard_event_scan()
+(byte~) keyboard_event_scan::$0
+(boolean~) keyboard_event_scan::$1
+(boolean~) keyboard_event_scan::$10
+(boolean~) keyboard_event_scan::$11
+(byte/word/dword~) keyboard_event_scan::$12
+(boolean~) keyboard_event_scan::$13
+(byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+(boolean~) keyboard_event_scan::$15
+(byte~) keyboard_event_scan::$16
+(boolean~) keyboard_event_scan::$17
+(boolean~) keyboard_event_scan::$18
+(byte~) keyboard_event_scan::$19
+(boolean~) keyboard_event_scan::$2
+(byte~) keyboard_event_scan::$20
+(boolean~) keyboard_event_scan::$21
+(boolean~) keyboard_event_scan::$22
+(byte~) keyboard_event_scan::$23
+(byte~) keyboard_event_scan::$24
+(boolean~) keyboard_event_scan::$25
+(boolean~) keyboard_event_scan::$26
+(byte~) keyboard_event_scan::$27
+(byte~) keyboard_event_scan::$28
+(boolean~) keyboard_event_scan::$29
+(byte~) keyboard_event_scan::$3
+(boolean~) keyboard_event_scan::$30
+(byte~) keyboard_event_scan::$31
+(byte~) keyboard_event_scan::$4
+(boolean~) keyboard_event_scan::$5
+(boolean~) keyboard_event_scan::$6
+(boolean~) keyboard_event_scan::$7
+(boolean~) keyboard_event_scan::$8
+(byte~) keyboard_event_scan::$9
+(label) keyboard_event_scan::@1
+(label) keyboard_event_scan::@10
+(label) keyboard_event_scan::@11
+(label) keyboard_event_scan::@12
+(label) keyboard_event_scan::@13
+(label) keyboard_event_scan::@14
+(label) keyboard_event_scan::@15
+(label) keyboard_event_scan::@16
+(label) keyboard_event_scan::@18
+(label) keyboard_event_scan::@2
+(label) keyboard_event_scan::@20
+(label) keyboard_event_scan::@21
+(label) keyboard_event_scan::@22
+(label) keyboard_event_scan::@23
+(label) keyboard_event_scan::@24
+(label) keyboard_event_scan::@25
+(label) keyboard_event_scan::@26
+(label) keyboard_event_scan::@27
+(label) keyboard_event_scan::@28
+(label) keyboard_event_scan::@29
+(label) keyboard_event_scan::@3
+(label) keyboard_event_scan::@4
+(label) keyboard_event_scan::@5
+(label) keyboard_event_scan::@6
+(label) keyboard_event_scan::@8
+(label) keyboard_event_scan::@9
+(label) keyboard_event_scan::@return
+(byte) keyboard_event_scan::col
+(byte) keyboard_event_scan::col#0
+(byte) keyboard_event_scan::col#1
+(byte) keyboard_event_scan::col#2
+(byte) keyboard_event_scan::col#3
+(byte) keyboard_event_scan::col#4
+(byte) keyboard_event_scan::col#5
+(byte) keyboard_event_scan::col#6
+(byte) keyboard_event_scan::col#7
+(byte) keyboard_event_scan::col#8
+(byte) keyboard_event_scan::event_type
+(byte) keyboard_event_scan::event_type#0
+(byte) keyboard_event_scan::keycode
+(byte) keyboard_event_scan::keycode#0
+(byte) keyboard_event_scan::keycode#1
+(byte) keyboard_event_scan::keycode#10
+(byte) keyboard_event_scan::keycode#11
+(byte) keyboard_event_scan::keycode#12
+(byte) keyboard_event_scan::keycode#13
+(byte) keyboard_event_scan::keycode#14
+(byte) keyboard_event_scan::keycode#15
+(byte) keyboard_event_scan::keycode#2
+(byte) keyboard_event_scan::keycode#3
+(byte) keyboard_event_scan::keycode#4
+(byte) keyboard_event_scan::keycode#5
+(byte) keyboard_event_scan::keycode#6
+(byte) keyboard_event_scan::keycode#7
+(byte) keyboard_event_scan::keycode#8
+(byte) keyboard_event_scan::keycode#9
+(byte) keyboard_event_scan::row
+(byte) keyboard_event_scan::row#0
+(byte) keyboard_event_scan::row#1
+(byte) keyboard_event_scan::row#10
+(byte) keyboard_event_scan::row#11
+(byte) keyboard_event_scan::row#12
+(byte) keyboard_event_scan::row#13
+(byte) keyboard_event_scan::row#14
+(byte) keyboard_event_scan::row#2
+(byte) keyboard_event_scan::row#3
+(byte) keyboard_event_scan::row#4
+(byte) keyboard_event_scan::row#5
+(byte) keyboard_event_scan::row#6
+(byte) keyboard_event_scan::row#7
+(byte) keyboard_event_scan::row#8
+(byte) keyboard_event_scan::row#9
+(byte) keyboard_event_scan::row_scan
+(byte) keyboard_event_scan::row_scan#0
+(byte) keyboard_event_scan::row_scan#1
+(byte) keyboard_event_scan::row_scan#2
+(byte) keyboard_event_scan::row_scan#3
+(byte) keyboard_event_scan::row_scan#4
+(byte) keyboard_event_scan::row_scan#5
+(byte) keyboard_event_scan::row_scan#6
+(byte) keyboard_event_scan::row_scan#7
+(byte) keyboard_event_scan::row_scan#8
+(byte) keyboard_event_scan::row_scan#9
+(byte[8]) keyboard_events
+(byte[8]) keyboard_events#0
+(byte) keyboard_events_size
+(byte) keyboard_events_size#0
+(byte) keyboard_events_size#1
+(byte) keyboard_events_size#10
+(byte) keyboard_events_size#100
+(byte) keyboard_events_size#11
+(byte) keyboard_events_size#12
+(byte) keyboard_events_size#13
+(byte) keyboard_events_size#14
+(byte) keyboard_events_size#15
+(byte) keyboard_events_size#16
+(byte) keyboard_events_size#17
+(byte) keyboard_events_size#18
+(byte) keyboard_events_size#19
+(byte) keyboard_events_size#2
+(byte) keyboard_events_size#20
+(byte) keyboard_events_size#21
+(byte) keyboard_events_size#22
+(byte) keyboard_events_size#23
+(byte) keyboard_events_size#24
+(byte) keyboard_events_size#25
+(byte) keyboard_events_size#26
+(byte) keyboard_events_size#27
+(byte) keyboard_events_size#28
+(byte) keyboard_events_size#29
+(byte) keyboard_events_size#3
+(byte) keyboard_events_size#30
+(byte) keyboard_events_size#31
+(byte) keyboard_events_size#32
+(byte) keyboard_events_size#33
+(byte) keyboard_events_size#34
+(byte) keyboard_events_size#35
+(byte) keyboard_events_size#36
+(byte) keyboard_events_size#37
+(byte) keyboard_events_size#38
+(byte) keyboard_events_size#39
+(byte) keyboard_events_size#4
+(byte) keyboard_events_size#40
+(byte) keyboard_events_size#41
+(byte) keyboard_events_size#42
+(byte) keyboard_events_size#43
+(byte) keyboard_events_size#44
+(byte) keyboard_events_size#45
+(byte) keyboard_events_size#46
+(byte) keyboard_events_size#47
+(byte) keyboard_events_size#48
+(byte) keyboard_events_size#49
+(byte) keyboard_events_size#5
+(byte) keyboard_events_size#50
+(byte) keyboard_events_size#51
+(byte) keyboard_events_size#52
+(byte) keyboard_events_size#53
+(byte) keyboard_events_size#54
+(byte) keyboard_events_size#55
+(byte) keyboard_events_size#56
+(byte) keyboard_events_size#57
+(byte) keyboard_events_size#58
+(byte) keyboard_events_size#59
+(byte) keyboard_events_size#6
+(byte) keyboard_events_size#60
+(byte) keyboard_events_size#61
+(byte) keyboard_events_size#62
+(byte) keyboard_events_size#63
+(byte) keyboard_events_size#64
+(byte) keyboard_events_size#65
+(byte) keyboard_events_size#66
+(byte) keyboard_events_size#67
+(byte) keyboard_events_size#68
+(byte) keyboard_events_size#69
+(byte) keyboard_events_size#7
+(byte) keyboard_events_size#70
+(byte) keyboard_events_size#71
+(byte) keyboard_events_size#72
+(byte) keyboard_events_size#73
+(byte) keyboard_events_size#74
+(byte) keyboard_events_size#75
+(byte) keyboard_events_size#76
+(byte) keyboard_events_size#77
+(byte) keyboard_events_size#78
+(byte) keyboard_events_size#79
+(byte) keyboard_events_size#8
+(byte) keyboard_events_size#80
+(byte) keyboard_events_size#81
+(byte) keyboard_events_size#82
+(byte) keyboard_events_size#83
+(byte) keyboard_events_size#84
+(byte) keyboard_events_size#85
+(byte) keyboard_events_size#86
+(byte) keyboard_events_size#87
+(byte) keyboard_events_size#88
+(byte) keyboard_events_size#89
+(byte) keyboard_events_size#9
+(byte) keyboard_events_size#90
+(byte) keyboard_events_size#91
+(byte) keyboard_events_size#92
+(byte) keyboard_events_size#93
+(byte) keyboard_events_size#94
+(byte) keyboard_events_size#95
+(byte) keyboard_events_size#96
+(byte) keyboard_events_size#97
+(byte) keyboard_events_size#98
+(byte) keyboard_events_size#99
+(byte[8]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask#0
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -4485,6 +5180,91 @@ SYMBOL TABLE SSA
(byte) keyboard_matrix_read::rowid#1
(byte[8]) keyboard_matrix_row_bitmask
(byte[8]) keyboard_matrix_row_bitmask#0
+(byte) keyboard_modifiers
+(byte) keyboard_modifiers#0
+(byte) keyboard_modifiers#1
+(byte) keyboard_modifiers#10
+(byte) keyboard_modifiers#11
+(byte) keyboard_modifiers#12
+(byte) keyboard_modifiers#13
+(byte) keyboard_modifiers#14
+(byte) keyboard_modifiers#15
+(byte) keyboard_modifiers#16
+(byte) keyboard_modifiers#17
+(byte) keyboard_modifiers#18
+(byte) keyboard_modifiers#19
+(byte) keyboard_modifiers#2
+(byte) keyboard_modifiers#20
+(byte) keyboard_modifiers#21
+(byte) keyboard_modifiers#22
+(byte) keyboard_modifiers#23
+(byte) keyboard_modifiers#24
+(byte) keyboard_modifiers#25
+(byte) keyboard_modifiers#26
+(byte) keyboard_modifiers#27
+(byte) keyboard_modifiers#28
+(byte) keyboard_modifiers#29
+(byte) keyboard_modifiers#3
+(byte) keyboard_modifiers#30
+(byte) keyboard_modifiers#31
+(byte) keyboard_modifiers#32
+(byte) keyboard_modifiers#33
+(byte) keyboard_modifiers#34
+(byte) keyboard_modifiers#35
+(byte) keyboard_modifiers#36
+(byte) keyboard_modifiers#37
+(byte) keyboard_modifiers#38
+(byte) keyboard_modifiers#39
+(byte) keyboard_modifiers#4
+(byte) keyboard_modifiers#40
+(byte) keyboard_modifiers#41
+(byte) keyboard_modifiers#42
+(byte) keyboard_modifiers#43
+(byte) keyboard_modifiers#44
+(byte) keyboard_modifiers#45
+(byte) keyboard_modifiers#46
+(byte) keyboard_modifiers#47
+(byte) keyboard_modifiers#48
+(byte) keyboard_modifiers#49
+(byte) keyboard_modifiers#5
+(byte) keyboard_modifiers#50
+(byte) keyboard_modifiers#51
+(byte) keyboard_modifiers#52
+(byte) keyboard_modifiers#53
+(byte) keyboard_modifiers#54
+(byte) keyboard_modifiers#55
+(byte) keyboard_modifiers#56
+(byte) keyboard_modifiers#57
+(byte) keyboard_modifiers#58
+(byte) keyboard_modifiers#59
+(byte) keyboard_modifiers#6
+(byte) keyboard_modifiers#60
+(byte) keyboard_modifiers#61
+(byte) keyboard_modifiers#62
+(byte) keyboard_modifiers#63
+(byte) keyboard_modifiers#64
+(byte) keyboard_modifiers#65
+(byte) keyboard_modifiers#66
+(byte) keyboard_modifiers#67
+(byte) keyboard_modifiers#68
+(byte) keyboard_modifiers#69
+(byte) keyboard_modifiers#7
+(byte) keyboard_modifiers#70
+(byte) keyboard_modifiers#71
+(byte) keyboard_modifiers#72
+(byte) keyboard_modifiers#73
+(byte) keyboard_modifiers#74
+(byte) keyboard_modifiers#75
+(byte) keyboard_modifiers#76
+(byte) keyboard_modifiers#77
+(byte) keyboard_modifiers#78
+(byte) keyboard_modifiers#79
+(byte) keyboard_modifiers#8
+(byte) keyboard_modifiers#80
+(byte) keyboard_modifiers#81
+(byte) keyboard_modifiers#9
+(byte[8]) keyboard_scan_values
+(byte[8]) keyboard_scan_values#0
(void()) main()
(label) main::@1
(label) main::@2
@@ -4602,6 +5382,7 @@ SYMBOL TABLE SSA
(byte*) print_char_cursor#60
(byte*) print_char_cursor#61
(byte*) print_char_cursor#62
+(byte*) print_char_cursor#63
(byte*) print_char_cursor#7
(byte*) print_char_cursor#8
(byte*) print_char_cursor#9
@@ -4678,6 +5459,7 @@ SYMBOL TABLE SSA
(byte*) print_line_cursor#60
(byte*) print_line_cursor#61
(byte*) print_line_cursor#62
+(byte*) print_line_cursor#63
(byte*) print_line_cursor#7
(byte*) print_line_cursor#8
(byte*) print_line_cursor#9
@@ -4725,6 +5507,7 @@ SYMBOL TABLE SSA
(byte*) print_screen#4
(byte*) print_screen#40
(byte*) print_screen#41
+(byte*) print_screen#42
(byte*) print_screen#5
(byte*) print_screen#6
(byte*) print_screen#7
@@ -4768,18 +5551,25 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Inversing boolean not (boolean~) print_str_lines::$2 ← (byte) print_str_lines::ch#0 == (byte) '@' from (boolean~) print_str_lines::$1 ← (byte) print_str_lines::ch#0 != (byte) '@'
+Inversing boolean not (boolean~) keyboard_event_scan::$2 ← (byte) keyboard_event_scan::row_scan#0 == *((byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#3) from (boolean~) keyboard_event_scan::$1 ← (byte) keyboard_event_scan::row_scan#0 != *((byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#3)
+Inversing boolean not (boolean~) keyboard_event_scan::$6 ← (byte~) keyboard_event_scan::$4 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+Inversing boolean not (boolean~) keyboard_event_scan::$8 ← (byte) keyboard_events_size#14 == (byte/signed byte/word/signed word/dword/signed dword) 8 from (boolean~) keyboard_event_scan::$7 ← (byte) keyboard_events_size#14 != (byte/signed byte/word/signed word/dword/signed dword) 8
+Inversing boolean not (boolean~) keyboard_event_scan::$11 ← (byte) keyboard_event_scan::event_type#0 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) keyboard_event_scan::$10 ← (byte) keyboard_event_scan::event_type#0 == (byte/signed byte/word/signed word/dword/signed dword) 0
+Inversing boolean not (boolean~) keyboard_event_scan::$18 ← (byte~) keyboard_event_scan::$16 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte/signed byte/word/signed word/dword/signed dword) 0
+Inversing boolean not (boolean~) keyboard_event_scan::$22 ← (byte~) keyboard_event_scan::$20 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) keyboard_event_scan::$21 ← (byte~) keyboard_event_scan::$20 != (byte/signed byte/word/signed word/dword/signed dword) 0
+Inversing boolean not (boolean~) keyboard_event_scan::$26 ← (byte~) keyboard_event_scan::$24 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) keyboard_event_scan::$25 ← (byte~) keyboard_event_scan::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
+Inversing boolean not (boolean~) keyboard_event_scan::$30 ← (byte~) keyboard_event_scan::$28 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) keyboard_event_scan::$29 ← (byte~) keyboard_event_scan::$28 != (byte/signed byte/word/signed word/dword/signed dword) 0
+Inversing boolean not (boolean~) keyboard_event_get::$1 ← (byte) keyboard_events_size#18 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) keyboard_event_get::$0 ← (byte) keyboard_events_size#18 == (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (boolean~) form_control::$2 ← (signed byte) form_cursor_count#5 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) form_control::$1 ← (signed byte) form_cursor_count#5 < (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (boolean~) form_control::$5 ← (signed byte) form_cursor_count#15 >= (signed word/signed byte/signed dword~) form_control::$3 from (boolean~) form_control::$4 ← (signed byte) form_cursor_count#15 < (signed word/signed byte/signed dword~) form_control::$3
-Inversing boolean not (boolean~) form_control::$10 ← (byte) form_control::key_down#0 == (byte) key_down_debounce#12 from (boolean~) form_control::$9 ← (byte) form_control::key_down#0 != (byte) key_down_debounce#12
-Inversing boolean not (boolean~) form_control::$25 ← (byte) form_control::key_right#0 == (byte) key_right_debounce#12 from (boolean~) form_control::$24 ← (byte) form_control::key_right#0 != (byte) key_right_debounce#12
-Inversing boolean not (boolean~) form_control::$12 ← (byte) form_control::key_down#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) form_control::$11 ← (byte) form_control::key_down#1 != (byte/signed byte/word/signed word/dword/signed dword) 0
-Inversing boolean not (boolean~) form_control::$16 ← (byte~) form_control::$14 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) form_control::$15 ← (byte~) form_control::$14 == (byte/signed byte/word/signed word/dword/signed dword) 0
-Inversing boolean not (boolean~) form_control::$20 ← (byte) form_field_idx#5 != (byte/word/signed word/dword/signed dword) 255 from (boolean~) form_control::$19 ← (byte) form_field_idx#5 == (byte/word/signed word/dword/signed dword) 255
-Inversing boolean not (boolean~) form_control::$18 ← (byte) form_field_idx#6 != (byte) form_fields_cnt#2 from (boolean~) form_control::$17 ← (byte) form_field_idx#6 == (byte) form_fields_cnt#2
-Inversing boolean not (boolean~) form_control::$27 ← (byte) form_control::key_right#1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) form_control::$26 ← (byte) form_control::key_right#1 != (byte/signed byte/word/signed word/dword/signed dword) 0
-Inversing boolean not (boolean~) form_control::$30 ← (byte~) form_control::$28 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) form_control::$29 ← (byte~) form_control::$28 == (byte/signed byte/word/signed word/dword/signed dword) 0
-Inversing boolean not (boolean~) form_control::$34 ← *((byte[]) form_fields_val#0 + (byte) form_field_idx#19) != (byte/word/signed word/dword/signed dword) 255 from (boolean~) form_control::$33 ← *((byte[]) form_fields_val#0 + (byte) form_field_idx#19) == (byte/word/signed word/dword/signed dword) 255
-Inversing boolean not (boolean~) form_control::$32 ← *((byte[]) form_fields_val#0 + (byte) form_field_idx#20) <= *((byte[]) form_fields_max#0 + (byte) form_field_idx#20) from (boolean~) form_control::$31 ← *((byte[]) form_fields_val#0 + (byte) form_field_idx#20) > *((byte[]) form_fields_max#0 + (byte) form_field_idx#20)
+Inversing boolean not (boolean~) form_control::$11 ← (byte) form_control::key_event#0 != (byte) KEY_CRSR_DOWN#0 from (boolean~) form_control::$10 ← (byte) form_control::key_event#0 == (byte) KEY_CRSR_DOWN#0
+Inversing boolean not (boolean~) form_control::$23 ← (byte) form_control::key_event#1 != (byte) KEY_CRSR_RIGHT#0 from (boolean~) form_control::$22 ← (byte) form_control::key_event#1 == (byte) KEY_CRSR_RIGHT#0
+Inversing boolean not (boolean~) form_control::$15 ← (byte~) form_control::$13 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) form_control::$14 ← (byte~) form_control::$13 == (byte/signed byte/word/signed word/dword/signed dword) 0
+Inversing boolean not (boolean~) form_control::$19 ← (byte) form_field_idx#5 != (byte/word/signed word/dword/signed dword) 255 from (boolean~) form_control::$18 ← (byte) form_field_idx#5 == (byte/word/signed word/dword/signed dword) 255
+Inversing boolean not (boolean~) form_control::$17 ← (byte) form_field_idx#6 != (byte) form_fields_cnt#2 from (boolean~) form_control::$16 ← (byte) form_field_idx#6 == (byte) form_fields_cnt#2
+Inversing boolean not (boolean~) form_control::$26 ← (byte~) form_control::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) form_control::$25 ← (byte~) form_control::$24 == (byte/signed byte/word/signed word/dword/signed dword) 0
+Inversing boolean not (boolean~) form_control::$30 ← *((byte[]) form_fields_val#0 + (byte) form_field_idx#19) != (byte/word/signed word/dword/signed dword) 255 from (boolean~) form_control::$29 ← *((byte[]) form_fields_val#0 + (byte) form_field_idx#19) == (byte/word/signed word/dword/signed dword) 255
+Inversing boolean not (boolean~) form_control::$28 ← *((byte[]) form_fields_val#0 + (byte) form_field_idx#20) <= *((byte[]) form_fields_max#0 + (byte) form_field_idx#20) from (boolean~) form_control::$27 ← *((byte[]) form_fields_val#0 + (byte) form_field_idx#20) > *((byte[]) form_fields_max#0 + (byte) form_field_idx#20)
Succesful SSA optimization Pass2UnaryNotSimplification
Not aliassing across scopes: print_str_lines::str#5 print_str_lines::str#1
Not aliassing across scopes: print_char_cursor#46 print_char_cursor#13
@@ -4793,33 +5583,47 @@ Not aliassing across scopes: print_cls::sc#0 print_screen#9
Not aliassing across scopes: print_set_screen::screen#2 print_set_screen::screen#1
Not aliassing across scopes: print_screen#1 print_set_screen::screen#2
Not aliassing across scopes: keyboard_matrix_read::rowid#1 keyboard_matrix_read::rowid#0
-Not aliassing across scopes: keyboard_key_pressed::key#4 keyboard_key_pressed::key#2
-Not aliassing across scopes: keyboard_matrix_read::rowid#0 keyboard_key_pressed::rowidx#0
+Not aliassing across scopes: keyboard_events_size#81 keyboard_events_size#38
+Not aliassing across scopes: keyboard_matrix_read::rowid#0 keyboard_event_scan::row#2
Not aliassing across scopes: keyboard_matrix_read::return#2 keyboard_matrix_read::return#1
-Not aliassing across scopes: keyboard_key_pressed::$2 keyboard_matrix_read::return#4
+Not aliassing across scopes: keyboard_event_scan::$0 keyboard_matrix_read::return#4
+Not aliassing across scopes: keyboard_event_pressed::keycode#0 KEY_LSHIFT#0
+Not aliassing across scopes: keyboard_event_pressed::return#0 keyboard_event_pressed::return#5
+Not aliassing across scopes: keyboard_event_scan::$16 keyboard_event_pressed::return#6
+Not aliassing across scopes: keyboard_event_pressed::keycode#1 KEY_RSHIFT#0
+Not aliassing across scopes: keyboard_event_pressed::return#1 keyboard_event_pressed::return#5
+Not aliassing across scopes: keyboard_event_scan::$20 keyboard_event_pressed::return#7
+Not aliassing across scopes: keyboard_event_pressed::keycode#2 KEY_CTRL#0
+Not aliassing across scopes: keyboard_event_pressed::return#2 keyboard_event_pressed::return#5
+Not aliassing across scopes: keyboard_event_scan::$24 keyboard_event_pressed::return#8
+Not aliassing across scopes: keyboard_event_pressed::keycode#3 KEY_COMMODORE#0
+Not aliassing across scopes: keyboard_event_pressed::return#3 keyboard_event_pressed::return#5
+Not aliassing across scopes: keyboard_event_scan::$28 keyboard_event_pressed::return#9
+Not aliassing across scopes: keyboard_event_pressed::keycode#4 keyboard_event_pressed::keycode#2
+Not aliassing across scopes: keyboard_events_size#18 keyboard_events_size#10
Not aliassing across scopes: print_screen#25 print_screen#24
Not aliassing across scopes: print_line_cursor#46 print_line_cursor#43
Not aliassing across scopes: print_char_cursor#49 print_char_cursor#45
-Not aliassing across scopes: form_cursor_count#27 form_cursor_count#26
-Not aliassing across scopes: key_down_debounce#25 key_down_debounce#24
-Not aliassing across scopes: form_field_idx#37 form_field_idx#36
-Not aliassing across scopes: key_right_debounce#25 key_right_debounce#24
-Not aliassing across scopes: form_fields_cnt#37 form_fields_cnt#39
+Not aliassing across scopes: form_cursor_count#26 form_cursor_count#25
+Not aliassing across scopes: keyboard_events_size#46 keyboard_events_size#42
+Not aliassing across scopes: keyboard_modifiers#47 keyboard_modifiers#43
+Not aliassing across scopes: form_field_idx#36 form_field_idx#35
+Not aliassing across scopes: form_fields_cnt#36 form_fields_cnt#38
Not aliassing across scopes: print_screen#13 print_screen#7
Not aliassing across scopes: print_line_cursor#26 print_line_cursor#17
Not aliassing across scopes: print_char_cursor#27 print_char_cursor#18
Not aliassing across scopes: form_cursor_count#10 form_cursor_count#3
-Not aliassing across scopes: key_down_debounce#8 key_down_debounce#3
+Not aliassing across scopes: keyboard_events_size#21 keyboard_events_size#9
+Not aliassing across scopes: keyboard_modifiers#19 keyboard_modifiers#10
Not aliassing across scopes: form_field_idx#11 form_field_idx#3
-Not aliassing across scopes: key_right_debounce#8 key_right_debounce#3
Not aliassing across scopes: print_screen#31 print_screen#19
Not aliassing across scopes: print_line_cursor#53 print_line_cursor#39
Not aliassing across scopes: print_char_cursor#54 print_char_cursor#41
-Not aliassing across scopes: form_cursor_count#58 form_cursor_count#18
-Not aliassing across scopes: key_down_debounce#65 key_down_debounce#15
-Not aliassing across scopes: form_field_idx#67 form_field_idx#25
-Not aliassing across scopes: key_right_debounce#65 key_right_debounce#15
-Not aliassing across scopes: form_fields_cnt#29 form_fields_cnt#32
+Not aliassing across scopes: form_cursor_count#53 form_cursor_count#18
+Not aliassing across scopes: keyboard_events_size#100 keyboard_events_size#34
+Not aliassing across scopes: keyboard_modifiers#81 keyboard_modifiers#33
+Not aliassing across scopes: form_field_idx#61 form_field_idx#25
+Not aliassing across scopes: form_fields_cnt#30 form_fields_cnt#32
Not aliassing across scopes: print_set_screen::screen#0 COLS#0
Not aliassing across scopes: print_screen#15 print_screen#2
Not aliassing across scopes: print_line_cursor#28 print_line_cursor#8
@@ -4840,9 +5644,9 @@ Not aliassing across scopes: print_char_cursor#34 print_char_cursor#3
Not aliassing across scopes: print_line_cursor#33 print_line_cursor#2
Not aliassing across scopes: form_set_screen::screen#0 menu::SCREEN#0
Not aliassing across scopes: form_cursor_count#12 form_cursor_count#8
-Not aliassing across scopes: key_down_debounce#10 key_down_debounce#6
+Not aliassing across scopes: keyboard_events_size#23 keyboard_events_size#12
+Not aliassing across scopes: keyboard_modifiers#21 keyboard_modifiers#12
Not aliassing across scopes: form_field_idx#13 form_field_idx#9
-Not aliassing across scopes: key_right_debounce#10 key_right_debounce#5
Not aliassing across scopes: form_set_screen::screen#1 form_set_screen::screen#0
Not aliassing across scopes: form_field_ptr::field_idx#2 form_field_ptr::field_idx#1
Not aliassing across scopes: form_fields_cnt#7 form_fields_cnt#9
@@ -4851,35 +5655,26 @@ Not aliassing across scopes: form_field_ptr::return#2 form_field_ptr::return#1
Not aliassing across scopes: form_render_values::$0 form_field_ptr::return#5
Not aliassing across scopes: form_field_idx#15 form_field_idx#27
Not aliassing across scopes: form_cursor_count#22 form_cursor_count#20
-Not aliassing across scopes: key_down_debounce#56 key_down_debounce#17
-Not aliassing across scopes: key_right_debounce#60 key_right_debounce#17
-Not aliassing across scopes: form_fields_cnt#24 form_fields_cnt#26
+Not aliassing across scopes: keyboard_events_size#85 keyboard_events_size#36
+Not aliassing across scopes: keyboard_modifiers#74 keyboard_modifiers#35
+Not aliassing across scopes: form_fields_cnt#22 form_fields_cnt#24
Not aliassing across scopes: form_field_ptr::field_idx#1 form_field_idx#15
Not aliassing across scopes: form_field_ptr::return#3 form_field_ptr::return#1
Not aliassing across scopes: form_control::$0 form_field_ptr::return#6
Not aliassing across scopes: form_cursor_count#6 FORM_CURSOR_BLINK#0
-Not aliassing across scopes: keyboard_key_pressed::key#0 KEY_CRSR_DOWN#0
-Not aliassing across scopes: keyboard_key_pressed::return#2 keyboard_key_pressed::return#1
-Not aliassing across scopes: form_control::$8 keyboard_key_pressed::return#7
-Not aliassing across scopes: keyboard_key_pressed::key#1 KEY_CRSR_RIGHT#0
-Not aliassing across scopes: keyboard_key_pressed::return#3 keyboard_key_pressed::return#1
-Not aliassing across scopes: form_control::$23 keyboard_key_pressed::return#8
-Not aliassing across scopes: key_down_debounce#5 form_control::key_down#1
-Not aliassing across scopes: keyboard_key_pressed::key#2 KEY_RSHIFT#0
-Not aliassing across scopes: keyboard_key_pressed::return#4 keyboard_key_pressed::return#1
-Not aliassing across scopes: form_control::$14 keyboard_key_pressed::return#9
-Not aliassing across scopes: key_right_debounce#6 form_control::key_right#1
-Not aliassing across scopes: keyboard_key_pressed::key#3 KEY_RSHIFT#0
-Not aliassing across scopes: keyboard_key_pressed::return#5 keyboard_key_pressed::return#1
-Not aliassing across scopes: form_control::$28 keyboard_key_pressed::return#10
+Not aliassing across scopes: keyboard_events_size#25 keyboard_events_size#3
+Not aliassing across scopes: keyboard_modifiers#23 keyboard_modifiers#6
+Not aliassing across scopes: keyboard_event_get::return#3 keyboard_event_get::return#2
+Not aliassing across scopes: keyboard_events_size#26 keyboard_events_size#5
+Not aliassing across scopes: form_control::$9 keyboard_event_get::return#5
Not aliassing across scopes: print_screen#18 print_screen#4
Not aliassing across scopes: print_line_cursor#35 print_line_cursor#10
Not aliassing across scopes: print_char_cursor#36 print_char_cursor#11
Not aliassing across scopes: form_cursor_count#17 form_cursor_count#1
-Not aliassing across scopes: key_down_debounce#14 key_down_debounce#1
+Not aliassing across scopes: keyboard_events_size#28 keyboard_events_size#7
+Not aliassing across scopes: keyboard_modifiers#27 keyboard_modifiers#8
Not aliassing across scopes: form_field_idx#24 form_field_idx#1
-Not aliassing across scopes: key_right_debounce#14 key_right_debounce#1
-Alias (byte*) print_screen#0 = (byte*) print_line_cursor#0 (byte*) print_char_cursor#0 (byte*) print_screen#38 (byte*) print_line_cursor#60 (byte*) print_char_cursor#60 (byte*) print_screen#35 (byte*) print_line_cursor#58 (byte*) print_char_cursor#58 (byte*) print_screen#34 (byte*) print_line_cursor#56 (byte*) print_char_cursor#57 (byte*) print_screen#30 (byte*) print_line_cursor#50 (byte*) print_char_cursor#53 (byte*) print_screen#24 (byte*) print_line_cursor#43 (byte*) print_char_cursor#45
+Alias (byte*) print_screen#0 = (byte*) print_line_cursor#0 (byte*) print_char_cursor#0 (byte*) print_screen#42 (byte*) print_line_cursor#63 (byte*) print_char_cursor#63 (byte*) print_screen#38 (byte*) print_line_cursor#60 (byte*) print_char_cursor#60 (byte*) print_screen#35 (byte*) print_line_cursor#58 (byte*) print_char_cursor#58 (byte*) print_screen#34 (byte*) print_line_cursor#56 (byte*) print_char_cursor#57 (byte*) print_screen#30 (byte*) print_line_cursor#50 (byte*) print_char_cursor#53 (byte*) print_screen#24 (byte*) print_line_cursor#43 (byte*) print_char_cursor#45
Alias (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#7
Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#47 (byte*) print_char_cursor#39 (byte*) print_char_cursor#3
Alias (byte*) print_line_cursor#2 = (byte*) print_line_cursor#57 (byte*) print_line_cursor#37 (byte*) print_line_cursor#20
@@ -4896,35 +5691,72 @@ Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#3 (byte*~) print_
Alias (byte*) print_line_cursor#24 = (byte*) print_screen#11 (byte*) print_screen#10 (byte*) print_line_cursor#5 (byte*) print_char_cursor#6 (byte*) print_char_cursor#25 (byte*) print_line_cursor#6 (byte*) print_char_cursor#7
Alias (byte*) print_screen#1 = (byte*) print_line_cursor#7 (byte*) print_char_cursor#8 (byte*) print_screen#12 (byte*) print_line_cursor#25 (byte*) print_char_cursor#26 (byte*) print_screen#2 (byte*) print_line_cursor#8 (byte*) print_char_cursor#9
Alias (byte) keyboard_matrix_read::return#0 = (byte) keyboard_matrix_read::row_pressed_bits#0 (byte~) keyboard_matrix_read::$0 (byte) keyboard_matrix_read::return#3 (byte) keyboard_matrix_read::return#1
-Alias (byte) keyboard_key_pressed::colidx#0 = (byte~) keyboard_key_pressed::$0 (byte) keyboard_key_pressed::colidx#1
-Alias (byte) keyboard_key_pressed::rowidx#0 = (byte~) keyboard_key_pressed::$1
+Alias (byte) KEY_MODIFIER_SHIFT#0 = (byte~) $0
Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#4
-Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#6 (byte) keyboard_key_pressed::return#1
+Alias (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#3 (byte) keyboard_event_scan::row#9 (byte) keyboard_event_scan::row#7
+Alias (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#7 (byte) keyboard_event_scan::keycode#3 (byte) keyboard_event_scan::keycode#12
+Alias (byte) keyboard_events_size#43 = (byte) keyboard_events_size#61 (byte) keyboard_events_size#73 (byte) keyboard_events_size#87
+Alias (byte) keyboard_event_scan::row_scan#0 = (byte~) keyboard_event_scan::$0 (byte) keyboard_event_scan::row_scan#4
+Alias (byte) keyboard_event_scan::keycode#1 = (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+Alias (byte) keyboard_events_size#14 = (byte) keyboard_events_size#29 (byte) keyboard_events_size#62 (byte) keyboard_events_size#30 (byte) keyboard_events_size#15 (byte) keyboard_events_size#16
+Alias (byte) keyboard_event_scan::row_scan#1 = (byte) keyboard_event_scan::row_scan#6 (byte) keyboard_event_scan::row_scan#8 (byte) keyboard_event_scan::row_scan#2 (byte) keyboard_event_scan::row_scan#9 (byte) keyboard_event_scan::row_scan#7
+Alias (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#8 (byte) keyboard_event_scan::col#6 (byte) keyboard_event_scan::col#4 (byte) keyboard_event_scan::col#7 (byte) keyboard_event_scan::col#5
+Alias (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#13 (byte) keyboard_event_scan::keycode#8 (byte) keyboard_event_scan::keycode#9 (byte) keyboard_event_scan::keycode#5 (byte) keyboard_event_scan::keycode#6
+Alias (byte) keyboard_event_scan::row#10 = (byte) keyboard_event_scan::row#13 (byte) keyboard_event_scan::row#4 (byte) keyboard_event_scan::row#11 (byte) keyboard_event_scan::row#14 (byte) keyboard_event_scan::row#12
+Alias (byte) keyboard_event_scan::event_type#0 = (byte~) keyboard_event_scan::$9
+Alias (byte) keyboard_event_scan::row_scan#3 = (byte) keyboard_event_scan::row_scan#5
+Alias (byte) keyboard_event_scan::row#5 = (byte) keyboard_event_scan::row#8
+Alias (byte) keyboard_event_scan::keycode#15 = (byte) keyboard_event_scan::keycode#2
+Alias (byte) keyboard_events_size#44 = (byte) keyboard_events_size#86
+Alias (byte) keyboard_events_size#82 = (byte) keyboard_events_size#96 (byte) keyboard_events_size#94 (byte) keyboard_events_size#93
+Alias (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#6
+Alias (byte) keyboard_modifiers#1 = (byte) keyboard_modifiers#28 (byte) keyboard_modifiers#14
+Alias (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#7
+Alias (byte) keyboard_modifiers#15 = (byte) keyboard_modifiers#29 (byte) keyboard_modifiers#44
+Alias (byte) keyboard_events_size#88 = (byte) keyboard_events_size#89 (byte) keyboard_events_size#91
+Alias (byte) keyboard_modifiers#2 = (byte~) keyboard_event_scan::$19
+Alias (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#8
+Alias (byte) keyboard_modifiers#16 = (byte) keyboard_modifiers#30 (byte) keyboard_modifiers#45
+Alias (byte) keyboard_events_size#74 = (byte) keyboard_events_size#75 (byte) keyboard_events_size#83
+Alias (byte) keyboard_modifiers#3 = (byte~) keyboard_event_scan::$23
+Alias (byte) keyboard_event_pressed::return#3 = (byte) keyboard_event_pressed::return#9
+Alias (byte) keyboard_modifiers#17 = (byte) keyboard_modifiers#31 (byte) keyboard_modifiers#46 (byte) keyboard_modifiers#32
+Alias (byte) keyboard_events_size#31 = (byte) keyboard_events_size#45 (byte) keyboard_events_size#63 (byte) keyboard_events_size#32
+Alias (byte) keyboard_modifiers#4 = (byte~) keyboard_event_scan::$27
+Alias (byte) keyboard_modifiers#5 = (byte~) keyboard_event_scan::$31
+Alias (byte) keyboard_events_size#17 = (byte) keyboard_events_size#3
+Alias (byte) keyboard_modifiers#18 = (byte) keyboard_modifiers#6
+Alias (byte) keyboard_event_pressed::return#10 = (byte) keyboard_event_pressed::return#4 (byte~) keyboard_event_pressed::$2 (byte) keyboard_event_pressed::return#5
+Alias (byte) keyboard_events_size#18 = (byte) keyboard_events_size#19 (byte) keyboard_events_size#33
+Alias (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#4
+Alias (byte) keyboard_events_size#20 = (byte) keyboard_events_size#5
Alias (byte*) print_screen#14 = (byte*) print_screen#19 (byte*) print_screen#20 (byte*) print_screen#4
Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#39 (byte*) print_line_cursor#40 (byte*) print_line_cursor#27
Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#41 (byte*) print_char_cursor#42 (byte*) print_char_cursor#28
Alias (signed byte) form_cursor_count#1 = (signed byte) form_cursor_count#18 (signed byte) form_cursor_count#19 (signed byte) form_cursor_count#11
-Alias (byte) key_down_debounce#1 = (byte) key_down_debounce#15 (byte) key_down_debounce#16 (byte) key_down_debounce#9
+Alias (byte) keyboard_events_size#22 = (byte) keyboard_events_size#34 (byte) keyboard_events_size#35 (byte) keyboard_events_size#7
+Alias (byte) keyboard_modifiers#20 = (byte) keyboard_modifiers#33 (byte) keyboard_modifiers#34 (byte) keyboard_modifiers#8
Alias (byte) form_field_idx#1 = (byte) form_field_idx#25 (byte) form_field_idx#26 (byte) form_field_idx#12
-Alias (byte) key_right_debounce#1 = (byte) key_right_debounce#15 (byte) key_right_debounce#16 (byte) key_right_debounce#9
-Alias (byte) form_fields_cnt#32 = (byte) form_fields_cnt#34 (byte) form_fields_cnt#38
+Alias (byte) form_fields_cnt#32 = (byte) form_fields_cnt#35 (byte) form_fields_cnt#37
Alias (byte*) print_screen#13 = (byte*) print_screen#3
Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#9
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#27
Alias (signed byte) form_cursor_count#0 = (signed byte) form_cursor_count#10
-Alias (byte) key_down_debounce#0 = (byte) key_down_debounce#8
+Alias (byte) keyboard_events_size#21 = (byte) keyboard_events_size#6
+Alias (byte) keyboard_modifiers#19 = (byte) keyboard_modifiers#7
Alias (byte) form_field_idx#0 = (byte) form_field_idx#11
-Alias (byte) key_right_debounce#0 = (byte) key_right_debounce#8
-Alias (byte[]) MENU_COLS#0 = (string~) $8
-Alias (byte[]) MENU_TEXT#0 = (string~) $17
+Alias (byte) keyboard_events_size#0 = (byte) keyboard_events_size#67 (byte) keyboard_events_size#60 (byte) keyboard_events_size#42
+Alias (byte) keyboard_modifiers#0 = (byte) keyboard_modifiers#64 (byte) keyboard_modifiers#60 (byte) keyboard_modifiers#43
+Alias (byte[]) MENU_COLS#0 = (string~) $9
+Alias (byte[]) MENU_TEXT#0 = (string~) $18
Alias (byte*) print_screen#21 = (byte*) print_screen#26
Alias (byte*) print_line_cursor#41 = (byte*) print_line_cursor#47
Alias (byte*) print_char_cursor#43 = (byte*) print_char_cursor#50
-Alias (signed byte) form_cursor_count#28 = (signed byte) form_cursor_count#56 (signed byte) form_cursor_count#57 (signed byte) form_cursor_count#55 (signed byte) form_cursor_count#54 (signed byte) form_cursor_count#53 (signed byte) form_cursor_count#50 (signed byte) form_cursor_count#46 (signed byte) form_cursor_count#42 (signed byte) form_cursor_count#36
-Alias (byte) key_down_debounce#26 = (byte) key_down_debounce#63 (byte) key_down_debounce#64 (byte) key_down_debounce#62 (byte) key_down_debounce#61 (byte) key_down_debounce#60 (byte) key_down_debounce#59 (byte) key_down_debounce#55 (byte) key_down_debounce#49 (byte) key_down_debounce#40
-Alias (byte) form_field_idx#38 = (byte) form_field_idx#65 (byte) form_field_idx#66 (byte) form_field_idx#64 (byte) form_field_idx#61 (byte) form_field_idx#59 (byte) form_field_idx#56 (byte) form_field_idx#54 (byte) form_field_idx#51 (byte) form_field_idx#46
-Alias (byte) key_right_debounce#26 = (byte) key_right_debounce#63 (byte) key_right_debounce#64 (byte) key_right_debounce#62 (byte) key_right_debounce#61 (byte) key_right_debounce#59 (byte) key_right_debounce#56 (byte) key_right_debounce#52 (byte) key_right_debounce#47 (byte) key_right_debounce#38
-Alias (byte) form_fields_cnt#11 = (byte) form_fields_cnt#25 (byte) form_fields_cnt#27 (byte) form_fields_cnt#23 (byte) form_fields_cnt#20 (byte) form_fields_cnt#18 (byte) form_fields_cnt#15 (byte) form_fields_cnt#13 (byte) form_fields_cnt#9 (byte) form_fields_cnt#35
+Alias (signed byte) form_cursor_count#27 = (signed byte) form_cursor_count#51 (signed byte) form_cursor_count#52 (signed byte) form_cursor_count#50 (signed byte) form_cursor_count#49 (signed byte) form_cursor_count#48 (signed byte) form_cursor_count#45 (signed byte) form_cursor_count#43 (signed byte) form_cursor_count#40 (signed byte) form_cursor_count#34
+Alias (byte) keyboard_events_size#47 = (byte) keyboard_events_size#98 (byte) keyboard_events_size#99 (byte) keyboard_events_size#97 (byte) keyboard_events_size#95 (byte) keyboard_events_size#92 (byte) keyboard_events_size#90 (byte) keyboard_events_size#84 (byte) keyboard_events_size#76 (byte) keyboard_events_size#64
+Alias (byte) keyboard_modifiers#48 = (byte) keyboard_modifiers#79 (byte) keyboard_modifiers#80 (byte) keyboard_modifiers#78 (byte) keyboard_modifiers#77 (byte) keyboard_modifiers#76 (byte) keyboard_modifiers#75 (byte) keyboard_modifiers#73 (byte) keyboard_modifiers#70 (byte) keyboard_modifiers#61
+Alias (byte) form_field_idx#37 = (byte) form_field_idx#59 (byte) form_field_idx#60 (byte) form_field_idx#58 (byte) form_field_idx#57 (byte) form_field_idx#54 (byte) form_field_idx#52 (byte) form_field_idx#49 (byte) form_field_idx#47 (byte) form_field_idx#43
+Alias (byte) form_fields_cnt#11 = (byte) form_fields_cnt#25 (byte) form_fields_cnt#27 (byte) form_fields_cnt#23 (byte) form_fields_cnt#21 (byte) form_fields_cnt#18 (byte) form_fields_cnt#16 (byte) form_fields_cnt#13 (byte) form_fields_cnt#9 (byte) form_fields_cnt#33
Alias (byte*) print_screen#15 = (byte*) print_screen#5 (byte*) print_screen#27 (byte*) print_screen#22
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#28
Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#29
@@ -4939,27 +5771,27 @@ Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#32
Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#33
Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#34 (byte*) print_char_cursor#55 (byte*) print_char_cursor#51
Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#33 (byte*) print_line_cursor#54 (byte*) print_line_cursor#48
-Alias (signed byte) form_cursor_count#13 = (signed byte) form_cursor_count#37 (signed byte) form_cursor_count#21 (signed byte) form_cursor_count#3
-Alias (byte) key_down_debounce#11 = (byte) key_down_debounce#41 (byte) key_down_debounce#18 (byte) key_down_debounce#3
-Alias (byte) form_field_idx#14 = (byte) form_field_idx#47 (byte) form_field_idx#28 (byte) form_field_idx#3
-Alias (byte) key_right_debounce#11 = (byte) key_right_debounce#39 (byte) key_right_debounce#18 (byte) key_right_debounce#3
+Alias (signed byte) form_cursor_count#13 = (signed byte) form_cursor_count#35 (signed byte) form_cursor_count#21 (signed byte) form_cursor_count#3
+Alias (byte) keyboard_events_size#24 = (byte) keyboard_events_size#65 (byte) keyboard_events_size#37 (byte) keyboard_events_size#9
+Alias (byte) keyboard_modifiers#10 = (byte) keyboard_modifiers#62 (byte) keyboard_modifiers#36 (byte) keyboard_modifiers#22
+Alias (byte) form_field_idx#14 = (byte) form_field_idx#44 (byte) form_field_idx#28 (byte) form_field_idx#3
Alias (byte*) print_screen#17 = (byte*) print_screen#40 (byte*) print_screen#23 (byte*) print_screen#7
Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#61 (byte*) print_line_cursor#42 (byte*) print_line_cursor#34
Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#61 (byte*) print_char_cursor#44 (byte*) print_char_cursor#35
-Alias (byte) form_fields_cnt#30 = (byte) form_fields_cnt#33
-Alias (signed byte) form_cursor_count#20 = (signed byte) form_cursor_count#38 (signed byte) form_cursor_count#29
-Alias (byte) key_down_debounce#17 = (byte) key_down_debounce#42 (byte) key_down_debounce#27
-Alias (byte) form_field_idx#27 = (byte) form_field_idx#48 (byte) form_field_idx#39
-Alias (byte) key_right_debounce#17 = (byte) key_right_debounce#40 (byte) key_right_debounce#27
+Alias (byte) form_fields_cnt#28 = (byte) form_fields_cnt#31
+Alias (signed byte) form_cursor_count#20 = (signed byte) form_cursor_count#36 (signed byte) form_cursor_count#28
+Alias (byte) keyboard_events_size#36 = (byte) keyboard_events_size#66 (byte) keyboard_events_size#48
+Alias (byte) keyboard_modifiers#35 = (byte) keyboard_modifiers#63 (byte) keyboard_modifiers#49
+Alias (byte) form_field_idx#27 = (byte) form_field_idx#45 (byte) form_field_idx#38
Alias (byte*) print_screen#29 = (byte*) print_screen#41 (byte*) print_screen#37 (byte*) print_screen#33
Alias (byte*) print_line_cursor#49 = (byte*) print_line_cursor#62 (byte*) print_line_cursor#59 (byte*) print_line_cursor#55
Alias (byte*) print_char_cursor#52 = (byte*) print_char_cursor#62 (byte*) print_char_cursor#59 (byte*) print_char_cursor#56
-Alias (byte) form_fields_cnt#26 = (byte) form_fields_cnt#31 (byte) form_fields_cnt#28 (byte) form_fields_cnt#36
+Alias (byte) form_fields_cnt#24 = (byte) form_fields_cnt#29 (byte) form_fields_cnt#26 (byte) form_fields_cnt#34
Alias (signed byte) form_cursor_count#12 = (signed byte) form_cursor_count#2
-Alias (byte) key_down_debounce#10 = (byte) key_down_debounce#2
+Alias (byte) keyboard_events_size#23 = (byte) keyboard_events_size#8
+Alias (byte) keyboard_modifiers#21 = (byte) keyboard_modifiers#9
Alias (byte) form_field_idx#13 = (byte) form_field_idx#2
-Alias (byte) key_right_debounce#10 = (byte) key_right_debounce#2
-Alias (signed byte) form_cursor_count#26 = (signed byte) form_cursor_count#4 (signed word/signed byte/signed dword~) $18
+Alias (signed byte) form_cursor_count#25 = (signed byte) form_cursor_count#4 (signed word/signed byte/signed dword~) $19
Alias (byte*) form_set_screen::line#0 = (byte*) form_set_screen::screen#1
Alias (byte*) form_set_screen::line#1 = (byte*~) form_set_screen::$2
Alias (byte*) form_field_ptr::line#0 = (byte*~) form_field_ptr::$0
@@ -4970,55 +5802,43 @@ Alias (byte) form_fields_cnt#1 = (byte) form_fields_cnt#4
Alias (byte*) form_render_values::field#0 = (byte*~) form_render_values::$0
Alias (byte*) form_field_ptr::return#3 = (byte*) form_field_ptr::return#6
Alias (signed byte) form_cursor_count#14 = (signed byte) form_cursor_count#22
-Alias (byte) key_down_debounce#50 = (byte) key_down_debounce#51 (byte) key_down_debounce#56
-Alias (byte) key_right_debounce#57 = (byte) key_right_debounce#58 (byte) key_right_debounce#60
-Alias (byte) form_field_idx#15 = (byte) form_field_idx#63 (byte) form_field_idx#62
-Alias (byte) form_fields_cnt#21 = (byte) form_fields_cnt#22 (byte) form_fields_cnt#24
+Alias (byte) keyboard_events_size#77 = (byte) keyboard_events_size#78 (byte) keyboard_events_size#85
+Alias (byte) keyboard_modifiers#71 = (byte) keyboard_modifiers#72 (byte) keyboard_modifiers#74
+Alias (byte) form_field_idx#15 = (byte) form_field_idx#56 (byte) form_field_idx#55
+Alias (byte) form_fields_cnt#19 = (byte) form_fields_cnt#20 (byte) form_fields_cnt#22
Alias (byte*) form_control::field#0 = (byte*~) form_control::$0 (byte*) form_control::field#11
Alias (byte*) form_control::field#1 = (byte*) form_control::field#5 (byte*) form_control::field#2
-Alias (byte) key_down_debounce#28 = (byte) key_down_debounce#29 (byte) key_down_debounce#43
-Alias (byte) key_right_debounce#48 = (byte) key_right_debounce#49 (byte) key_right_debounce#53
-Alias (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#52 (signed byte) form_cursor_count#51
-Alias (byte) form_field_idx#57 = (byte) form_field_idx#58 (byte) form_field_idx#60
-Alias (byte) form_fields_cnt#16 = (byte) form_fields_cnt#17 (byte) form_fields_cnt#19
-Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#7
-Alias (byte) key_down_debounce#12 = (byte) key_down_debounce#19
-Alias (byte) key_right_debounce#28 = (byte) key_right_debounce#41 (byte) key_right_debounce#42 (byte) key_right_debounce#29 (byte) key_right_debounce#54 (byte) key_right_debounce#50 (byte) key_right_debounce#44 (byte) key_right_debounce#43 (byte) key_right_debounce#32 (byte) key_right_debounce#30 (byte) key_right_debounce#33 (byte) key_right_debounce#31
-Alias (byte*) form_control::field#12 = (byte*) form_control::field#15 (byte*) form_control::field#6 (byte*) form_control::field#21 (byte*) form_control::field#3
-Alias (signed byte) form_cursor_count#43 = (signed byte) form_cursor_count#47 (signed byte) form_cursor_count#48 (signed byte) form_cursor_count#44
-Alias (byte) form_field_idx#16 = (byte) form_field_idx#52 (byte) form_field_idx#55 (byte) form_field_idx#50 (byte) form_field_idx#53 (byte) form_field_idx#40 (byte) form_field_idx#29 (byte) form_field_idx#17
-Alias (byte) form_fields_cnt#10 = (byte) form_fields_cnt#12 (byte) form_fields_cnt#14 (byte) form_fields_cnt#8 (byte) form_fields_cnt#5 (byte) form_fields_cnt#6 (byte) form_fields_cnt#2 (byte) form_fields_cnt#3
-Alias (byte) form_control::key_down#0 = (byte~) form_control::$8 (byte) form_control::key_down#1
-Alias (byte) keyboard_key_pressed::return#3 = (byte) keyboard_key_pressed::return#8
-Alias (byte) key_right_debounce#12 = (byte) key_right_debounce#19 (byte) key_right_debounce#20
-Alias (signed byte) form_cursor_count#23 = (signed byte) form_cursor_count#30 (signed byte) form_cursor_count#39 (signed byte) form_cursor_count#31 (signed byte) form_cursor_count#24 (signed byte) form_cursor_count#49 (signed byte) form_cursor_count#45 (signed byte) form_cursor_count#41 (signed byte) form_cursor_count#40 (signed byte) form_cursor_count#32 (signed byte) form_cursor_count#34 (signed byte) form_cursor_count#33 (signed byte) form_cursor_count#35
-Alias (byte) key_down_debounce#20 = (byte) key_down_debounce#34 (byte) key_down_debounce#44 (byte) key_down_debounce#35 (byte) key_down_debounce#21 (byte) key_down_debounce#58 (byte) key_down_debounce#54 (byte) key_down_debounce#48 (byte) key_down_debounce#47 (byte) key_down_debounce#36 (byte) key_down_debounce#38 (byte) key_down_debounce#37 (byte) key_down_debounce#39
-Alias (byte) form_field_idx#19 = (byte) form_field_idx#43 (byte) form_field_idx#49 (byte) form_field_idx#30 (byte) form_field_idx#44 (byte) form_field_idx#31 (byte) form_field_idx#45 (byte) form_field_idx#33 (byte) form_field_idx#20 (byte) form_field_idx#34 (byte) form_field_idx#21 (byte) form_field_idx#35 (byte) form_field_idx#23
-Alias (byte*) form_control::field#10 = (byte*) form_control::field#19 (byte*) form_control::field#20 (byte*) form_control::field#18 (byte*) form_control::field#17 (byte*) form_control::field#16 (byte*) form_control::field#14 (byte*) form_control::field#13 (byte*) form_control::field#7 (byte*) form_control::field#9 (byte*) form_control::field#8
-Alias (byte) form_control::key_right#0 = (byte~) form_control::$23 (byte) form_control::key_right#1
-Alias (byte) key_down_debounce#30 = (byte) key_down_debounce#52 (byte) key_down_debounce#5 (byte) key_down_debounce#57 (byte) key_down_debounce#53 (byte) key_down_debounce#46 (byte) key_down_debounce#45 (byte) key_down_debounce#32 (byte) key_down_debounce#33 (byte) key_down_debounce#31
-Alias (byte) keyboard_key_pressed::return#4 = (byte) keyboard_key_pressed::return#9
-Alias (byte) form_field_idx#41 = (byte) form_field_idx#6
-Alias (signed byte) form_cursor_count#7 = (signed word/signed byte/signed dword~) form_control::$22
-Alias (byte) form_field_idx#42 = (byte) form_field_idx#5
-Alias (byte) form_field_idx#8 = (byte/signed word/word/dword/signed dword~) form_control::$21
+Alias (byte) keyboard_events_size#49 = (byte) keyboard_events_size#50 (byte) keyboard_events_size#68
+Alias (byte) keyboard_modifiers#50 = (byte) keyboard_modifiers#51 (byte) keyboard_modifiers#65
+Alias (byte) form_field_idx#50 = (byte) form_field_idx#51 (byte) form_field_idx#53
+Alias (byte) form_fields_cnt#14 = (byte) form_fields_cnt#15 (byte) form_fields_cnt#17
+Alias (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#47 (signed byte) form_cursor_count#46
+Alias (byte*) form_control::field#10 = (byte*) form_control::field#12 (byte*) form_control::field#15 (byte*) form_control::field#6 (byte*) form_control::field#17 (byte*) form_control::field#3 (byte*) form_control::field#16 (byte*) form_control::field#14 (byte*) form_control::field#13 (byte*) form_control::field#7 (byte*) form_control::field#9 (byte*) form_control::field#8
+Alias (byte) form_field_idx#16 = (byte) form_field_idx#46 (byte) form_field_idx#48 (byte) form_field_idx#39 (byte) form_field_idx#42 (byte) form_field_idx#29 (byte) form_field_idx#17 (byte) form_field_idx#31 (byte) form_field_idx#32 (byte) form_field_idx#19 (byte) form_field_idx#20 (byte) form_field_idx#33 (byte) form_field_idx#21 (byte) form_field_idx#34 (byte) form_field_idx#23
+Alias (byte) form_fields_cnt#10 = (byte) form_fields_cnt#12 (byte) form_fields_cnt#8 (byte) form_fields_cnt#5 (byte) form_fields_cnt#6 (byte) form_fields_cnt#2 (byte) form_fields_cnt#3
+Alias (signed byte) form_cursor_count#24 = (signed byte) form_cursor_count#41 (signed byte) form_cursor_count#44 (signed byte) form_cursor_count#37 (signed byte) form_cursor_count#29 (signed byte) form_cursor_count#42 (signed byte) form_cursor_count#39 (signed byte) form_cursor_count#38 (signed byte) form_cursor_count#30 (signed byte) form_cursor_count#32 (signed byte) form_cursor_count#31 (signed byte) form_cursor_count#33
+Alias (byte) keyboard_events_size#10 = (byte) keyboard_events_size#25
+Alias (byte) keyboard_modifiers#11 = (byte) keyboard_modifiers#23 (byte) keyboard_modifiers#38 (byte) keyboard_modifiers#42 (byte) keyboard_modifiers#24 (byte) keyboard_modifiers#67 (byte) keyboard_modifiers#66 (byte) keyboard_modifiers#54 (byte) keyboard_modifiers#52 (byte) keyboard_modifiers#55 (byte) keyboard_modifiers#53 (byte) keyboard_modifiers#41 (byte) keyboard_modifiers#26 (byte) keyboard_modifiers#69 (byte) keyboard_modifiers#68 (byte) keyboard_modifiers#56 (byte) keyboard_modifiers#58 (byte) keyboard_modifiers#57 (byte) keyboard_modifiers#59
+Alias (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#5
+Alias (byte) keyboard_events_size#11 = (byte) keyboard_events_size#26 (byte) keyboard_events_size#55 (byte) keyboard_events_size#79 (byte) keyboard_events_size#70 (byte) keyboard_events_size#69 (byte) keyboard_events_size#53 (byte) keyboard_events_size#51 (byte) keyboard_events_size#54 (byte) keyboard_events_size#52 (byte) keyboard_events_size#41 (byte) keyboard_events_size#80 (byte) keyboard_events_size#72 (byte) keyboard_events_size#71 (byte) keyboard_events_size#56 (byte) keyboard_events_size#58 (byte) keyboard_events_size#57 (byte) keyboard_events_size#59
+Alias (byte) form_control::key_event#0 = (byte~) form_control::$9 (byte) form_control::key_event#1
+Alias (byte) form_field_idx#40 = (byte) form_field_idx#6
+Alias (signed byte) form_cursor_count#7 = (signed word/signed byte/signed dword~) form_control::$21
+Alias (byte) form_field_idx#41 = (byte) form_field_idx#5
+Alias (byte) form_field_idx#8 = (byte/signed word/word/dword/signed dword~) form_control::$20
Alias (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#8
-Alias (byte) key_down_debounce#13 = (byte) key_down_debounce#6
+Alias (byte) keyboard_events_size#12 = (byte) keyboard_events_size#27
+Alias (byte) keyboard_modifiers#12 = (byte) keyboard_modifiers#25
Alias (byte) form_field_idx#18 = (byte) form_field_idx#9
-Alias (byte) key_right_debounce#13 = (byte) key_right_debounce#5
-Alias (byte) key_right_debounce#21 = (byte) key_right_debounce#6 (byte) key_right_debounce#55 (byte) key_right_debounce#51 (byte) key_right_debounce#46 (byte) key_right_debounce#45 (byte) key_right_debounce#34 (byte) key_right_debounce#36 (byte) key_right_debounce#35 (byte) key_right_debounce#37
-Alias (byte) keyboard_key_pressed::return#10 = (byte) keyboard_key_pressed::return#5
-Alias (byte) key_down_debounce#24 = (byte) key_down_debounce#4
-Alias (byte) form_field_idx#36 = (byte) form_field_idx#4
-Alias (byte) key_right_debounce#24 = (byte) key_right_debounce#4
-Alias (byte) form_fields_cnt#0 = (byte) form_fields_cnt#39
+Alias (byte) form_field_idx#35 = (byte) form_field_idx#4
+Alias (byte) form_fields_cnt#0 = (byte) form_fields_cnt#38
Alias (byte*) print_screen#18 = (byte*) print_screen#8
Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#35
Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#36
Alias (signed byte) form_cursor_count#17 = (signed byte) form_cursor_count#9
-Alias (byte) key_down_debounce#14 = (byte) key_down_debounce#7
+Alias (byte) keyboard_events_size#13 = (byte) keyboard_events_size#28
+Alias (byte) keyboard_modifiers#13 = (byte) keyboard_modifiers#27
Alias (byte) form_field_idx#10 = (byte) form_field_idx#24
-Alias (byte) key_right_debounce#14 = (byte) key_right_debounce#7
Succesful SSA optimization Pass2AliasElimination
Not aliassing across scopes: print_str_lines::str#5 print_str_lines::str#1
Not aliassing across scopes: print_char_cursor#46 print_char_cursor#13
@@ -5032,33 +5852,47 @@ Not aliassing across scopes: print_cls::sc#0 print_screen#9
Not aliassing across scopes: print_set_screen::screen#2 print_set_screen::screen#1
Not aliassing across scopes: print_screen#1 print_set_screen::screen#2
Not aliassing across scopes: keyboard_matrix_read::rowid#1 keyboard_matrix_read::rowid#0
-Not aliassing across scopes: keyboard_key_pressed::key#4 keyboard_key_pressed::key#2
-Not aliassing across scopes: keyboard_matrix_read::rowid#0 keyboard_key_pressed::rowidx#0
+Not aliassing across scopes: keyboard_events_size#81 keyboard_events_size#38
+Not aliassing across scopes: keyboard_matrix_read::rowid#0 keyboard_event_scan::row#2
Not aliassing across scopes: keyboard_matrix_read::return#2 keyboard_matrix_read::return#0
-Not aliassing across scopes: keyboard_key_pressed::$2 keyboard_matrix_read::return#2
+Not aliassing across scopes: keyboard_event_scan::row_scan#0 keyboard_matrix_read::return#2
+Not aliassing across scopes: keyboard_event_pressed::keycode#0 KEY_LSHIFT#0
+Not aliassing across scopes: keyboard_event_pressed::return#0 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$16 keyboard_event_pressed::return#0
+Not aliassing across scopes: keyboard_event_pressed::keycode#1 KEY_RSHIFT#0
+Not aliassing across scopes: keyboard_event_pressed::return#1 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$20 keyboard_event_pressed::return#1
+Not aliassing across scopes: keyboard_event_pressed::keycode#2 KEY_CTRL#0
+Not aliassing across scopes: keyboard_event_pressed::return#2 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$24 keyboard_event_pressed::return#2
+Not aliassing across scopes: keyboard_event_pressed::keycode#3 KEY_COMMODORE#0
+Not aliassing across scopes: keyboard_event_pressed::return#3 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$28 keyboard_event_pressed::return#3
+Not aliassing across scopes: keyboard_event_pressed::keycode#4 keyboard_event_pressed::keycode#2
+Not aliassing across scopes: keyboard_events_size#18 keyboard_events_size#10
Not aliassing across scopes: print_screen#25 print_screen#0
Not aliassing across scopes: print_line_cursor#46 print_screen#0
Not aliassing across scopes: print_char_cursor#49 print_screen#0
-Not aliassing across scopes: form_cursor_count#27 form_cursor_count#26
-Not aliassing across scopes: key_down_debounce#25 key_down_debounce#24
-Not aliassing across scopes: form_field_idx#37 form_field_idx#36
-Not aliassing across scopes: key_right_debounce#25 key_right_debounce#24
-Not aliassing across scopes: form_fields_cnt#37 form_fields_cnt#0
+Not aliassing across scopes: form_cursor_count#26 form_cursor_count#25
+Not aliassing across scopes: keyboard_events_size#46 keyboard_events_size#0
+Not aliassing across scopes: keyboard_modifiers#47 keyboard_modifiers#0
+Not aliassing across scopes: form_field_idx#36 form_field_idx#35
+Not aliassing across scopes: form_fields_cnt#36 form_fields_cnt#0
Not aliassing across scopes: print_screen#13 print_screen#17
Not aliassing across scopes: print_line_cursor#26 print_line_cursor#17
Not aliassing across scopes: print_char_cursor#10 print_char_cursor#18
Not aliassing across scopes: form_cursor_count#0 form_cursor_count#13
-Not aliassing across scopes: key_down_debounce#0 key_down_debounce#11
+Not aliassing across scopes: keyboard_events_size#21 keyboard_events_size#24
+Not aliassing across scopes: keyboard_modifiers#19 keyboard_modifiers#10
Not aliassing across scopes: form_field_idx#0 form_field_idx#14
-Not aliassing across scopes: key_right_debounce#0 key_right_debounce#11
Not aliassing across scopes: print_screen#31 print_screen#14
Not aliassing across scopes: print_line_cursor#53 print_line_cursor#10
Not aliassing across scopes: print_char_cursor#54 print_char_cursor#11
-Not aliassing across scopes: form_cursor_count#58 form_cursor_count#1
-Not aliassing across scopes: key_down_debounce#65 key_down_debounce#1
-Not aliassing across scopes: form_field_idx#67 form_field_idx#1
-Not aliassing across scopes: key_right_debounce#65 key_right_debounce#1
-Not aliassing across scopes: form_fields_cnt#29 form_fields_cnt#32
+Not aliassing across scopes: form_cursor_count#53 form_cursor_count#1
+Not aliassing across scopes: keyboard_events_size#100 keyboard_events_size#22
+Not aliassing across scopes: keyboard_modifiers#81 keyboard_modifiers#20
+Not aliassing across scopes: form_field_idx#61 form_field_idx#1
+Not aliassing across scopes: form_fields_cnt#30 form_fields_cnt#32
Not aliassing across scopes: print_set_screen::screen#0 COLS#0
Not aliassing across scopes: print_screen#15 print_screen#1
Not aliassing across scopes: print_line_cursor#11 print_screen#1
@@ -5079,9 +5913,9 @@ Not aliassing across scopes: print_char_cursor#17 print_char_cursor#22
Not aliassing across scopes: print_line_cursor#16 print_line_cursor#2
Not aliassing across scopes: form_set_screen::screen#0 menu::SCREEN#0
Not aliassing across scopes: form_cursor_count#12 form_cursor_count#16
-Not aliassing across scopes: key_down_debounce#10 key_down_debounce#13
+Not aliassing across scopes: keyboard_events_size#23 keyboard_events_size#12
+Not aliassing across scopes: keyboard_modifiers#21 keyboard_modifiers#12
Not aliassing across scopes: form_field_idx#13 form_field_idx#18
-Not aliassing across scopes: key_right_debounce#10 key_right_debounce#13
Not aliassing across scopes: form_set_screen::line#0 form_set_screen::screen#0
Not aliassing across scopes: form_field_ptr::field_idx#2 form_field_ptr::field_idx#1
Not aliassing across scopes: form_fields_cnt#7 form_fields_cnt#11
@@ -5090,46 +5924,41 @@ Not aliassing across scopes: form_field_ptr::return#2 form_field_ptr::return#0
Not aliassing across scopes: form_render_values::field#0 form_field_ptr::return#2
Not aliassing across scopes: form_field_idx#15 form_field_idx#27
Not aliassing across scopes: form_cursor_count#14 form_cursor_count#20
-Not aliassing across scopes: key_down_debounce#50 key_down_debounce#17
-Not aliassing across scopes: key_right_debounce#57 key_right_debounce#17
-Not aliassing across scopes: form_fields_cnt#21 form_fields_cnt#26
+Not aliassing across scopes: keyboard_events_size#77 keyboard_events_size#36
+Not aliassing across scopes: keyboard_modifiers#71 keyboard_modifiers#35
+Not aliassing across scopes: form_fields_cnt#19 form_fields_cnt#24
Not aliassing across scopes: form_field_ptr::field_idx#1 form_field_idx#15
Not aliassing across scopes: form_field_ptr::return#3 form_field_ptr::return#0
Not aliassing across scopes: form_control::field#0 form_field_ptr::return#3
Not aliassing across scopes: form_cursor_count#6 FORM_CURSOR_BLINK#0
-Not aliassing across scopes: keyboard_key_pressed::key#0 KEY_CRSR_DOWN#0
-Not aliassing across scopes: keyboard_key_pressed::return#2 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::key_down#0 keyboard_key_pressed::return#2
-Not aliassing across scopes: keyboard_key_pressed::key#1 KEY_CRSR_RIGHT#0
-Not aliassing across scopes: keyboard_key_pressed::return#3 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::key_right#0 keyboard_key_pressed::return#3
-Not aliassing across scopes: key_down_debounce#30 form_control::key_down#0
-Not aliassing across scopes: keyboard_key_pressed::key#2 KEY_RSHIFT#0
-Not aliassing across scopes: keyboard_key_pressed::return#4 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::$14 keyboard_key_pressed::return#4
-Not aliassing across scopes: key_right_debounce#21 form_control::key_right#0
-Not aliassing across scopes: keyboard_key_pressed::key#3 KEY_RSHIFT#0
-Not aliassing across scopes: keyboard_key_pressed::return#10 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::$28 keyboard_key_pressed::return#10
+Not aliassing across scopes: keyboard_events_size#10 keyboard_events_size#17
+Not aliassing across scopes: keyboard_modifiers#11 keyboard_modifiers#18
+Not aliassing across scopes: keyboard_event_get::return#3 keyboard_event_get::return#2
+Not aliassing across scopes: keyboard_events_size#11 keyboard_events_size#20
+Not aliassing across scopes: form_control::key_event#0 keyboard_event_get::return#3
Not aliassing across scopes: print_screen#18 print_screen#14
Not aliassing across scopes: print_line_cursor#18 print_line_cursor#10
Not aliassing across scopes: print_char_cursor#19 print_char_cursor#11
Not aliassing across scopes: form_cursor_count#17 form_cursor_count#1
-Not aliassing across scopes: key_down_debounce#14 key_down_debounce#1
+Not aliassing across scopes: keyboard_events_size#13 keyboard_events_size#22
+Not aliassing across scopes: keyboard_modifiers#13 keyboard_modifiers#20
Not aliassing across scopes: form_field_idx#10 form_field_idx#1
-Not aliassing across scopes: key_right_debounce#14 key_right_debounce#1
Alias (byte) print_str_lines::ch#0 = (byte) print_str_lines::ch#1
Alias (byte*) print_str_lines::str#0 = (byte*) print_str_lines::str#10
Alias (byte*) print_line_cursor#36 = (byte*) print_line_cursor#51
-Alias (byte*) form_control::field#0 = (byte*) form_control::field#1 (byte*) form_control::field#12 (byte*) form_control::field#10 (byte*) form_control::field#4
-Alias (byte) key_down_debounce#12 = (byte) key_down_debounce#28 (byte) key_down_debounce#50
-Alias (byte) key_right_debounce#12 = (byte) key_right_debounce#48 (byte) key_right_debounce#57 (byte) key_right_debounce#28 (byte) key_right_debounce#23
-Alias (byte) form_field_idx#15 = (byte) form_field_idx#57 (byte) form_field_idx#16 (byte) form_field_idx#19 (byte) form_field_idx#22
-Alias (byte) form_fields_cnt#10 = (byte) form_fields_cnt#16 (byte) form_fields_cnt#21
-Alias (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#43 (signed byte) form_cursor_count#23 (signed byte) form_cursor_count#25
-Alias (byte) key_down_debounce#23 = (byte) key_down_debounce#30
-Alias (byte) key_down_debounce#20 = (byte) key_down_debounce#22
-Alias (byte) key_right_debounce#21 = (byte) key_right_debounce#22
+Alias (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#4
+Alias (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#3
+Alias (byte) keyboard_event_scan::row_scan#1 = (byte) keyboard_event_scan::row_scan#3
+Alias (byte) keyboard_event_scan::row#10 = (byte) keyboard_event_scan::row#5
+Alias (byte) keyboard_events_size#17 = (byte) keyboard_events_size#88 (byte) keyboard_events_size#82 (byte) keyboard_events_size#74 (byte) keyboard_events_size#31
+Alias (byte*) form_control::field#0 = (byte*) form_control::field#1 (byte*) form_control::field#10 (byte*) form_control::field#4
+Alias (byte) keyboard_events_size#38 = (byte) keyboard_events_size#49 (byte) keyboard_events_size#77
+Alias (byte) keyboard_modifiers#37 = (byte) keyboard_modifiers#50 (byte) keyboard_modifiers#71
+Alias (byte) form_field_idx#15 = (byte) form_field_idx#50 (byte) form_field_idx#16 (byte) form_field_idx#22
+Alias (byte) form_fields_cnt#10 = (byte) form_fields_cnt#14 (byte) form_fields_cnt#19
+Alias (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#24 (signed byte) form_cursor_count#23
+Alias (byte) keyboard_events_size#11 = (byte) keyboard_events_size#40 (byte) keyboard_events_size#39
+Alias (byte) keyboard_modifiers#11 = (byte) keyboard_modifiers#40 (byte) keyboard_modifiers#39
Succesful SSA optimization Pass2AliasElimination
Not aliassing across scopes: print_str_lines::str#5 print_str_lines::str#1
Not aliassing across scopes: print_char_cursor#46 print_char_cursor#13
@@ -5143,33 +5972,47 @@ Not aliassing across scopes: print_cls::sc#0 print_screen#9
Not aliassing across scopes: print_set_screen::screen#2 print_set_screen::screen#1
Not aliassing across scopes: print_screen#1 print_set_screen::screen#2
Not aliassing across scopes: keyboard_matrix_read::rowid#1 keyboard_matrix_read::rowid#0
-Not aliassing across scopes: keyboard_key_pressed::key#4 keyboard_key_pressed::key#2
-Not aliassing across scopes: keyboard_matrix_read::rowid#0 keyboard_key_pressed::rowidx#0
+Not aliassing across scopes: keyboard_events_size#81 keyboard_events_size#38
+Not aliassing across scopes: keyboard_matrix_read::rowid#0 keyboard_event_scan::row#2
Not aliassing across scopes: keyboard_matrix_read::return#2 keyboard_matrix_read::return#0
-Not aliassing across scopes: keyboard_key_pressed::$2 keyboard_matrix_read::return#2
+Not aliassing across scopes: keyboard_event_scan::row_scan#0 keyboard_matrix_read::return#2
+Not aliassing across scopes: keyboard_event_pressed::keycode#0 KEY_LSHIFT#0
+Not aliassing across scopes: keyboard_event_pressed::return#0 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$16 keyboard_event_pressed::return#0
+Not aliassing across scopes: keyboard_event_pressed::keycode#1 KEY_RSHIFT#0
+Not aliassing across scopes: keyboard_event_pressed::return#1 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$20 keyboard_event_pressed::return#1
+Not aliassing across scopes: keyboard_event_pressed::keycode#2 KEY_CTRL#0
+Not aliassing across scopes: keyboard_event_pressed::return#2 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$24 keyboard_event_pressed::return#2
+Not aliassing across scopes: keyboard_event_pressed::keycode#3 KEY_COMMODORE#0
+Not aliassing across scopes: keyboard_event_pressed::return#3 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$28 keyboard_event_pressed::return#3
+Not aliassing across scopes: keyboard_event_pressed::keycode#4 keyboard_event_pressed::keycode#2
+Not aliassing across scopes: keyboard_events_size#18 keyboard_events_size#10
Not aliassing across scopes: print_screen#25 print_screen#0
Not aliassing across scopes: print_line_cursor#46 print_screen#0
Not aliassing across scopes: print_char_cursor#49 print_screen#0
-Not aliassing across scopes: form_cursor_count#27 form_cursor_count#26
-Not aliassing across scopes: key_down_debounce#25 key_down_debounce#24
-Not aliassing across scopes: form_field_idx#37 form_field_idx#36
-Not aliassing across scopes: key_right_debounce#25 key_right_debounce#24
-Not aliassing across scopes: form_fields_cnt#37 form_fields_cnt#0
+Not aliassing across scopes: form_cursor_count#26 form_cursor_count#25
+Not aliassing across scopes: keyboard_events_size#46 keyboard_events_size#0
+Not aliassing across scopes: keyboard_modifiers#47 keyboard_modifiers#0
+Not aliassing across scopes: form_field_idx#36 form_field_idx#35
+Not aliassing across scopes: form_fields_cnt#36 form_fields_cnt#0
Not aliassing across scopes: print_screen#13 print_screen#17
Not aliassing across scopes: print_line_cursor#26 print_line_cursor#17
Not aliassing across scopes: print_char_cursor#10 print_char_cursor#18
Not aliassing across scopes: form_cursor_count#0 form_cursor_count#13
-Not aliassing across scopes: key_down_debounce#0 key_down_debounce#11
+Not aliassing across scopes: keyboard_events_size#21 keyboard_events_size#24
+Not aliassing across scopes: keyboard_modifiers#19 keyboard_modifiers#10
Not aliassing across scopes: form_field_idx#0 form_field_idx#14
-Not aliassing across scopes: key_right_debounce#0 key_right_debounce#11
Not aliassing across scopes: print_screen#31 print_screen#14
Not aliassing across scopes: print_line_cursor#53 print_line_cursor#10
Not aliassing across scopes: print_char_cursor#54 print_char_cursor#11
-Not aliassing across scopes: form_cursor_count#58 form_cursor_count#1
-Not aliassing across scopes: key_down_debounce#65 key_down_debounce#1
-Not aliassing across scopes: form_field_idx#67 form_field_idx#1
-Not aliassing across scopes: key_right_debounce#65 key_right_debounce#1
-Not aliassing across scopes: form_fields_cnt#29 form_fields_cnt#32
+Not aliassing across scopes: form_cursor_count#53 form_cursor_count#1
+Not aliassing across scopes: keyboard_events_size#100 keyboard_events_size#22
+Not aliassing across scopes: keyboard_modifiers#81 keyboard_modifiers#20
+Not aliassing across scopes: form_field_idx#61 form_field_idx#1
+Not aliassing across scopes: form_fields_cnt#30 form_fields_cnt#32
Not aliassing across scopes: print_set_screen::screen#0 COLS#0
Not aliassing across scopes: print_screen#15 print_screen#1
Not aliassing across scopes: print_line_cursor#11 print_screen#1
@@ -5190,9 +6033,9 @@ Not aliassing across scopes: print_char_cursor#17 print_char_cursor#22
Not aliassing across scopes: print_line_cursor#16 print_line_cursor#2
Not aliassing across scopes: form_set_screen::screen#0 menu::SCREEN#0
Not aliassing across scopes: form_cursor_count#12 form_cursor_count#16
-Not aliassing across scopes: key_down_debounce#10 key_down_debounce#13
+Not aliassing across scopes: keyboard_events_size#23 keyboard_events_size#12
+Not aliassing across scopes: keyboard_modifiers#21 keyboard_modifiers#12
Not aliassing across scopes: form_field_idx#13 form_field_idx#18
-Not aliassing across scopes: key_right_debounce#10 key_right_debounce#13
Not aliassing across scopes: form_set_screen::line#0 form_set_screen::screen#0
Not aliassing across scopes: form_field_ptr::field_idx#2 form_field_ptr::field_idx#1
Not aliassing across scopes: form_fields_cnt#7 form_fields_cnt#11
@@ -5201,54 +6044,153 @@ Not aliassing across scopes: form_field_ptr::return#2 form_field_ptr::return#0
Not aliassing across scopes: form_render_values::field#0 form_field_ptr::return#2
Not aliassing across scopes: form_field_idx#15 form_field_idx#27
Not aliassing across scopes: form_cursor_count#14 form_cursor_count#20
-Not aliassing across scopes: key_down_debounce#12 key_down_debounce#17
-Not aliassing across scopes: key_right_debounce#12 key_right_debounce#17
-Not aliassing across scopes: form_fields_cnt#10 form_fields_cnt#26
+Not aliassing across scopes: keyboard_events_size#38 keyboard_events_size#36
+Not aliassing across scopes: keyboard_modifiers#37 keyboard_modifiers#35
+Not aliassing across scopes: form_fields_cnt#10 form_fields_cnt#24
Not aliassing across scopes: form_field_ptr::field_idx#1 form_field_idx#15
Not aliassing across scopes: form_field_ptr::return#3 form_field_ptr::return#0
Not aliassing across scopes: form_control::field#0 form_field_ptr::return#3
Not aliassing across scopes: form_cursor_count#6 FORM_CURSOR_BLINK#0
-Not aliassing across scopes: keyboard_key_pressed::key#0 KEY_CRSR_DOWN#0
-Not aliassing across scopes: keyboard_key_pressed::return#2 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::key_down#0 keyboard_key_pressed::return#2
-Not aliassing across scopes: keyboard_key_pressed::key#1 KEY_CRSR_RIGHT#0
-Not aliassing across scopes: keyboard_key_pressed::return#3 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::key_right#0 keyboard_key_pressed::return#3
-Not aliassing across scopes: key_down_debounce#23 form_control::key_down#0
-Not aliassing across scopes: keyboard_key_pressed::key#2 KEY_RSHIFT#0
-Not aliassing across scopes: keyboard_key_pressed::return#4 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::$14 keyboard_key_pressed::return#4
-Not aliassing across scopes: key_right_debounce#21 form_control::key_right#0
-Not aliassing across scopes: keyboard_key_pressed::key#3 KEY_RSHIFT#0
-Not aliassing across scopes: keyboard_key_pressed::return#10 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::$28 keyboard_key_pressed::return#10
+Not aliassing across scopes: keyboard_events_size#10 keyboard_events_size#17
+Not aliassing across scopes: keyboard_modifiers#11 keyboard_modifiers#18
+Not aliassing across scopes: keyboard_event_get::return#3 keyboard_event_get::return#2
+Not aliassing across scopes: keyboard_events_size#11 keyboard_events_size#20
+Not aliassing across scopes: form_control::key_event#0 keyboard_event_get::return#3
Not aliassing across scopes: print_screen#18 print_screen#14
Not aliassing across scopes: print_line_cursor#18 print_line_cursor#10
Not aliassing across scopes: print_char_cursor#19 print_char_cursor#11
Not aliassing across scopes: form_cursor_count#17 form_cursor_count#1
-Not aliassing across scopes: key_down_debounce#14 key_down_debounce#1
+Not aliassing across scopes: keyboard_events_size#13 keyboard_events_size#22
+Not aliassing across scopes: keyboard_modifiers#13 keyboard_modifiers#20
+Not aliassing across scopes: form_field_idx#10 form_field_idx#1
+Alias (byte) keyboard_events_size#11 = (byte) keyboard_events_size#12
+Alias (byte) keyboard_modifiers#11 = (byte) keyboard_modifiers#12
+Succesful SSA optimization Pass2AliasElimination
+Not aliassing across scopes: print_str_lines::str#5 print_str_lines::str#1
+Not aliassing across scopes: print_char_cursor#46 print_char_cursor#13
+Not aliassing across scopes: print_line_cursor#44 print_line_cursor#12
+Not aliassing across scopes: print_line_cursor#1 print_line_cursor#22
+Not aliassing across scopes: print_char_cursor#2 print_line_cursor#22
+Not aliassing across scopes: print_line_cursor#38 print_line_cursor#36
+Not aliassing across scopes: print_char_cursor#40 print_char_cursor#38
+Not aliassing across scopes: print_screen#9 print_screen#15
+Not aliassing across scopes: print_cls::sc#0 print_screen#9
+Not aliassing across scopes: print_set_screen::screen#2 print_set_screen::screen#1
+Not aliassing across scopes: print_screen#1 print_set_screen::screen#2
+Not aliassing across scopes: keyboard_matrix_read::rowid#1 keyboard_matrix_read::rowid#0
+Not aliassing across scopes: keyboard_events_size#81 keyboard_events_size#38
+Not aliassing across scopes: keyboard_matrix_read::rowid#0 keyboard_event_scan::row#2
+Not aliassing across scopes: keyboard_matrix_read::return#2 keyboard_matrix_read::return#0
+Not aliassing across scopes: keyboard_event_scan::row_scan#0 keyboard_matrix_read::return#2
+Not aliassing across scopes: keyboard_event_pressed::keycode#0 KEY_LSHIFT#0
+Not aliassing across scopes: keyboard_event_pressed::return#0 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$16 keyboard_event_pressed::return#0
+Not aliassing across scopes: keyboard_event_pressed::keycode#1 KEY_RSHIFT#0
+Not aliassing across scopes: keyboard_event_pressed::return#1 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$20 keyboard_event_pressed::return#1
+Not aliassing across scopes: keyboard_event_pressed::keycode#2 KEY_CTRL#0
+Not aliassing across scopes: keyboard_event_pressed::return#2 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$24 keyboard_event_pressed::return#2
+Not aliassing across scopes: keyboard_event_pressed::keycode#3 KEY_COMMODORE#0
+Not aliassing across scopes: keyboard_event_pressed::return#3 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$28 keyboard_event_pressed::return#3
+Not aliassing across scopes: keyboard_event_pressed::keycode#4 keyboard_event_pressed::keycode#2
+Not aliassing across scopes: keyboard_events_size#18 keyboard_events_size#10
+Not aliassing across scopes: print_screen#25 print_screen#0
+Not aliassing across scopes: print_line_cursor#46 print_screen#0
+Not aliassing across scopes: print_char_cursor#49 print_screen#0
+Not aliassing across scopes: form_cursor_count#26 form_cursor_count#25
+Not aliassing across scopes: keyboard_events_size#46 keyboard_events_size#0
+Not aliassing across scopes: keyboard_modifiers#47 keyboard_modifiers#0
+Not aliassing across scopes: form_field_idx#36 form_field_idx#35
+Not aliassing across scopes: form_fields_cnt#36 form_fields_cnt#0
+Not aliassing across scopes: print_screen#13 print_screen#17
+Not aliassing across scopes: print_line_cursor#26 print_line_cursor#17
+Not aliassing across scopes: print_char_cursor#10 print_char_cursor#18
+Not aliassing across scopes: form_cursor_count#0 form_cursor_count#13
+Not aliassing across scopes: keyboard_events_size#21 keyboard_events_size#24
+Not aliassing across scopes: keyboard_modifiers#19 keyboard_modifiers#10
+Not aliassing across scopes: form_field_idx#0 form_field_idx#14
+Not aliassing across scopes: print_screen#31 print_screen#14
+Not aliassing across scopes: print_line_cursor#53 print_line_cursor#10
+Not aliassing across scopes: print_char_cursor#54 print_char_cursor#11
+Not aliassing across scopes: form_cursor_count#53 form_cursor_count#1
+Not aliassing across scopes: keyboard_events_size#100 keyboard_events_size#22
+Not aliassing across scopes: keyboard_modifiers#81 keyboard_modifiers#20
+Not aliassing across scopes: form_field_idx#61 form_field_idx#1
+Not aliassing across scopes: form_fields_cnt#30 form_fields_cnt#32
+Not aliassing across scopes: print_set_screen::screen#0 COLS#0
+Not aliassing across scopes: print_screen#15 print_screen#1
+Not aliassing across scopes: print_line_cursor#11 print_screen#1
+Not aliassing across scopes: print_char_cursor#12 print_screen#1
+Not aliassing across scopes: print_line_cursor#12 print_line_cursor#24
+Not aliassing across scopes: print_char_cursor#13 print_line_cursor#24
+Not aliassing across scopes: print_str_lines::str#1 MENU_COLS#0
+Not aliassing across scopes: print_char_cursor#14 print_char_cursor#22
+Not aliassing across scopes: print_line_cursor#13 print_line_cursor#2
+Not aliassing across scopes: print_set_screen::screen#1 menu::SCREEN#0
+Not aliassing across scopes: print_screen#16 print_screen#1
+Not aliassing across scopes: print_line_cursor#14 print_screen#1
+Not aliassing across scopes: print_char_cursor#15 print_screen#1
+Not aliassing across scopes: print_line_cursor#15 print_line_cursor#24
+Not aliassing across scopes: print_char_cursor#16 print_line_cursor#24
+Not aliassing across scopes: print_str_lines::str#2 MENU_TEXT#0
+Not aliassing across scopes: print_char_cursor#17 print_char_cursor#22
+Not aliassing across scopes: print_line_cursor#16 print_line_cursor#2
+Not aliassing across scopes: form_set_screen::screen#0 menu::SCREEN#0
+Not aliassing across scopes: form_cursor_count#12 form_cursor_count#16
+Not aliassing across scopes: keyboard_events_size#23 keyboard_events_size#11
+Not aliassing across scopes: keyboard_modifiers#21 keyboard_modifiers#11
+Not aliassing across scopes: form_field_idx#13 form_field_idx#18
+Not aliassing across scopes: form_set_screen::line#0 form_set_screen::screen#0
+Not aliassing across scopes: form_field_ptr::field_idx#2 form_field_ptr::field_idx#1
+Not aliassing across scopes: form_fields_cnt#7 form_fields_cnt#11
+Not aliassing across scopes: form_field_ptr::field_idx#0 form_render_values::idx#2
+Not aliassing across scopes: form_field_ptr::return#2 form_field_ptr::return#0
+Not aliassing across scopes: form_render_values::field#0 form_field_ptr::return#2
+Not aliassing across scopes: form_field_idx#15 form_field_idx#27
+Not aliassing across scopes: form_cursor_count#14 form_cursor_count#20
+Not aliassing across scopes: keyboard_events_size#38 keyboard_events_size#36
+Not aliassing across scopes: keyboard_modifiers#37 keyboard_modifiers#35
+Not aliassing across scopes: form_fields_cnt#10 form_fields_cnt#24
+Not aliassing across scopes: form_field_ptr::field_idx#1 form_field_idx#15
+Not aliassing across scopes: form_field_ptr::return#3 form_field_ptr::return#0
+Not aliassing across scopes: form_control::field#0 form_field_ptr::return#3
+Not aliassing across scopes: form_cursor_count#6 FORM_CURSOR_BLINK#0
+Not aliassing across scopes: keyboard_events_size#10 keyboard_events_size#17
+Not aliassing across scopes: keyboard_modifiers#11 keyboard_modifiers#18
+Not aliassing across scopes: keyboard_event_get::return#3 keyboard_event_get::return#2
+Not aliassing across scopes: keyboard_events_size#11 keyboard_events_size#20
+Not aliassing across scopes: form_control::key_event#0 keyboard_event_get::return#3
+Not aliassing across scopes: print_screen#18 print_screen#14
+Not aliassing across scopes: print_line_cursor#18 print_line_cursor#10
+Not aliassing across scopes: print_char_cursor#19 print_char_cursor#11
+Not aliassing across scopes: form_cursor_count#17 form_cursor_count#1
+Not aliassing across scopes: keyboard_events_size#13 keyboard_events_size#22
+Not aliassing across scopes: keyboard_modifiers#13 keyboard_modifiers#20
Not aliassing across scopes: form_field_idx#10 form_field_idx#1
-Not aliassing across scopes: key_right_debounce#14 key_right_debounce#1
Self Phi Eliminated (byte*) print_line_cursor#36
Self Phi Eliminated (byte*) print_char_cursor#23
Self Phi Eliminated (byte*) print_line_cursor#24
+Self Phi Eliminated (byte) keyboard_event_scan::row_scan#1
+Self Phi Eliminated (byte) keyboard_event_scan::row#10
Self Phi Eliminated (byte) form_fields_cnt#32
Self Phi Eliminated (byte*) print_screen#21
Self Phi Eliminated (byte*) print_line_cursor#41
Self Phi Eliminated (byte*) print_char_cursor#43
-Self Phi Eliminated (signed byte) form_cursor_count#28
-Self Phi Eliminated (byte) key_down_debounce#26
-Self Phi Eliminated (byte) form_field_idx#38
-Self Phi Eliminated (byte) key_right_debounce#26
+Self Phi Eliminated (signed byte) form_cursor_count#27
+Self Phi Eliminated (byte) keyboard_events_size#47
+Self Phi Eliminated (byte) keyboard_modifiers#48
+Self Phi Eliminated (byte) form_field_idx#37
Self Phi Eliminated (byte) form_fields_cnt#11
Self Phi Eliminated (signed byte) form_cursor_count#20
-Self Phi Eliminated (byte) key_down_debounce#17
+Self Phi Eliminated (byte) keyboard_events_size#36
+Self Phi Eliminated (byte) keyboard_modifiers#35
Self Phi Eliminated (byte) form_field_idx#27
-Self Phi Eliminated (byte) key_right_debounce#17
Self Phi Eliminated (byte*) print_screen#29
Self Phi Eliminated (byte*) print_line_cursor#49
Self Phi Eliminated (byte*) print_char_cursor#52
-Self Phi Eliminated (byte) form_fields_cnt#26
+Self Phi Eliminated (byte) form_fields_cnt#24
Self Phi Eliminated (byte) form_fields_cnt#1
Succesful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) print_line_cursor#36 (byte*) print_line_cursor#2
@@ -5259,38 +6201,42 @@ Redundant Phi (byte*) print_char_cursor#40 (byte*) print_char_cursor#38
Redundant Phi (byte*) print_char_cursor#23 (byte*) print_char_cursor#40
Redundant Phi (byte*) print_line_cursor#24 (byte*) print_screen#9
Redundant Phi (byte) keyboard_matrix_read::rowid#1 (byte) keyboard_matrix_read::rowid#0
+Redundant Phi (byte) keyboard_events_size#81 (byte) keyboard_events_size#38
+Redundant Phi (byte) keyboard_event_scan::row_scan#1 (byte) keyboard_event_scan::row_scan#0
+Redundant Phi (byte) keyboard_event_scan::row#10 (byte) keyboard_event_scan::row#2
+Redundant Phi (byte) keyboard_events_size#18 (byte) keyboard_events_size#10
Redundant Phi (byte*) print_screen#25 (byte*) print_screen#0
Redundant Phi (byte*) print_line_cursor#46 (byte*) print_screen#0
Redundant Phi (byte*) print_char_cursor#49 (byte*) print_screen#0
-Redundant Phi (signed byte) form_cursor_count#27 (signed byte) form_cursor_count#26
-Redundant Phi (byte) key_down_debounce#25 (byte) key_down_debounce#24
-Redundant Phi (byte) form_field_idx#37 (byte) form_field_idx#36
-Redundant Phi (byte) key_right_debounce#25 (byte) key_right_debounce#24
-Redundant Phi (byte) form_fields_cnt#37 (byte) form_fields_cnt#0
-Redundant Phi (byte) form_fields_cnt#32 (byte) form_fields_cnt#37
+Redundant Phi (signed byte) form_cursor_count#26 (signed byte) form_cursor_count#25
+Redundant Phi (byte) keyboard_events_size#46 (byte) keyboard_events_size#0
+Redundant Phi (byte) keyboard_modifiers#47 (byte) keyboard_modifiers#0
+Redundant Phi (byte) form_field_idx#36 (byte) form_field_idx#35
+Redundant Phi (byte) form_fields_cnt#36 (byte) form_fields_cnt#0
+Redundant Phi (byte) form_fields_cnt#32 (byte) form_fields_cnt#36
Redundant Phi (byte*) print_screen#13 (byte*) print_screen#17
Redundant Phi (byte*) print_line_cursor#26 (byte*) print_line_cursor#17
Redundant Phi (byte*) print_char_cursor#10 (byte*) print_char_cursor#18
Redundant Phi (signed byte) form_cursor_count#0 (signed byte) form_cursor_count#13
-Redundant Phi (byte) key_down_debounce#0 (byte) key_down_debounce#11
+Redundant Phi (byte) keyboard_events_size#21 (byte) keyboard_events_size#24
+Redundant Phi (byte) keyboard_modifiers#19 (byte) keyboard_modifiers#10
Redundant Phi (byte) form_field_idx#0 (byte) form_field_idx#14
-Redundant Phi (byte) key_right_debounce#0 (byte) key_right_debounce#11
Redundant Phi (byte*) print_screen#31 (byte*) print_screen#14
Redundant Phi (byte*) print_line_cursor#53 (byte*) print_line_cursor#10
Redundant Phi (byte*) print_char_cursor#54 (byte*) print_char_cursor#11
-Redundant Phi (signed byte) form_cursor_count#58 (signed byte) form_cursor_count#1
-Redundant Phi (byte) key_down_debounce#65 (byte) key_down_debounce#1
-Redundant Phi (byte) form_field_idx#67 (byte) form_field_idx#1
-Redundant Phi (byte) key_right_debounce#65 (byte) key_right_debounce#1
-Redundant Phi (byte) form_fields_cnt#29 (byte) form_fields_cnt#32
+Redundant Phi (signed byte) form_cursor_count#53 (signed byte) form_cursor_count#1
+Redundant Phi (byte) keyboard_events_size#100 (byte) keyboard_events_size#22
+Redundant Phi (byte) keyboard_modifiers#81 (byte) keyboard_modifiers#20
+Redundant Phi (byte) form_field_idx#61 (byte) form_field_idx#1
+Redundant Phi (byte) form_fields_cnt#30 (byte) form_fields_cnt#32
Redundant Phi (byte*) print_screen#21 (byte*) print_screen#31
Redundant Phi (byte*) print_line_cursor#41 (byte*) print_line_cursor#53
Redundant Phi (byte*) print_char_cursor#43 (byte*) print_char_cursor#54
-Redundant Phi (signed byte) form_cursor_count#28 (signed byte) form_cursor_count#58
-Redundant Phi (byte) key_down_debounce#26 (byte) key_down_debounce#65
-Redundant Phi (byte) form_field_idx#38 (byte) form_field_idx#67
-Redundant Phi (byte) key_right_debounce#26 (byte) key_right_debounce#65
-Redundant Phi (byte) form_fields_cnt#11 (byte) form_fields_cnt#29
+Redundant Phi (signed byte) form_cursor_count#27 (signed byte) form_cursor_count#53
+Redundant Phi (byte) keyboard_events_size#47 (byte) keyboard_events_size#100
+Redundant Phi (byte) keyboard_modifiers#48 (byte) keyboard_modifiers#81
+Redundant Phi (byte) form_field_idx#37 (byte) form_field_idx#61
+Redundant Phi (byte) form_fields_cnt#11 (byte) form_fields_cnt#30
Redundant Phi (byte*) print_screen#15 (byte*) print_screen#1
Redundant Phi (byte*) print_line_cursor#11 (byte*) print_screen#1
Redundant Phi (byte*) print_char_cursor#12 (byte*) print_screen#1
@@ -5306,58 +6252,71 @@ Redundant Phi (byte*) print_char_cursor#16 (byte*) print_line_cursor#24
Redundant Phi (byte*) print_char_cursor#17 (byte*) print_char_cursor#22
Redundant Phi (byte*) print_line_cursor#16 (byte*) print_line_cursor#2
Redundant Phi (signed byte) form_cursor_count#20 (signed byte) form_cursor_count#13
-Redundant Phi (byte) key_down_debounce#17 (byte) key_down_debounce#11
+Redundant Phi (byte) keyboard_events_size#36 (byte) keyboard_events_size#24
+Redundant Phi (byte) keyboard_modifiers#35 (byte) keyboard_modifiers#10
Redundant Phi (byte) form_field_idx#27 (byte) form_field_idx#14
-Redundant Phi (byte) key_right_debounce#17 (byte) key_right_debounce#11
Redundant Phi (byte*) print_screen#29 (byte*) print_screen#17
Redundant Phi (byte*) print_line_cursor#49 (byte*) print_line_cursor#17
Redundant Phi (byte*) print_char_cursor#52 (byte*) print_char_cursor#18
-Redundant Phi (byte) form_fields_cnt#26 (byte) form_fields_cnt#30
+Redundant Phi (byte) form_fields_cnt#24 (byte) form_fields_cnt#28
Redundant Phi (signed byte) form_cursor_count#12 (signed byte) form_cursor_count#16
-Redundant Phi (byte) key_down_debounce#10 (byte) key_down_debounce#13
+Redundant Phi (byte) keyboard_events_size#23 (byte) keyboard_events_size#11
+Redundant Phi (byte) keyboard_modifiers#21 (byte) keyboard_modifiers#11
Redundant Phi (byte) form_field_idx#13 (byte) form_field_idx#18
-Redundant Phi (byte) key_right_debounce#10 (byte) key_right_debounce#13
Redundant Phi (byte*) form_set_screen::line#0 (byte*) form_set_screen::screen#0
Redundant Phi (byte) form_fields_cnt#7 (byte) form_fields_cnt#11
Redundant Phi (byte) form_fields_cnt#1 (byte) form_fields_cnt#7
Redundant Phi (byte) form_field_idx#15 (byte) form_field_idx#27
Redundant Phi (signed byte) form_cursor_count#14 (signed byte) form_cursor_count#20
-Redundant Phi (byte) key_down_debounce#12 (byte) key_down_debounce#17
-Redundant Phi (byte) key_right_debounce#12 (byte) key_right_debounce#17
-Redundant Phi (byte) form_fields_cnt#10 (byte) form_fields_cnt#26
+Redundant Phi (byte) keyboard_events_size#38 (byte) keyboard_events_size#36
+Redundant Phi (byte) keyboard_modifiers#37 (byte) keyboard_modifiers#35
+Redundant Phi (byte) form_fields_cnt#10 (byte) form_fields_cnt#24
+Redundant Phi (byte) keyboard_events_size#10 (byte) keyboard_events_size#17
+Redundant Phi (byte) keyboard_modifiers#11 (byte) keyboard_modifiers#18
+Redundant Phi (byte) keyboard_events_size#11 (byte) keyboard_events_size#20
Redundant Phi (byte*) print_screen#18 (byte*) print_screen#14
Redundant Phi (byte*) print_line_cursor#18 (byte*) print_line_cursor#10
Redundant Phi (byte*) print_char_cursor#19 (byte*) print_char_cursor#11
Redundant Phi (signed byte) form_cursor_count#17 (signed byte) form_cursor_count#1
-Redundant Phi (byte) key_down_debounce#14 (byte) key_down_debounce#1
+Redundant Phi (byte) keyboard_events_size#13 (byte) keyboard_events_size#22
+Redundant Phi (byte) keyboard_modifiers#13 (byte) keyboard_modifiers#20
Redundant Phi (byte) form_field_idx#10 (byte) form_field_idx#1
-Redundant Phi (byte) key_right_debounce#14 (byte) key_right_debounce#1
Succesful SSA optimization Pass2RedundantPhiElimination
Redundant Phi (byte*) print_char_cursor#46 (byte*) print_screen#9
Redundant Phi (byte*) print_line_cursor#44 (byte*) print_screen#9
Redundant Phi (byte*) print_screen#9 (byte*) print_screen#1
+Redundant Phi (byte) keyboard_event_scan::row#6 (byte) keyboard_event_scan::row#2
Succesful SSA optimization Pass2RedundantPhiElimination
Simple Condition (boolean~) print_str_lines::$0 if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@2
Simple Condition (boolean~) print_str_lines::$2 if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5
Simple Condition (boolean~) print_str_lines::$3 if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4
Simple Condition (boolean~) print_ln::$1 if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1
Simple Condition (boolean~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
+Simple Condition (boolean~) keyboard_event_scan::$2 if((byte) keyboard_event_scan::row_scan#0==*((byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@2
+Simple Condition (boolean~) keyboard_event_scan::$6 if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@4
+Simple Condition (boolean~) keyboard_event_scan::$13 if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@3
+Simple Condition (boolean~) keyboard_event_scan::$8 if((byte) keyboard_events_size#14==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@5
+Simple Condition (boolean~) keyboard_event_scan::$11 if((byte) keyboard_event_scan::event_type#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@6
+Simple Condition (boolean~) keyboard_event_scan::$15 if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1
+Simple Condition (boolean~) keyboard_event_scan::$18 if((byte~) keyboard_event_scan::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9
+Simple Condition (boolean~) keyboard_event_scan::$22 if((byte~) keyboard_event_scan::$20==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10
+Simple Condition (boolean~) keyboard_event_scan::$26 if((byte~) keyboard_event_scan::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11
+Simple Condition (boolean~) keyboard_event_scan::$30 if((byte~) keyboard_event_scan::$28==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@12
+Simple Condition (boolean~) keyboard_event_get::$1 if((byte) keyboard_events_size#17!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@1
Simple Condition (boolean~) menu::$23 if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1
Simple Condition (boolean~) menu::$32 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto menu::@6
Simple Condition (boolean~) form_set_screen::$3 if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1
Simple Condition (boolean~) form_render_values::$1 if((byte) form_render_values::idx#1<(byte) form_fields_cnt#0) goto form_render_values::@1
Simple Condition (boolean~) form_control::$2 if((signed byte) form_cursor_count#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@1
Simple Condition (boolean~) form_control::$5 if((signed byte) form_cursor_count#15>=(signed word/signed byte/signed dword~) form_control::$3) goto form_control::@2
-Simple Condition (boolean~) form_control::$10 if((byte) form_control::key_down#0==(byte) key_down_debounce#11) goto form_control::@4
-Simple Condition (boolean~) form_control::$25 if((byte) form_control::key_right#0==(byte) key_right_debounce#11) goto form_control::@10
-Simple Condition (boolean~) form_control::$12 if((byte) form_control::key_down#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@5
-Simple Condition (boolean~) form_control::$16 if((byte~) form_control::$14!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@6
-Simple Condition (boolean~) form_control::$20 if((byte) form_field_idx#42!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@9
-Simple Condition (boolean~) form_control::$18 if((byte) form_field_idx#41!=(byte) form_fields_cnt#30) goto form_control::@7
-Simple Condition (boolean~) form_control::$27 if((byte) form_control::key_right#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@11
-Simple Condition (boolean~) form_control::$30 if((byte~) form_control::$28!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@12
-Simple Condition (boolean~) form_control::$34 if(*((byte[]) form_fields_val#0 + (byte) form_field_idx#14)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@15
-Simple Condition (boolean~) form_control::$32 if(*((byte[]) form_fields_val#0 + (byte) form_field_idx#14)<=*((byte[]) form_fields_max#0 + (byte) form_field_idx#14)) goto form_control::@13
+Simple Condition (boolean~) form_control::$11 if((byte) form_control::key_event#0!=(byte) KEY_CRSR_DOWN#0) goto form_control::@4
+Simple Condition (boolean~) form_control::$23 if((byte) form_control::key_event#0!=(byte) KEY_CRSR_RIGHT#0) goto form_control::@9
+Simple Condition (boolean~) form_control::$15 if((byte~) form_control::$13!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@5
+Simple Condition (boolean~) form_control::$19 if((byte) form_field_idx#41!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@8
+Simple Condition (boolean~) form_control::$17 if((byte) form_field_idx#40!=(byte) form_fields_cnt#28) goto form_control::@6
+Simple Condition (boolean~) form_control::$26 if((byte~) form_control::$24!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@10
+Simple Condition (boolean~) form_control::$30 if(*((byte[]) form_fields_val#0 + (byte) form_field_idx#14)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@13
+Simple Condition (boolean~) form_control::$28 if(*((byte[]) form_fields_val#0 + (byte) form_field_idx#14)<=*((byte[]) form_fields_max#0 + (byte) form_field_idx#14)) goto form_control::@11
Succesful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) RASTER#0 = ((byte*))53266
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
@@ -5383,34 +6342,54 @@ Constant (const byte*) DTV_COLOR_BANK_HI#0 = ((byte*))53303
Constant (const dword) DTV_COLOR_BANK_DEFAULT#0 = 120832
Constant (const byte*) DTV_GRAPHICS_VIC_BANK#0 = ((byte*))53309
Constant (const byte*) print_screen#0 = ((byte*))1024
-Constant (const string) print_hextab#0 = $19
+Constant (const string) print_hextab#0 = $20
Constant (const byte) KEY_CRSR_RIGHT#0 = 2
Constant (const byte) KEY_CRSR_DOWN#0 = 7
+Constant (const byte) KEY_LSHIFT#0 = 15
Constant (const byte) KEY_RSHIFT#0 = 52
+Constant (const byte) KEY_CTRL#0 = 58
+Constant (const byte) KEY_COMMODORE#0 = 61
Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { 254, 253, 251, 247, 239, 223, 191, 127 }
-Constant (const byte[]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 }
-Constant (const string) $0 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
-Constant (const string) $9 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"
+Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 }
+Constant (const byte[8]) keyboard_events#0 = { fill( 8, 0) }
+Constant (const byte) keyboard_events_size#0 = 0
+Constant (const byte) keyboard_modifiers#0 = 0
+Constant (const byte) KEY_MODIFIER_LSHIFT#0 = 1
+Constant (const byte) KEY_MODIFIER_RSHIFT#0 = 2
+Constant (const byte) KEY_MODIFIER_CTRL#0 = 4
+Constant (const byte) KEY_MODIFIER_COMMODORE#0 = 8
+Constant (const byte[8]) keyboard_scan_values#0 = { fill( 8, 0) }
+Constant (const byte) keyboard_event_scan::keycode#0 = 0
+Constant (const byte) keyboard_event_scan::row#0 = 0
+Constant (const byte) keyboard_event_scan::col#0 = 0
+Constant (const byte) keyboard_modifiers#1 = 0
+Constant (const byte) keyboard_event_get::return#1 = 255
+Constant (const string) $1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
+Constant (const string) $10 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"
Constant (const byte*) menu::SCREEN#0 = ((byte*))32768
Constant (const byte*) menu::CHARSET#0 = ((byte*))38912
Constant (const byte) menu::i#0 = 0
Constant (const byte[25]) form_line_lo#0 = { fill( 25, 0) }
Constant (const byte[25]) form_line_hi#0 = { fill( 25, 0) }
-Constant (const byte) form_field_idx#36 = 0
+Constant (const byte) form_field_idx#35 = 0
Constant (const byte) form_fields_cnt#0 = 35
Constant (const byte[]) form_fields_x#0 = { 22, 7, 7, 7, 7, 7, 7, 7, 17, 17, 17, 16, 17, 16, 17, 16, 17, 27, 26, 27, 26, 27, 26, 27, 38, 38, 38, 37, 38, 37, 38, 37, 38, 37, 38 }
Constant (const byte[]) form_fields_y#0 = { 0, 2, 3, 4, 5, 6, 7, 8, 7, 8, 2, 3, 3, 4, 4, 5, 5, 2, 3, 3, 4, 4, 5, 5, 2, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8 }
Constant (const byte[]) form_fields_max#0 = { 13, 1, 1, 1, 1, 1, 2, 1, 1, 1, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 }
Constant (const byte[]) form_fields_val#0 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
-Constant (const byte) key_down_debounce#24 = 0
-Constant (const byte) key_right_debounce#24 = 0
Constant (const signed byte) FORM_CURSOR_BLINK#0 = 40
Constant (const byte) form_set_screen::y#0 = 0
Constant (const byte) form_render_values::idx#0 = 0
Constant (const byte) form_field_idx#7 = 0
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $1 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
-Constant (const string) $10 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"
+Constant (const byte) KEY_MODIFIER_SHIFT#0 = KEY_MODIFIER_LSHIFT#0|KEY_MODIFIER_RSHIFT#0
+Constant (const byte) keyboard_event_pressed::keycode#0 = KEY_LSHIFT#0
+Constant (const byte) keyboard_event_pressed::keycode#1 = KEY_RSHIFT#0
+Constant (const byte) keyboard_modifiers#2 = keyboard_modifiers#1|KEY_MODIFIER_LSHIFT#0
+Constant (const byte) keyboard_event_pressed::keycode#2 = KEY_CTRL#0
+Constant (const byte) keyboard_event_pressed::keycode#3 = KEY_COMMODORE#0
+Constant (const string) $2 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
+Constant (const string) $11 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"
Constant (const dword) menu::$0 = ((dword))menu::CHARSET#0
Constant (const dword) menu::$3 = DTV_COLOR_BANK_DEFAULT#0/1024
Constant (const dword) menu::$6 = DTV_COLOR_BANK_DEFAULT#0/1024
@@ -5421,17 +6400,13 @@ Constant (const word) menu::$18 = ((word))menu::CHARSET#0
Constant (const byte*) print_set_screen::screen#0 = COLS#0
Constant (const byte*) print_set_screen::screen#1 = menu::SCREEN#0
Constant (const byte*) form_set_screen::screen#0 = menu::SCREEN#0
-Constant (const signed byte) form_cursor_count#26 = FORM_CURSOR_BLINK#0/2
+Constant (const signed byte) form_cursor_count#25 = FORM_CURSOR_BLINK#0/2
Constant (const signed word/signed byte/signed dword) form_control::$3 = FORM_CURSOR_BLINK#0/2
Constant (const signed byte) form_cursor_count#6 = FORM_CURSOR_BLINK#0
-Constant (const byte) keyboard_key_pressed::key#0 = KEY_CRSR_DOWN#0
-Constant (const byte) keyboard_key_pressed::key#1 = KEY_CRSR_RIGHT#0
-Constant (const byte) keyboard_key_pressed::key#2 = KEY_RSHIFT#0
Constant (const signed byte) form_cursor_count#7 = FORM_CURSOR_BLINK#0/2
-Constant (const byte) keyboard_key_pressed::key#3 = KEY_RSHIFT#0
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $2 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
-Constant (const string) $11 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"+" mcm 0 start 00 start 00 gfx g0 @"
+Constant (const string) $3 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
+Constant (const string) $12 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"+" mcm 0 start 00 start 00 gfx g0 @"
Constant (const dword) menu::$1 = menu::$0/65536
Constant (const word) menu::$4 = ((word))menu::$3
Constant (const word) menu::$7 = ((word))menu::$6
@@ -5440,8 +6415,8 @@ Constant (const byte/word/dword) menu::$14 = menu::$13|3
Constant (const word) menu::$16 = menu::$15&16383
Constant (const word) menu::$19 = menu::$18&16383
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $3 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
-Constant (const string) $12 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"+" mcm 0 start 00 start 00 gfx g0 @"+" ecm 0 step 00 step 00 colors c0 @"
+Constant (const string) $4 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
+Constant (const string) $13 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"+" mcm 0 start 00 start 00 gfx g0 @"+" ecm 0 step 00 step 00 colors c0 @"
Constant (const byte) menu::$2 = ((byte))menu::$1
Constant (const byte) menu::$5 = menu::$7
@@ -5449,20 +6424,20 @@ Constant (const byte) menu::$11 = ((byte))menu::$10
Constant (const word/signed dword/dword) menu::$17 = menu::$16/64
Constant (const word/signed dword/dword) menu::$20 = menu::$19/1024
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $4 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
-Constant (const string) $13 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"+" mcm 0 start 00 start 00 gfx g0 @"+" ecm 0 step 00 step 00 colors c0 @"+" hicol 0 mod 00 mod 00 bgcol0 00 @"
+Constant (const string) $5 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"
+Constant (const string) $14 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"+" mcm 0 start 00 start 00 gfx g0 @"+" ecm 0 step 00 step 00 colors c0 @"+" hicol 0 mod 00 mod 00 bgcol0 00 @"
Constant (const byte/word/dword) menu::$12 = 3^menu::$11
Constant (const word/dword) menu::$21 = menu::$17|menu::$20
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $5 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn ooooooooo @"
-Constant (const string) $14 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"+" mcm 0 start 00 start 00 gfx g0 @"+" ecm 0 step 00 step 00 colors c0 @"+" hicol 0 mod 00 mod 00 bgcol0 00 @"+" line 0 bgcol1 00 @"
+Constant (const string) $6 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn ooooooooo @"
+Constant (const string) $15 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"+" mcm 0 start 00 start 00 gfx g0 @"+" ecm 0 step 00 step 00 colors c0 @"+" hicol 0 mod 00 mod 00 bgcol0 00 @"+" line 0 bgcol1 00 @"
Constant (const byte) menu::$22 = ((byte))menu::$21
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $6 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn ooooooooo @"+" nnnnnnn nnnnnnnn ooooooooo @"
-Constant (const string) $15 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"+" mcm 0 start 00 start 00 gfx g0 @"+" ecm 0 step 00 step 00 colors c0 @"+" hicol 0 mod 00 mod 00 bgcol0 00 @"+" line 0 bgcol1 00 @"+" colof 0 borof 0 bgcol2 00 @"
+Constant (const string) $7 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn ooooooooo @"+" nnnnnnn nnnnnnnn ooooooooo @"
+Constant (const string) $16 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"+" mcm 0 start 00 start 00 gfx g0 @"+" ecm 0 step 00 step 00 colors c0 @"+" hicol 0 mod 00 mod 00 bgcol0 00 @"+" line 0 bgcol1 00 @"+" colof 0 borof 0 bgcol2 00 @"
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $7 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn ooooooooo @"+" nnnnnnn nnnnnnnn ooooooooo @"+" nnnnnnn nnnnnnnn ooooooooo @"
-Constant (const string) $16 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"+" mcm 0 start 00 start 00 gfx g0 @"+" ecm 0 step 00 step 00 colors c0 @"+" hicol 0 mod 00 mod 00 bgcol0 00 @"+" line 0 bgcol1 00 @"+" colof 0 borof 0 bgcol2 00 @"+" chunk 0 overs 0 bgcol3 00 @"
+Constant (const string) $8 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn ooooooooo @"+" nnnnnnn nnnnnnnn ooooooooo @"+" nnnnnnn nnnnnnnn ooooooooo @"
+Constant (const string) $17 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"+" mcm 0 start 00 start 00 gfx g0 @"+" ecm 0 step 00 step 00 colors c0 @"+" hicol 0 mod 00 mod 00 bgcol0 00 @"+" line 0 bgcol1 00 @"+" colof 0 borof 0 bgcol2 00 @"+" chunk 0 overs 0 bgcol3 00 @"
Succesful SSA optimization Pass2ConstantIdentification
Constant (const string) MENU_COLS#0 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn mmmmmmmm mmmmmmmm ooooooooo @"+" nnnnnnn ooooooooo @"+" nnnnnnn nnnnnnnn ooooooooo @"+" nnnnnnn nnnnnnnn ooooooooo @"+"@"
Constant (const string) MENU_TEXT#0 = " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"+" mcm 0 start 00 start 00 gfx g0 @"+" ecm 0 step 00 step 00 colors c0 @"+" hicol 0 mod 00 mod 00 bgcol0 00 @"+" line 0 bgcol1 00 @"+" colof 0 borof 0 bgcol2 00 @"+" chunk 0 overs 0 bgcol3 00 @"+"@"
@@ -5471,6 +6446,12 @@ Constant (const string) print_str_lines::str#1 = MENU_COLS#0
Constant (const string) print_str_lines::str#2 = MENU_TEXT#0
Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte*) print_screen#1
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::keycode#11
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#14
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#14
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte*) form_set_screen::line#2
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#14
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#14
@@ -5487,7 +6468,6 @@ Succesful SSA optimization Pass2FixInlineConstructors
Eliminating unused variable - keeping the phi block (byte*) print_screen#14
Eliminating unused variable - keeping the phi block (byte*) print_line_cursor#10
Eliminating unused variable - keeping the phi block (byte*) print_char_cursor#11
-Eliminating unused constant (const string) $20
Eliminating unused constant (const string) $21
Eliminating unused constant (const string) $22
Eliminating unused constant (const string) $23
@@ -5507,8 +6487,7 @@ Eliminating unused constant (const string) $36
Eliminating unused constant (const string) $37
Eliminating unused constant (const string) $38
Eliminating unused constant (const string) $39
-Eliminating unused constant (const string) $0
-Eliminating unused constant (const string) $9
+Eliminating unused constant (const string) $40
Eliminating unused constant (const string) $1
Eliminating unused constant (const string) $10
Eliminating unused constant (const string) $2
@@ -5523,6 +6502,8 @@ Eliminating unused constant (const string) $6
Eliminating unused constant (const string) $15
Eliminating unused constant (const string) $7
Eliminating unused constant (const string) $16
+Eliminating unused constant (const string) $8
+Eliminating unused constant (const string) $17
Succesful SSA optimization PassNEliminateUnusedVars
Eliminating unused variable - keeping the phi block (byte*) print_screen#17
Eliminating unused variable - keeping the phi block (byte*) print_line_cursor#17
@@ -5538,38 +6519,52 @@ Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) @11
Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) @15
+Culled Empty Block (label) @19
+Culled Empty Block (label) keyboard_event_scan::@13
+Culled Empty Block (label) keyboard_event_scan::@5
+Not culling empty block because it shares successor with its predecessor. (label) keyboard_event_scan::@21
+Culled Empty Block (label) keyboard_event_scan::@12
+Culled Empty Block (label) keyboard_event_get::@3
Culled Empty Block (label) main::@7
-Culled Empty Block (label) @20
+Culled Empty Block (label) @23
Culled Empty Block (label) menu::@22
Culled Empty Block (label) menu::@3
Culled Empty Block (label) menu::@6
Culled Empty Block (label) menu::@23
-Culled Empty Block (label) @21
-Not culling empty block because it shares successor with its predecessor. (label) form_control::@16
-Culled Empty Block (label) form_control::@5
-Culled Empty Block (label) form_control::@7
-Not culling empty block because it shares successor with its predecessor. (label) form_control::@22
+Culled Empty Block (label) @24
+Not culling empty block because it shares successor with its predecessor. (label) form_control::@14
+Culled Empty Block (label) form_control::@6
+Not culling empty block because it shares successor with its predecessor. (label) form_control::@19
+Culled Empty Block (label) form_control::@8
Culled Empty Block (label) form_control::@9
-Culled Empty Block (label) form_control::@10
Culled Empty Block (label) form_control::@11
Culled Empty Block (label) form_control::@13
-Culled Empty Block (label) form_control::@15
-Culled Empty Block (label) @26
+Culled Empty Block (label) @29
Succesful SSA optimization Pass2CullEmptyBlocks
-Not culling empty block because it shares successor with its predecessor. (label) form_control::@16
-Not culling empty block because it shares successor with its predecessor. (label) form_control::@22
+Not culling empty block because it shares successor with its predecessor. (label) keyboard_event_scan::@21
+Not culling empty block because it shares successor with its predecessor. (label) form_control::@14
+Not culling empty block because it shares successor with its predecessor. (label) form_control::@19
Not aliassing across scopes: print_char_cursor#22 print_screen#1
Not aliassing across scopes: print_line_cursor#2 print_screen#1
Not aliassing across scopes: print_line_cursor#21 print_line_cursor#2
Not aliassing across scopes: print_cls::sc#0 print_screen#1
Not aliassing across scopes: print_screen#1 print_set_screen::screen#2
-Not aliassing across scopes: keyboard_matrix_read::rowid#0 keyboard_key_pressed::rowidx#0
+Not aliassing across scopes: keyboard_events_size#43 keyboard_events_size#24
+Not aliassing across scopes: keyboard_matrix_read::rowid#0 keyboard_event_scan::row#2
Not aliassing across scopes: keyboard_matrix_read::return#2 keyboard_matrix_read::return#0
-Not aliassing across scopes: keyboard_key_pressed::$2 keyboard_matrix_read::return#2
+Not aliassing across scopes: keyboard_event_scan::row_scan#0 keyboard_matrix_read::return#2
+Not aliassing across scopes: keyboard_event_pressed::return#0 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$16 keyboard_event_pressed::return#0
+Not aliassing across scopes: keyboard_event_pressed::return#1 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$20 keyboard_event_pressed::return#1
+Not aliassing across scopes: keyboard_event_pressed::return#2 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$24 keyboard_event_pressed::return#2
+Not aliassing across scopes: keyboard_event_pressed::return#3 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$28 keyboard_event_pressed::return#3
Not aliassing across scopes: form_cursor_count#13 form_cursor_count#1
-Not aliassing across scopes: key_down_debounce#11 key_down_debounce#1
+Not aliassing across scopes: keyboard_events_size#24 keyboard_events_size#22
+Not aliassing across scopes: keyboard_modifiers#10 keyboard_modifiers#20
Not aliassing across scopes: form_field_idx#14 form_field_idx#1
-Not aliassing across scopes: key_right_debounce#11 key_right_debounce#1
Not aliassing across scopes: form_field_ptr::field_idx#2 form_field_ptr::field_idx#1
Not aliassing across scopes: form_field_ptr::field_idx#0 form_render_values::idx#2
Not aliassing across scopes: form_field_ptr::return#2 form_field_ptr::return#0
@@ -5577,26 +6572,22 @@ Not aliassing across scopes: form_render_values::field#0 form_field_ptr::return#
Not aliassing across scopes: form_field_ptr::field_idx#1 form_field_idx#14
Not aliassing across scopes: form_field_ptr::return#3 form_field_ptr::return#0
Not aliassing across scopes: form_control::field#0 form_field_ptr::return#3
-Not aliassing across scopes: keyboard_key_pressed::return#2 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::key_down#0 keyboard_key_pressed::return#2
-Not aliassing across scopes: key_down_debounce#20 key_down_debounce#11
-Not aliassing across scopes: keyboard_key_pressed::return#3 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::key_right#0 keyboard_key_pressed::return#3
-Not aliassing across scopes: key_down_debounce#23 form_control::key_down#0
-Not aliassing across scopes: keyboard_key_pressed::return#4 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::$14 keyboard_key_pressed::return#4
+Not aliassing across scopes: keyboard_event_get::return#3 keyboard_event_get::return#2
+Not aliassing across scopes: form_control::key_event#0 keyboard_event_get::return#3
Not aliassing across scopes: form_field_idx#18 form_field_idx#14
-Not aliassing across scopes: key_right_debounce#13 key_right_debounce#11
-Not aliassing across scopes: key_right_debounce#21 form_control::key_right#0
-Not aliassing across scopes: keyboard_key_pressed::return#10 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::$28 keyboard_key_pressed::return#10
-Self Phi Eliminated (byte) form_fields_cnt#30
+Self Phi Eliminated (byte) form_fields_cnt#28
Succesful SSA optimization Pass2SelfPhiElimination
-Redundant Phi (byte) form_fields_cnt#30 (const byte) form_fields_cnt#0
+Redundant Phi (byte) form_fields_cnt#28 (const byte) form_fields_cnt#0
Succesful SSA optimization Pass2RedundantPhiElimination
Constant (const byte) form_field_idx#8 = form_fields_cnt#0-1
Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte*) print_screen#1
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::keycode#11
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#14
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#14
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte*) form_set_screen::line#2
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#14
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#14
@@ -5608,21 +6599,31 @@ Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#14
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#14
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#14
-Not culling empty block because it shares successor with its predecessor. (label) form_control::@16
-Not culling empty block because it shares successor with its predecessor. (label) form_control::@22
-Not culling empty block because it shares successor with its predecessor. (label) form_control::@24
+Not culling empty block because it shares successor with its predecessor. (label) keyboard_event_scan::@21
+Not culling empty block because it shares successor with its predecessor. (label) form_control::@14
+Not culling empty block because it shares successor with its predecessor. (label) form_control::@19
+Not culling empty block because it shares successor with its predecessor. (label) form_control::@21
Not aliassing across scopes: print_char_cursor#22 print_screen#1
Not aliassing across scopes: print_line_cursor#2 print_screen#1
Not aliassing across scopes: print_line_cursor#21 print_line_cursor#2
Not aliassing across scopes: print_cls::sc#0 print_screen#1
Not aliassing across scopes: print_screen#1 print_set_screen::screen#2
-Not aliassing across scopes: keyboard_matrix_read::rowid#0 keyboard_key_pressed::rowidx#0
+Not aliassing across scopes: keyboard_events_size#43 keyboard_events_size#24
+Not aliassing across scopes: keyboard_matrix_read::rowid#0 keyboard_event_scan::row#2
Not aliassing across scopes: keyboard_matrix_read::return#2 keyboard_matrix_read::return#0
-Not aliassing across scopes: keyboard_key_pressed::$2 keyboard_matrix_read::return#2
+Not aliassing across scopes: keyboard_event_scan::row_scan#0 keyboard_matrix_read::return#2
+Not aliassing across scopes: keyboard_event_pressed::return#0 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$16 keyboard_event_pressed::return#0
+Not aliassing across scopes: keyboard_event_pressed::return#1 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$20 keyboard_event_pressed::return#1
+Not aliassing across scopes: keyboard_event_pressed::return#2 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$24 keyboard_event_pressed::return#2
+Not aliassing across scopes: keyboard_event_pressed::return#3 keyboard_event_pressed::return#10
+Not aliassing across scopes: keyboard_event_scan::$28 keyboard_event_pressed::return#3
Not aliassing across scopes: form_cursor_count#13 form_cursor_count#1
-Not aliassing across scopes: key_down_debounce#11 key_down_debounce#1
+Not aliassing across scopes: keyboard_events_size#24 keyboard_events_size#22
+Not aliassing across scopes: keyboard_modifiers#10 keyboard_modifiers#20
Not aliassing across scopes: form_field_idx#14 form_field_idx#1
-Not aliassing across scopes: key_right_debounce#11 key_right_debounce#1
Not aliassing across scopes: form_field_ptr::field_idx#2 form_field_ptr::field_idx#1
Not aliassing across scopes: form_field_ptr::field_idx#0 form_render_values::idx#2
Not aliassing across scopes: form_field_ptr::return#2 form_field_ptr::return#0
@@ -5630,20 +6631,16 @@ Not aliassing across scopes: form_render_values::field#0 form_field_ptr::return#
Not aliassing across scopes: form_field_ptr::field_idx#1 form_field_idx#14
Not aliassing across scopes: form_field_ptr::return#3 form_field_ptr::return#0
Not aliassing across scopes: form_control::field#0 form_field_ptr::return#3
-Not aliassing across scopes: keyboard_key_pressed::return#2 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::key_down#0 keyboard_key_pressed::return#2
-Not aliassing across scopes: key_down_debounce#20 key_down_debounce#11
-Not aliassing across scopes: keyboard_key_pressed::return#3 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::key_right#0 keyboard_key_pressed::return#3
-Not aliassing across scopes: key_down_debounce#23 form_control::key_down#0
-Not aliassing across scopes: keyboard_key_pressed::return#4 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::$14 keyboard_key_pressed::return#4
+Not aliassing across scopes: keyboard_event_get::return#3 keyboard_event_get::return#2
+Not aliassing across scopes: form_control::key_event#0 keyboard_event_get::return#3
Not aliassing across scopes: form_field_idx#18 form_field_idx#14
-Not aliassing across scopes: key_right_debounce#13 key_right_debounce#11
-Not aliassing across scopes: key_right_debounce#21 form_control::key_right#0
-Not aliassing across scopes: keyboard_key_pressed::return#10 keyboard_key_pressed::return#0
-Not aliassing across scopes: form_control::$28 keyboard_key_pressed::return#10
Multiple usages for variable. Not optimizing sub-constant (byte*) print_screen#1
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::keycode#11
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#14
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#14
+Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte*) form_set_screen::line#2
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#14
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#14
@@ -5666,32 +6663,65 @@ Inlining constant with var siblings (const string) print_str_lines::str#2
Inlining constant with var siblings (const string) print_str_lines::str#2
Inlining constant with var siblings (const byte*) print_set_screen::screen#0
Inlining constant with var siblings (const byte*) print_set_screen::screen#1
-Inlining constant with var siblings (const byte) keyboard_key_pressed::key#0
-Inlining constant with var siblings (const byte) keyboard_key_pressed::key#1
-Inlining constant with var siblings (const byte) keyboard_key_pressed::key#2
-Inlining constant with var siblings (const byte) keyboard_key_pressed::key#3
+Inlining constant with var siblings (const byte) keyboard_event_scan::keycode#0
+Inlining constant with var siblings (const byte) keyboard_event_scan::keycode#0
+Inlining constant with var siblings (const byte) keyboard_event_scan::keycode#0
+Inlining constant with var siblings (const byte) keyboard_event_scan::keycode#0
+Inlining constant with var siblings (const byte) keyboard_event_scan::keycode#0
+Inlining constant with var siblings (const byte) keyboard_event_scan::row#0
+Inlining constant with var siblings (const byte) keyboard_event_scan::row#0
+Inlining constant with var siblings (const byte) keyboard_event_scan::col#0
+Inlining constant with var siblings (const byte) keyboard_event_scan::col#0
+Inlining constant with var siblings (const byte) keyboard_event_pressed::keycode#0
+Inlining constant with var siblings (const byte) keyboard_event_pressed::keycode#1
+Inlining constant with var siblings (const byte) keyboard_event_pressed::keycode#2
+Inlining constant with var siblings (const byte) keyboard_event_pressed::keycode#3
+Inlining constant with var siblings (const byte) keyboard_event_get::return#1
+Inlining constant with var siblings (const byte) keyboard_event_get::return#1
+Inlining constant with var siblings (const byte) keyboard_event_get::return#1
Inlining constant with var siblings (const byte) menu::i#0
Inlining constant with var siblings (const byte) menu::i#0
Inlining constant with var siblings (const byte) form_set_screen::y#0
Inlining constant with var siblings (const byte) form_set_screen::y#0
Inlining constant with var siblings (const byte) form_render_values::idx#0
Inlining constant with var siblings (const byte) form_render_values::idx#0
-Inlining constant with var siblings (const byte) form_field_idx#36
-Inlining constant with var siblings (const byte) form_field_idx#36
-Inlining constant with var siblings (const byte) form_field_idx#36
-Inlining constant with var siblings (const byte) form_field_idx#36
-Inlining constant with var siblings (const byte) form_field_idx#36
-Inlining constant with var siblings (const byte) form_field_idx#36
-Inlining constant with different constant siblings (const byte) form_field_idx#36
-Inlining constant with var siblings (const byte) key_down_debounce#24
-Inlining constant with var siblings (const byte) key_down_debounce#24
-Inlining constant with var siblings (const byte) key_down_debounce#24
-Inlining constant with var siblings (const byte) key_down_debounce#24
-Inlining constant with var siblings (const byte) key_down_debounce#24
-Inlining constant with var siblings (const byte) key_right_debounce#24
-Inlining constant with var siblings (const byte) key_right_debounce#24
-Inlining constant with var siblings (const byte) key_right_debounce#24
-Inlining constant with var siblings (const byte) key_right_debounce#24
+Inlining constant with var siblings (const byte) keyboard_events_size#0
+Inlining constant with var siblings (const byte) keyboard_events_size#0
+Inlining constant with var siblings (const byte) keyboard_events_size#0
+Inlining constant with var siblings (const byte) keyboard_events_size#0
+Inlining constant with var siblings (const byte) keyboard_events_size#0
+Inlining constant with var siblings (const byte) keyboard_events_size#0
+Inlining constant with var siblings (const byte) keyboard_events_size#0
+Inlining constant with var siblings (const byte) keyboard_events_size#0
+Inlining constant with var siblings (const byte) keyboard_events_size#0
+Inlining constant with var siblings (const byte) keyboard_events_size#0
+Inlining constant with var siblings (const byte) keyboard_modifiers#0
+Inlining constant with var siblings (const byte) keyboard_modifiers#0
+Inlining constant with var siblings (const byte) keyboard_modifiers#0
+Inlining constant with var siblings (const byte) keyboard_modifiers#0
+Inlining constant with var siblings (const byte) keyboard_modifiers#0
+Inlining constant with var siblings (const byte) keyboard_modifiers#0
+Inlining constant with var siblings (const byte) keyboard_modifiers#0
+Inlining constant with var siblings (const byte) keyboard_modifiers#0
+Inlining constant with var siblings (const byte) keyboard_modifiers#0
+Inlining constant with different constant siblings (const byte) keyboard_modifiers#0
+Inlining constant with var siblings (const byte) keyboard_modifiers#1
+Inlining constant with var siblings (const byte) keyboard_modifiers#1
+Inlining constant with var siblings (const byte) keyboard_modifiers#1
+Inlining constant with var siblings (const byte) keyboard_modifiers#1
+Inlining constant with var siblings (const byte) keyboard_modifiers#1
+Inlining constant with var siblings (const byte) keyboard_modifiers#1
+Inlining constant with var siblings (const byte) keyboard_modifiers#1
+Inlining constant with var siblings (const byte) keyboard_modifiers#1
+Inlining constant with var siblings (const byte) keyboard_modifiers#1
+Inlining constant with different constant siblings (const byte) keyboard_modifiers#1
+Inlining constant with var siblings (const byte) form_field_idx#35
+Inlining constant with var siblings (const byte) form_field_idx#35
+Inlining constant with var siblings (const byte) form_field_idx#35
+Inlining constant with var siblings (const byte) form_field_idx#35
+Inlining constant with var siblings (const byte) form_field_idx#35
+Inlining constant with var siblings (const byte) form_field_idx#35
+Inlining constant with different constant siblings (const byte) form_field_idx#35
Inlining constant with var siblings (const byte) form_field_idx#7
Inlining constant with var siblings (const byte) form_field_idx#7
Inlining constant with var siblings (const byte) form_field_idx#7
@@ -5699,12 +6729,23 @@ Inlining constant with var siblings (const byte) form_field_idx#7
Inlining constant with var siblings (const byte) form_field_idx#7
Inlining constant with var siblings (const byte) form_field_idx#7
Inlining constant with different constant siblings (const byte) form_field_idx#7
-Inlining constant with var siblings (const signed byte) form_cursor_count#26
-Inlining constant with var siblings (const signed byte) form_cursor_count#26
-Inlining constant with var siblings (const signed byte) form_cursor_count#26
-Inlining constant with var siblings (const signed byte) form_cursor_count#26
-Inlining constant with var siblings (const signed byte) form_cursor_count#26
-Inlining constant with different constant siblings (const signed byte) form_cursor_count#26
+Inlining constant with var siblings (const byte) keyboard_modifiers#2
+Inlining constant with var siblings (const byte) keyboard_modifiers#2
+Inlining constant with var siblings (const byte) keyboard_modifiers#2
+Inlining constant with var siblings (const byte) keyboard_modifiers#2
+Inlining constant with var siblings (const byte) keyboard_modifiers#2
+Inlining constant with var siblings (const byte) keyboard_modifiers#2
+Inlining constant with var siblings (const byte) keyboard_modifiers#2
+Inlining constant with var siblings (const byte) keyboard_modifiers#2
+Inlining constant with var siblings (const byte) keyboard_modifiers#2
+Inlining constant with different constant siblings (const byte) keyboard_modifiers#2
+Inlining constant with different constant siblings (const byte) keyboard_modifiers#2
+Inlining constant with var siblings (const signed byte) form_cursor_count#25
+Inlining constant with var siblings (const signed byte) form_cursor_count#25
+Inlining constant with var siblings (const signed byte) form_cursor_count#25
+Inlining constant with var siblings (const signed byte) form_cursor_count#25
+Inlining constant with var siblings (const signed byte) form_cursor_count#25
+Inlining constant with different constant siblings (const signed byte) form_cursor_count#25
Inlining constant with var siblings (const signed byte) form_cursor_count#6
Inlining constant with var siblings (const signed byte) form_cursor_count#6
Inlining constant with var siblings (const signed byte) form_cursor_count#6
@@ -5726,18 +6767,25 @@ Inlining constant with var siblings (const byte) form_field_idx#8
Inlining constant with var siblings (const byte) form_field_idx#8
Inlining constant with different constant siblings (const byte) form_field_idx#8
Inlining constant with different constant siblings (const byte) form_field_idx#8
-Constant inlined form_field_idx#36 = (byte/signed byte/word/signed word/dword/signed dword) 0
-Constant inlined key_down_debounce#24 = (byte/signed byte/word/signed word/dword/signed dword) 0
+Constant inlined form_field_idx#35 = (byte/signed byte/word/signed word/dword/signed dword) 0
+Constant inlined keyboard_modifiers#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
+Constant inlined keyboard_modifiers#2 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0
+Constant inlined keyboard_modifiers#1 = (byte/signed byte/word/signed word/dword/signed dword) 0
+Constant inlined form_field_idx#8 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1
+Constant inlined form_field_idx#7 = (byte/signed byte/word/signed word/dword/signed dword) 0
+Constant inlined menu::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
+Constant inlined keyboard_event_scan::keycode#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
+Constant inlined print_str_lines::str#2 = (const string) MENU_TEXT#0
+Constant inlined print_str_lines::str#1 = (const string) MENU_COLS#0
+Constant inlined form_cursor_count#25 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined menu::$9 = ((word))(const byte*) menu::CHARSET#0
Constant inlined form_control::$3 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined menu::$7 = ((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024
Constant inlined menu::$8 = >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024
+Constant inlined keyboard_event_scan::col#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined menu::$5 = <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024
Constant inlined menu::$6 = (const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024
-Constant inlined form_field_idx#8 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1
-Constant inlined form_field_idx#7 = (byte/signed byte/word/signed word/dword/signed dword) 0
-Constant inlined $19 = (const string) print_hextab#0
-Constant inlined menu::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
+Constant inlined keyboard_event_scan::row#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined form_set_screen::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined form_set_screen::screen#0 = (const byte*) menu::SCREEN#0
Constant inlined menu::$16 = ((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383
@@ -5757,30 +6805,37 @@ Constant inlined menu::$0 = ((dword))(const byte*) menu::CHARSET#0
Constant inlined menu::$13 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0
Constant inlined menu::$10 = ((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384
Constant inlined menu::$11 = ((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384
-Constant inlined keyboard_key_pressed::key#0 = (const byte) KEY_CRSR_DOWN#0
Constant inlined form_render_values::idx#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
-Constant inlined keyboard_key_pressed::key#1 = (const byte) KEY_CRSR_RIGHT#0
-Constant inlined keyboard_key_pressed::key#2 = (const byte) KEY_RSHIFT#0
-Constant inlined keyboard_key_pressed::key#3 = (const byte) KEY_RSHIFT#0
-Constant inlined print_str_lines::str#2 = (const string) MENU_TEXT#0
-Constant inlined print_str_lines::str#1 = (const string) MENU_COLS#0
-Constant inlined key_right_debounce#24 = (byte/signed byte/word/signed word/dword/signed dword) 0
+Constant inlined $20 = (const string) print_hextab#0
+Constant inlined keyboard_event_pressed::keycode#3 = (const byte) KEY_COMMODORE#0
+Constant inlined keyboard_event_pressed::keycode#2 = (const byte) KEY_CTRL#0
+Constant inlined keyboard_event_pressed::keycode#1 = (const byte) KEY_RSHIFT#0
+Constant inlined keyboard_event_pressed::keycode#0 = (const byte) KEY_LSHIFT#0
Constant inlined menu::$20 = ((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024
+Constant inlined keyboard_event_get::return#1 = (byte/word/signed word/dword/signed dword) 255
Constant inlined form_cursor_count#6 = (const signed byte) FORM_CURSOR_BLINK#0
-Constant inlined form_cursor_count#26 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2
+Constant inlined keyboard_events_size#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined form_cursor_count#7 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined menu::$21 = ((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024
Constant inlined menu::$22 = ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024
Succesful SSA optimization Pass2ConstantInlining
-Block Sequence Planned @begin @25 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@8 menu::@15 menu::@16 menu::@17 menu::@18 menu::@19 menu::@20 menu::@21 menu::@2 menu::@return menu::@5 menu::@7 form_control form_control::@32 form_control::@16 form_control::@1 form_control::@17 form_control::@3 form_control::@33 form_control::@19 form_control::@20 form_control::@35 form_control::@21 form_control::@22 form_control::@8 form_control::@return form_control::@6 form_control::@24 form_control::@4 form_control::@34 form_control::@26 form_control::@27 form_control::@36 form_control::@28 form_control::@29 form_control::@14 form_control::@12 form_control::@31 form_control::@2 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return form_field_ptr form_field_ptr::@return form_render_values form_render_values::@1 form_render_values::@3 form_render_values::@return form_set_screen form_set_screen::@1 form_set_screen::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return
+Block Sequence Planned @begin @28 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@8 menu::@15 menu::@16 menu::@17 menu::@18 menu::@19 menu::@20 menu::@21 menu::@2 menu::@return menu::@5 menu::@7 form_control form_control::@28 form_control::@14 form_control::@1 form_control::@15 form_control::@3 form_control::@29 form_control::@30 form_control::@17 form_control::@18 form_control::@19 form_control::@7 form_control::@return form_control::@5 form_control::@21 form_control::@4 form_control::@23 form_control::@24 form_control::@25 form_control::@12 form_control::@10 form_control::@27 form_control::@2 keyboard_event_get keyboard_event_get::@return keyboard_event_get::@1 keyboard_event_scan keyboard_event_scan::@1 keyboard_event_scan::@25 keyboard_event_scan::@3 keyboard_event_scan::@14 keyboard_event_scan::@15 keyboard_event_scan::@16 keyboard_event_scan::@4 keyboard_event_scan::@18 keyboard_event_scan::@8 keyboard_event_scan::@20 keyboard_event_scan::@26 keyboard_event_scan::@21 keyboard_event_scan::@9 keyboard_event_scan::@27 keyboard_event_scan::@22 keyboard_event_scan::@10 keyboard_event_scan::@28 keyboard_event_scan::@23 keyboard_event_scan::@11 keyboard_event_scan::@29 keyboard_event_scan::@24 keyboard_event_scan::@return keyboard_event_scan::@6 keyboard_event_scan::@2 keyboard_event_pressed keyboard_event_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return form_field_ptr form_field_ptr::@return form_render_values form_render_values::@1 form_render_values::@3 form_render_values::@return form_set_screen form_set_screen::@1 form_set_screen::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return
Added new block during phi lifting menu::@24(between menu::@1 and menu::@1)
-Added new block during phi lifting form_control::@37(between form_control::@32 and form_control::@1)
-Added new block during phi lifting form_control::@38(between form_control::@21 and form_control::@8)
-Added new block during phi lifting form_control::@39(between form_control::@6 and form_control::@8)
-Added new block during phi lifting form_control::@40(between form_control::@34 and form_control::@return)
-Added new block during phi lifting form_control::@41(between form_control::@26 and form_control::@return)
-Added new block during phi lifting form_control::@42(between form_control::@33 and form_control::@4)
-Added new block during phi lifting form_control::@43(between form_control::@19 and form_control::@4)
+Added new block during phi lifting form_control::@31(between form_control::@28 and form_control::@1)
+Added new block during phi lifting form_control::@32(between form_control::@18 and form_control::@7)
+Added new block during phi lifting form_control::@33(between form_control::@5 and form_control::@7)
+Added new block during phi lifting form_control::@34(between form_control::@4 and form_control::@return)
+Added new block during phi lifting keyboard_event_get::@7(between keyboard_event_get and keyboard_event_get::@return)
+Fixing phi predecessor for keyboard_event_get::return#2 to new block ( keyboard_event_get -> keyboard_event_get::@7 ) during phi lifting.
+Added new block during phi lifting keyboard_event_scan::@30(between keyboard_event_scan::@8 and keyboard_event_scan::@1)
+Added new block during phi lifting keyboard_event_scan::@31(between keyboard_event_scan::@4 and keyboard_event_scan::@3)
+Added new block during phi lifting keyboard_event_scan::@32(between keyboard_event_scan::@25 and keyboard_event_scan::@3)
+Fixing phi predecessor for keyboard_event_scan::col#2 to new block ( keyboard_event_scan::@25 -> keyboard_event_scan::@32 ) during phi lifting.
+Added new block during phi lifting keyboard_event_scan::@33(between keyboard_event_scan::@3 and keyboard_event_scan::@4)
+Added new block during phi lifting keyboard_event_scan::@34(between keyboard_event_scan::@14 and keyboard_event_scan::@4)
+Added new block during phi lifting keyboard_event_scan::@35(between keyboard_event_scan::@27 and keyboard_event_scan::@10)
+Added new block during phi lifting keyboard_event_scan::@36(between keyboard_event_scan::@28 and keyboard_event_scan::@11)
+Added new block during phi lifting keyboard_event_scan::@37(between keyboard_event_scan::@29 and keyboard_event_scan::@return)
Added new block during phi lifting form_render_values::@4(between form_render_values::@3 and form_render_values::@1)
Added new block during phi lifting form_set_screen::@3(between form_set_screen::@1 and form_set_screen::@1)
Added new block during phi lifting print_str_lines::@12(between print_str_lines::@1 and print_str_lines::@4)
@@ -5788,9 +6843,9 @@ Added new block during phi lifting print_str_lines::@13(between print_str_lines:
Added new block during phi lifting print_str_lines::@14(between print_str_lines::@4 and print_str_lines::@5)
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
-Block Sequence Planned @begin @25 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@8 menu::@15 menu::@16 menu::@17 menu::@18 menu::@19 menu::@20 menu::@21 menu::@2 menu::@return menu::@5 menu::@7 menu::@24 form_control form_control::@32 form_control::@16 form_control::@1 form_control::@17 form_control::@3 form_control::@33 form_control::@19 form_control::@20 form_control::@35 form_control::@21 form_control::@22 form_control::@8 form_control::@return form_control::@38 form_control::@6 form_control::@24 form_control::@39 form_control::@43 form_control::@4 form_control::@34 form_control::@26 form_control::@27 form_control::@36 form_control::@28 form_control::@29 form_control::@14 form_control::@12 form_control::@31 form_control::@41 form_control::@40 form_control::@42 form_control::@2 form_control::@37 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return form_field_ptr form_field_ptr::@return form_render_values form_render_values::@1 form_render_values::@3 form_render_values::@return form_render_values::@4 form_set_screen form_set_screen::@1 form_set_screen::@return form_set_screen::@3 print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@12 print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_str_lines::@13 print_str_lines::@14 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_cls print_cls::@1 print_cls::@return print_cls::@3 print_set_screen print_set_screen::@return
+Block Sequence Planned @begin @28 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@8 menu::@15 menu::@16 menu::@17 menu::@18 menu::@19 menu::@20 menu::@21 menu::@2 menu::@return menu::@5 menu::@7 menu::@24 form_control form_control::@28 form_control::@14 form_control::@1 form_control::@15 form_control::@3 form_control::@29 form_control::@30 form_control::@17 form_control::@18 form_control::@19 form_control::@7 form_control::@return form_control::@32 form_control::@5 form_control::@21 form_control::@33 form_control::@4 form_control::@23 form_control::@24 form_control::@25 form_control::@12 form_control::@10 form_control::@27 form_control::@34 form_control::@2 form_control::@31 keyboard_event_get keyboard_event_get::@7 keyboard_event_get::@return keyboard_event_get::@1 keyboard_event_scan keyboard_event_scan::@1 keyboard_event_scan::@25 keyboard_event_scan::@32 keyboard_event_scan::@3 keyboard_event_scan::@14 keyboard_event_scan::@15 keyboard_event_scan::@16 keyboard_event_scan::@4 keyboard_event_scan::@18 keyboard_event_scan::@8 keyboard_event_scan::@20 keyboard_event_scan::@26 keyboard_event_scan::@21 keyboard_event_scan::@9 keyboard_event_scan::@27 keyboard_event_scan::@22 keyboard_event_scan::@10 keyboard_event_scan::@28 keyboard_event_scan::@23 keyboard_event_scan::@11 keyboard_event_scan::@29 keyboard_event_scan::@24 keyboard_event_scan::@return keyboard_event_scan::@37 keyboard_event_scan::@36 keyboard_event_scan::@35 keyboard_event_scan::@30 keyboard_event_scan::@31 keyboard_event_scan::@6 keyboard_event_scan::@34 keyboard_event_scan::@33 keyboard_event_scan::@2 keyboard_event_pressed keyboard_event_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return form_field_ptr form_field_ptr::@return form_render_values form_render_values::@1 form_render_values::@3 form_render_values::@return form_render_values::@4 form_set_screen form_set_screen::@1 form_set_screen::@return form_set_screen::@3 print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@12 print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_str_lines::@13 print_str_lines::@14 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_cls print_cls::@1 print_cls::@return print_cls::@3 print_set_screen print_set_screen::@return
Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @25
+Adding NOP phi() at start of @28
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of menu::@15
@@ -5801,11 +6856,13 @@ Adding NOP phi() at start of menu::@19
Adding NOP phi() at start of menu::@20
Adding NOP phi() at start of menu::@21
Adding NOP phi() at start of menu::@7
-Adding NOP phi() at start of form_control::@16
+Adding NOP phi() at start of form_control::@14
Adding NOP phi() at start of form_control::@3
-Adding NOP phi() at start of form_control::@22
-Adding NOP phi() at start of form_control::@24
-Adding NOP phi() at start of form_control::@27
+Adding NOP phi() at start of form_control::@29
+Adding NOP phi() at start of form_control::@19
+Adding NOP phi() at start of form_control::@21
+Adding NOP phi() at start of keyboard_event_scan::@20
+Adding NOP phi() at start of keyboard_event_scan::@21
Adding NOP phi() at start of form_render_values
Adding NOP phi() at start of form_set_screen
Adding NOP phi() at start of print_str_lines::@9
@@ -5813,10 +6870,10 @@ CALL GRAPH
Calls in [] to main:2
Calls in [main] to menu:10
Calls in [menu] to print_set_screen:30 print_cls:32 print_str_lines:34 print_set_screen:36 print_cls:38 print_str_lines:40 form_set_screen:42 form_render_values:44 form_control:54
-Calls in [form_control] to form_field_ptr:62 keyboard_key_pressed:73 keyboard_key_pressed:81 keyboard_key_pressed:101 keyboard_key_pressed:108
-Calls in [keyboard_key_pressed] to keyboard_matrix_read:139
-Calls in [form_render_values] to form_field_ptr:157
-Calls in [print_str_lines] to print_ln:196
+Calls in [form_control] to form_field_ptr:62 keyboard_event_scan:73 keyboard_event_get:75
+Calls in [keyboard_event_scan] to keyboard_matrix_read:123 keyboard_event_pressed:151 keyboard_event_pressed:157 keyboard_event_pressed:164 keyboard_event_pressed:171
+Calls in [form_render_values] to form_field_ptr:215
+Calls in [print_str_lines] to print_ln:254
Propagating live ranges...
Propagating live ranges...
@@ -5855,74 +6912,95 @@ Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
-Created 31 initial phi equivalence classes
-Coalesced [11] form_cursor_count#59 ← form_cursor_count#13
-Coalesced [12] key_down_debounce#66 ← key_down_debounce#11
-Coalesced [13] form_field_idx#68 ← form_field_idx#14
-Coalesced [14] key_right_debounce#66 ← key_right_debounce#11
-Coalesced (already) [45] form_cursor_count#60 ← form_cursor_count#1
-Coalesced (already) [46] key_down_debounce#67 ← key_down_debounce#1
-Coalesced (already) [47] form_field_idx#69 ← form_field_idx#1
-Coalesced (already) [48] key_right_debounce#67 ← key_right_debounce#1
-Coalesced [55] form_cursor_count#61 ← form_cursor_count#16
-Coalesced [56] key_down_debounce#68 ← key_down_debounce#13
-Coalesced [57] form_field_idx#70 ← form_field_idx#18
-Coalesced [58] key_right_debounce#68 ← key_right_debounce#13
+Created 43 initial phi equivalence classes
+Coalesced [11] form_cursor_count#54 ← form_cursor_count#13
+Coalesced [12] keyboard_events_size#101 ← keyboard_events_size#24
+Coalesced [13] keyboard_modifiers#82 ← keyboard_modifiers#10
+Coalesced [14] form_field_idx#62 ← form_field_idx#14
+Coalesced (already) [45] form_cursor_count#55 ← form_cursor_count#1
+Coalesced (already) [46] keyboard_events_size#102 ← keyboard_events_size#22
+Coalesced (already) [47] keyboard_modifiers#83 ← keyboard_modifiers#20
+Coalesced (already) [48] form_field_idx#63 ← form_field_idx#1
+Coalesced [55] form_cursor_count#56 ← form_cursor_count#16
+Coalesced [56] keyboard_events_size#103 ← keyboard_events_size#20
+Coalesced [57] keyboard_modifiers#84 ← keyboard_modifiers#18
+Coalesced [58] form_field_idx#64 ← form_field_idx#18
Coalesced [59] menu::i#3 ← menu::i#1
Coalesced [61] form_field_ptr::field_idx#3 ← form_field_ptr::field_idx#1
-Coalesced [89] key_down_debounce#72 ← key_down_debounce#23
-Coalesced [90] form_field_idx#76 ← form_field_idx#32
-Coalesced (already) [91] key_right_debounce#72 ← key_right_debounce#11
-Coalesced [94] form_field_idx#71 ← form_field_idx#41
-Coalesced [98] form_field_idx#72 ← form_field_idx#42
-Coalesced [99] key_down_debounce#74 ← key_down_debounce#23
-Coalesced [116] form_cursor_count#65 ← form_cursor_count#15
-Coalesced (already) [117] key_down_debounce#71 ← key_down_debounce#20
-Coalesced (already) [118] form_field_idx#75 ← form_field_idx#14
-Coalesced [119] key_right_debounce#71 ← key_right_debounce#21
-Coalesced (already) [123] form_cursor_count#64 ← form_cursor_count#15
-Coalesced (already) [124] key_down_debounce#70 ← key_down_debounce#20
-Coalesced (already) [125] form_field_idx#74 ← form_field_idx#14
-Coalesced (already) [126] key_right_debounce#70 ← key_right_debounce#21
-Coalesced (already) [127] form_cursor_count#63 ← form_cursor_count#15
-Coalesced (already) [128] key_down_debounce#69 ← key_down_debounce#20
-Coalesced (already) [129] form_field_idx#73 ← form_field_idx#14
-Coalesced (already) [130] key_right_debounce#69 ← key_right_debounce#11
-Coalesced (already) [131] key_down_debounce#73 ← key_down_debounce#11
-Coalesced [134] form_cursor_count#62 ← form_cursor_count#5
-Coalesced [156] form_field_ptr::field_idx#4 ← form_field_ptr::field_idx#0
-Coalesced [164] form_render_values::idx#4 ← form_render_values::idx#1
-Coalesced [175] form_set_screen::line#3 ← form_set_screen::line#1
-Coalesced [176] form_set_screen::y#3 ← form_set_screen::y#1
-Coalesced [178] print_str_lines::str#11 ← print_str_lines::str#5
-Not coalescing [179] print_char_cursor#63 ← print_screen#1
-Coalesced [180] print_line_cursor#63 ← print_screen#1
-Coalesced [184] print_str_lines::str#13 ← print_str_lines::str#3
-Coalesced [185] print_char_cursor#65 ← print_char_cursor#22
-Coalesced [192] print_char_cursor#68 ← print_char_cursor#1
-Coalesced [197] print_str_lines::str#12 ← print_str_lines::str#0
-Not coalescing [198] print_char_cursor#64 ← print_line_cursor#22
-Coalesced [199] print_line_cursor#64 ← print_line_cursor#22
-Coalesced (already) [200] print_str_lines::str#14 ← print_str_lines::str#0
-Coalesced [201] print_char_cursor#66 ← print_char_cursor#38
-Coalesced (already) [202] print_char_cursor#67 ← print_char_cursor#20
-Coalesced [203] print_line_cursor#65 ← print_line_cursor#2
-Coalesced (already) [208] print_line_cursor#66 ← print_line_cursor#22
-Coalesced [210] print_cls::sc#3 ← print_cls::sc#0
-Coalesced [217] print_cls::sc#4 ← print_cls::sc#1
-Coalesced [219] print_screen#1 ← print_set_screen::screen#2
-Coalesced down to 14 phi equivalence classes
+Coalesced [87] form_field_idx#68 ← form_field_idx#30
+Coalesced [90] form_field_idx#65 ← form_field_idx#40
+Coalesced [94] form_field_idx#66 ← form_field_idx#41
+Coalesced [102] form_cursor_count#58 ← form_cursor_count#15
+Coalesced (already) [103] form_field_idx#67 ← form_field_idx#14
+Coalesced (already) [107] form_cursor_count#59 ← form_cursor_count#15
+Coalesced (already) [108] form_field_idx#69 ← form_field_idx#14
+Coalesced [111] form_cursor_count#57 ← form_cursor_count#5
+Coalesced [113] keyboard_events_size#105 ← keyboard_events_size#17
+Coalesced [118] keyboard_event_get::return#6 ← keyboard_event_get::return#0
+Coalesced [119] keyboard_events_size#104 ← keyboard_events_size#4
+Coalesced [120] keyboard_events_size#106 ← keyboard_events_size#24
+Coalesced [127] keyboard_event_scan::keycode#17 ← keyboard_event_scan::keycode#11
+Coalesced [128] keyboard_events_size#108 ← keyboard_events_size#43
+Coalesced [139] keyboard_events_size#110 ← keyboard_events_size#2
+Coalesced [145] keyboard_event_scan::keycode#19 ← keyboard_event_scan::keycode#15
+Coalesced [146] keyboard_events_size#114 ← keyboard_events_size#44
+Coalesced [162] keyboard_modifiers#85 ← keyboard_modifiers#3
+Coalesced [169] keyboard_modifiers#87 ← keyboard_modifiers#4
+Coalesced [176] keyboard_modifiers#90 ← keyboard_modifiers#5
+Coalesced [179] keyboard_modifiers#89 ← keyboard_modifiers#17
+Coalesced [180] keyboard_modifiers#88 ← keyboard_modifiers#16
+Coalesced [181] keyboard_modifiers#86 ← keyboard_modifiers#15
+Coalesced [182] keyboard_event_scan::row#15 ← keyboard_event_scan::row#1
+Coalesced [183] keyboard_event_scan::keycode#16 ← keyboard_event_scan::keycode#14
+Coalesced (already) [184] keyboard_events_size#107 ← keyboard_events_size#17
+Coalesced [185] keyboard_event_scan::col#9 ← keyboard_event_scan::col#1
+Coalesced (already) [186] keyboard_event_scan::keycode#18 ← keyboard_event_scan::keycode#15
+Coalesced (already) [187] keyboard_events_size#109 ← keyboard_events_size#44
+Coalesced [190] keyboard_events_size#113 ← keyboard_events_size#1
+Coalesced (already) [191] keyboard_events_size#112 ← keyboard_events_size#14
+Coalesced (already) [192] keyboard_events_size#111 ← keyboard_events_size#14
+Coalesced [194] keyboard_event_scan::keycode#20 ← keyboard_event_scan::keycode#1
+Coalesced (already) [195] keyboard_events_size#115 ← keyboard_events_size#43
+Coalesced [214] form_field_ptr::field_idx#4 ← form_field_ptr::field_idx#0
+Coalesced [222] form_render_values::idx#4 ← form_render_values::idx#1
+Coalesced [233] form_set_screen::line#3 ← form_set_screen::line#1
+Coalesced [234] form_set_screen::y#3 ← form_set_screen::y#1
+Coalesced [236] print_str_lines::str#11 ← print_str_lines::str#5
+Not coalescing [237] print_char_cursor#64 ← print_screen#1
+Coalesced [238] print_line_cursor#64 ← print_screen#1
+Coalesced [242] print_str_lines::str#13 ← print_str_lines::str#3
+Coalesced [243] print_char_cursor#66 ← print_char_cursor#22
+Coalesced [250] print_char_cursor#69 ← print_char_cursor#1
+Coalesced [255] print_str_lines::str#12 ← print_str_lines::str#0
+Not coalescing [256] print_char_cursor#65 ← print_line_cursor#22
+Coalesced [257] print_line_cursor#65 ← print_line_cursor#22
+Coalesced (already) [258] print_str_lines::str#14 ← print_str_lines::str#0
+Coalesced [259] print_char_cursor#67 ← print_char_cursor#38
+Coalesced (already) [260] print_char_cursor#68 ← print_char_cursor#20
+Coalesced [261] print_line_cursor#66 ← print_line_cursor#2
+Coalesced (already) [266] print_line_cursor#67 ← print_line_cursor#22
+Coalesced [268] print_cls::sc#3 ← print_cls::sc#0
+Coalesced [275] print_cls::sc#4 ← print_cls::sc#1
+Coalesced [277] print_screen#1 ← print_set_screen::screen#2
+Coalesced down to 18 phi equivalence classes
Culled Empty Block (label) menu::@24
-Culled Empty Block (label) form_control::@16
-Culled Empty Block (label) form_control::@22
-Not culling empty block because it shares successor with its predecessor. (label) form_control::@38
-Culled Empty Block (label) form_control::@24
-Not culling empty block because it shares successor with its predecessor. (label) form_control::@39
-Culled Empty Block (label) form_control::@43
-Culled Empty Block (label) form_control::@41
-Culled Empty Block (label) form_control::@40
-Culled Empty Block (label) form_control::@42
-Not culling empty block because it shares successor with its predecessor. (label) form_control::@37
+Culled Empty Block (label) form_control::@14
+Culled Empty Block (label) form_control::@19
+Not culling empty block because it shares successor with its predecessor. (label) form_control::@32
+Culled Empty Block (label) form_control::@21
+Not culling empty block because it shares successor with its predecessor. (label) form_control::@33
+Culled Empty Block (label) form_control::@34
+Not culling empty block because it shares successor with its predecessor. (label) form_control::@31
+Culled Empty Block (label) keyboard_event_get::@7
+Culled Empty Block (label) keyboard_event_scan::@32
+Not culling empty block because it shares successor with its predecessor. (label) keyboard_event_scan::@21
+Culled Empty Block (label) keyboard_event_scan::@37
+Culled Empty Block (label) keyboard_event_scan::@36
+Culled Empty Block (label) keyboard_event_scan::@35
+Culled Empty Block (label) keyboard_event_scan::@30
+Culled Empty Block (label) keyboard_event_scan::@31
+Culled Empty Block (label) keyboard_event_scan::@34
+Culled Empty Block (label) keyboard_event_scan::@33
Culled Empty Block (label) form_render_values::@4
Culled Empty Block (label) form_set_screen::@3
Culled Empty Block (label) print_str_lines::@12
@@ -5930,9 +7008,9 @@ Culled Empty Block (label) print_str_lines::@13
Culled Empty Block (label) print_str_lines::@14
Culled Empty Block (label) print_ln::@3
Culled Empty Block (label) print_cls::@3
-Block Sequence Planned @begin @25 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@8 menu::@15 menu::@16 menu::@17 menu::@18 menu::@19 menu::@20 menu::@21 menu::@2 menu::@return menu::@5 menu::@7 form_control form_control::@32 form_control::@1 form_control::@17 form_control::@3 form_control::@33 form_control::@19 form_control::@20 form_control::@35 form_control::@21 form_control::@8 form_control::@return form_control::@38 form_control::@6 form_control::@39 form_control::@4 form_control::@34 form_control::@26 form_control::@27 form_control::@36 form_control::@28 form_control::@29 form_control::@14 form_control::@12 form_control::@31 form_control::@2 form_control::@37 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return form_field_ptr form_field_ptr::@return form_render_values form_render_values::@1 form_render_values::@3 form_render_values::@return form_set_screen form_set_screen::@1 form_set_screen::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return
+Block Sequence Planned @begin @28 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@8 menu::@15 menu::@16 menu::@17 menu::@18 menu::@19 menu::@20 menu::@21 menu::@2 menu::@return menu::@5 menu::@7 form_control form_control::@28 form_control::@1 form_control::@15 form_control::@3 form_control::@29 form_control::@30 form_control::@17 form_control::@18 form_control::@7 form_control::@return form_control::@32 form_control::@5 form_control::@33 form_control::@4 form_control::@23 form_control::@24 form_control::@25 form_control::@12 form_control::@10 form_control::@27 form_control::@2 form_control::@31 keyboard_event_get keyboard_event_get::@return keyboard_event_get::@1 keyboard_event_scan keyboard_event_scan::@1 keyboard_event_scan::@25 keyboard_event_scan::@3 keyboard_event_scan::@14 keyboard_event_scan::@15 keyboard_event_scan::@16 keyboard_event_scan::@4 keyboard_event_scan::@18 keyboard_event_scan::@8 keyboard_event_scan::@20 keyboard_event_scan::@26 keyboard_event_scan::@21 keyboard_event_scan::@9 keyboard_event_scan::@27 keyboard_event_scan::@22 keyboard_event_scan::@10 keyboard_event_scan::@28 keyboard_event_scan::@23 keyboard_event_scan::@11 keyboard_event_scan::@29 keyboard_event_scan::@24 keyboard_event_scan::@return keyboard_event_scan::@6 keyboard_event_scan::@2 keyboard_event_pressed keyboard_event_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return form_field_ptr form_field_ptr::@return form_render_values form_render_values::@1 form_render_values::@3 form_render_values::@return form_set_screen form_set_screen::@1 form_set_screen::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return
Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @25
+Adding NOP phi() at start of @28
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of menu::@15
@@ -5944,10 +7022,13 @@ Adding NOP phi() at start of menu::@20
Adding NOP phi() at start of menu::@21
Adding NOP phi() at start of menu::@7
Adding NOP phi() at start of form_control::@3
-Adding NOP phi() at start of form_control::@38
-Adding NOP phi() at start of form_control::@39
-Adding NOP phi() at start of form_control::@27
-Adding NOP phi() at start of form_control::@37
+Adding NOP phi() at start of form_control::@29
+Adding NOP phi() at start of form_control::@32
+Adding NOP phi() at start of form_control::@33
+Adding NOP phi() at start of form_control::@31
+Adding NOP phi() at start of keyboard_event_scan
+Adding NOP phi() at start of keyboard_event_scan::@20
+Adding NOP phi() at start of keyboard_event_scan::@21
Adding NOP phi() at start of form_render_values
Adding NOP phi() at start of form_set_screen
Adding NOP phi() at start of print_str_lines::@9
@@ -5990,424 +7071,544 @@ Propagating live ranges...
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi() [ ] ( )
- to:@25
-@25: scope:[] from @begin
+ to:@28
+@28: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
-@end: scope:[] from @25
+@end: scope:[] from @28
[3] phi() [ ] ( )
-main: scope:[main] from @25
+main: scope:[main] from @28
asm { sei }
[5] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] )
to:main::@1
main::@1: scope:[main] from main main::@2
- [6] (byte) key_right_debounce#1 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) key_right_debounce#11 ) [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [6] (byte) form_field_idx#1 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) form_field_idx#14 ) [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [6] (byte) key_down_debounce#1 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) key_down_debounce#11 ) [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [6] (signed byte) form_cursor_count#1 ← phi( main/(const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 main::@2/(signed byte) form_cursor_count#13 ) [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [7] if(true) goto main::@2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [6] (byte) form_field_idx#1 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) form_field_idx#14 ) [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [6] (byte) keyboard_modifiers#20 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) keyboard_modifiers#10 ) [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [6] (byte) keyboard_events_size#22 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) keyboard_events_size#24 ) [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [6] (signed byte) form_cursor_count#1 ← phi( main/(const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 main::@2/(signed byte) form_cursor_count#13 ) [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [7] if(true) goto main::@2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:main::@return
main::@return: scope:[main] from main::@1
[8] return [ ] ( main:2 [ ] )
to:@return
main::@2: scope:[main] from main::@1
- [9] phi() [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [10] call menu param-assignment [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
+ [9] phi() [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [10] call menu param-assignment [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
to:main::@1
menu: scope:[menu] from main::@2
- [11] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [12] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [13] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [14] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [15] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [16] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [17] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [18] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [19] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [11] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [12] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [13] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [14] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [15] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [16] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [17] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [18] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [19] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:menu::@1
menu::@1: scope:[menu] from menu menu::@1
- [20] (byte) menu::i#2 ← phi( menu/(byte/signed byte/word/signed word/dword/signed dword) 0 menu::@1/(byte) menu::i#1 ) [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] )
- [21] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] )
- [22] (byte) menu::i#1 ← ++ (byte) menu::i#2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] )
- [23] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] )
+ [20] (byte) menu::i#2 ← phi( menu/(byte/signed byte/word/signed word/dword/signed dword) 0 menu::@1/(byte) menu::i#1 ) [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] )
+ [21] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] )
+ [22] (byte) menu::i#1 ← ++ (byte) menu::i#2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] )
+ [23] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] )
to:menu::@8
menu::@8: scope:[menu] from menu::@1
- [24] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [25] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [26] call print_set_screen param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ [24] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [25] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [26] call print_set_screen param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
to:menu::@15
menu::@15: scope:[menu] from menu::@8
- [27] phi() [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
- [28] call print_cls param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ [27] phi() [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
+ [28] call print_cls param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
to:menu::@16
menu::@16: scope:[menu] from menu::@15
- [29] phi() [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
- [30] call print_str_lines param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [29] phi() [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
+ [30] call print_str_lines param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:menu::@17
menu::@17: scope:[menu] from menu::@16
- [31] phi() [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [32] call print_set_screen param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ [31] phi() [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [32] call print_set_screen param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
to:menu::@18
menu::@18: scope:[menu] from menu::@17
- [33] phi() [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
- [34] call print_cls param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ [33] phi() [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
+ [34] call print_cls param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
to:menu::@19
menu::@19: scope:[menu] from menu::@18
- [35] phi() [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
- [36] call print_str_lines param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [35] phi() [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
+ [36] call print_str_lines param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:menu::@20
menu::@20: scope:[menu] from menu::@19
- [37] phi() [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [38] call form_set_screen param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [37] phi() [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [38] call form_set_screen param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:menu::@21
menu::@21: scope:[menu] from menu::@20
- [39] phi() [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- [40] call form_render_values param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [39] phi() [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ [40] call form_render_values param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:menu::@2
menu::@2: scope:[menu] from menu::@21 menu::@7
- [41] (byte) key_right_debounce#11 ← phi( menu::@21/(byte) key_right_debounce#1 menu::@7/(byte) key_right_debounce#13 ) [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
- [41] (byte) form_field_idx#14 ← phi( menu::@21/(byte) form_field_idx#1 menu::@7/(byte) form_field_idx#18 ) [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
- [41] (byte) key_down_debounce#11 ← phi( menu::@21/(byte) key_down_debounce#1 menu::@7/(byte) key_down_debounce#13 ) [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
- [41] (signed byte) form_cursor_count#13 ← phi( menu::@21/(signed byte) form_cursor_count#1 menu::@7/(signed byte) form_cursor_count#16 ) [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
- [42] if(true) goto menu::@5 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
+ [41] (byte) form_field_idx#14 ← phi( menu::@21/(byte) form_field_idx#1 menu::@7/(byte) form_field_idx#18 ) [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
+ [41] (byte) keyboard_modifiers#10 ← phi( menu::@21/(byte) keyboard_modifiers#20 menu::@7/(byte) keyboard_modifiers#18 ) [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
+ [41] (byte) keyboard_events_size#24 ← phi( menu::@21/(byte) keyboard_events_size#22 menu::@7/(byte) keyboard_events_size#20 ) [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
+ [41] (signed byte) form_cursor_count#13 ← phi( menu::@21/(signed byte) form_cursor_count#1 menu::@7/(signed byte) form_cursor_count#16 ) [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
+ [42] if(true) goto menu::@5 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
to:menu::@return
menu::@return: scope:[menu] from menu::@2
- [43] return [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
+ [43] return [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
to:@return
menu::@5: scope:[menu] from menu::@2 menu::@5
- [44] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto menu::@5 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
+ [44] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto menu::@5 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] )
to:menu::@7
menu::@7: scope:[menu] from menu::@5
- [45] phi() [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
- [46] call form_control param-assignment [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
+ [45] phi() [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] )
+ [46] call form_control param-assignment [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] ( main:2::menu:10 [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] )
to:menu::@2
form_control: scope:[form_control] from menu::@7
- [47] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#1 ] )
- [48] 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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#0 ] )
- [49] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#3 ] )
- to:form_control::@32
-form_control::@32: scope:[form_control] from form_control
- [50] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 ] )
- [51] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] )
- [52] 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:46 [ 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::@32 form_control::@37
- [53] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] )
- [54] 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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] )
- to:form_control::@17
-form_control::@17: scope:[form_control] from form_control::@1
- [55] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$6 ] )
- [56] *((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:46 [ 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::@17 form_control::@2
- [57] 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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] )
- [58] 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:46 [ 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 ] )
- [59] (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:46 [ 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::@33
-form_control::@33: scope:[form_control] from form_control::@3
- [60] (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:46 [ 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 ] )
- [61] 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:46 [ 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::@19
-form_control::@19: scope:[form_control] from form_control::@33
- [62] (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:46 [ 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 ] )
- [63] 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:46 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#23 ] )
- to:form_control::@20
-form_control::@20: scope:[form_control] from form_control::@19
- [64] (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:46 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 key_down_debounce#23 form_control::$13 ] )
- [65] *((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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] )
- [66] 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:46 [ form_field_idx#14 key_right_debounce#11 keyboard_key_pressed::return#0 key_down_debounce#23 ] )
- [67] (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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#4 ] )
- to:form_control::@35
-form_control::@35: scope:[form_control] from form_control::@20
- [68] (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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 form_control::$14 ] )
- [69] 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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] )
- to:form_control::@21
-form_control::@21: scope:[form_control] from form_control::@35
- [70] (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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] )
- [71] 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:46 [ 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::@21 form_control::@38 form_control::@39 form_control::@6
- [72] (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:46 [ 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::@14 form_control::@26 form_control::@34 form_control::@8
- [73] (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:46 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
- [73] (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:46 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
- [73] (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:46 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
- [73] (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:46 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
- [74] return [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
- to:@return
-form_control::@38: scope:[form_control] from form_control::@21
- [75] phi() [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] ( main:2::menu:10::form_control:46 [ 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::@35
- [76] (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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] )
- [77] 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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] )
- to:form_control::@8
-form_control::@39: scope:[form_control] from form_control::@6
- [78] phi() [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] ( main:2::menu:10::form_control:46 [ 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::@19 form_control::@33
- [79] (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:46 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 ] )
- [80] 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:46 [ 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 ] )
- [81] (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:46 [ 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::@34
-form_control::@34: scope:[form_control] from form_control::@4
- [82] (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:46 [ 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 ] )
- [83] 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:46 [ 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::@26
-form_control::@26: scope:[form_control] from form_control::@34
- [84] (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:46 [ 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 ] )
- [85] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
- to:form_control::@27
-form_control::@27: scope:[form_control] from form_control::@26
- [86] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
- [87] 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:46 [ 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 ] )
- [88] (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:46 [ 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::@36
-form_control::@36: scope:[form_control] from form_control::@27
- [89] (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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::$28 ] )
- [90] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
+ [47] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#14 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#1 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#1 ] )
+ [48] call form_field_ptr param-assignment [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] )
+ [49] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#3 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#3 ] )
to:form_control::@28
-form_control::@28: scope:[form_control] from form_control::@36
- [91] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
- [92] 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:46 [ 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
- [93] *((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:46 [ 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
- [94] *((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:46 [ 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::@36
- [95] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] )
- [96] 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:46 [ 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
- [97] *((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:46 [ 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
- [98] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$7 ] )
- [99] *((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:46 [ 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::@37: scope:[form_control] from form_control::@32
- [100] 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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] )
+form_control::@28: scope:[form_control] from form_control
+ [50] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_control::field#0 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_control::field#0 ] )
+ [51] (signed byte) form_cursor_count#5 ← -- (signed byte) form_cursor_count#13 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] )
+ [52] if((signed byte) form_cursor_count#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@31 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] )
to:form_control::@1
-keyboard_key_pressed: scope:[keyboard_key_pressed] from form_control::@20 form_control::@27 form_control::@3 form_control::@4
- [101] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::key#4 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] )
- [102] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] )
- [103] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] )
- [104] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] )
- [105] call keyboard_matrix_read param-assignment [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ 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::return#0 ] )
- [106] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#2 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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::return#2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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::return#2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ 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::return#2 ] )
- to:keyboard_key_pressed::@2
-keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_pressed
- [107] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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::$2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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::$2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ 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::$2 ] )
- [108] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::return#0 ] )
- to:keyboard_key_pressed::@return
-keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
- [109] return [ keyboard_key_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::return#0 ] )
+form_control::@1: scope:[form_control] from form_control::@28 form_control::@31
+ [53] (signed byte) form_cursor_count#15 ← phi( form_control::@28/(const signed byte) FORM_CURSOR_BLINK#0 form_control::@31/(signed byte) form_cursor_count#5 ) [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] )
+ [54] 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 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@15
+form_control::@15: scope:[form_control] from form_control::@1
+ [55] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$6 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$6 ] )
+ [56] *((byte*) form_control::field#0) ← (byte/word/dword~) form_control::$6 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 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
+ [57] phi() [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] )
+ [58] call keyboard_event_scan param-assignment [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] )
+ to:form_control::@29
+form_control::@29: scope:[form_control] from form_control::@3
+ [59] phi() [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] )
+ [60] call keyboard_event_get param-assignment [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#2 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#2 ] )
+ [61] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#3 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#3 ] )
+ to:form_control::@30
+form_control::@30: scope:[form_control] from form_control::@29
+ [62] (byte) form_control::key_event#0 ← (byte) keyboard_event_get::return#3 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] )
+ [63] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_DOWN#0) goto form_control::@4 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] )
+ to:form_control::@17
+form_control::@17: scope:[form_control] from form_control::@30
+ [64] (byte~) form_control::$12 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_control::$12 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_control::$12 ] )
+ [65] *((byte*) form_control::field#0) ← (byte~) form_control::$12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] )
+ [66] (byte~) form_control::$13 ← (byte) keyboard_modifiers#18 & (const byte) KEY_MODIFIER_SHIFT#0 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::$13 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::$13 ] )
+ [67] if((byte~) form_control::$13!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@5 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] )
+ to:form_control::@18
+form_control::@18: scope:[form_control] from form_control::@17
+ [68] (byte) form_field_idx#40 ← ++ (byte) form_field_idx#14 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] )
+ [69] if((byte) form_field_idx#40!=(const byte) form_fields_cnt#0) goto form_control::@32 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] )
+ to:form_control::@7
+form_control::@7: scope:[form_control] from form_control::@18 form_control::@32 form_control::@33 form_control::@5
+ [70] (byte) form_field_idx#30 ← phi( form_control::@18/(byte/signed byte/word/signed word/dword/signed dword) 0 form_control::@5/(const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 form_control::@32/(byte) form_field_idx#40 form_control::@33/(byte) form_field_idx#41 ) [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#30 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#30 ] )
+ to:form_control::@return
+form_control::@return: scope:[form_control] from form_control::@12 form_control::@4 form_control::@7
+ [71] (byte) form_field_idx#18 ← phi( form_control::@12/(byte) form_field_idx#14 form_control::@7/(byte) form_field_idx#30 form_control::@4/(byte) form_field_idx#14 ) [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] )
+ [71] (signed byte) form_cursor_count#16 ← phi( form_control::@12/(signed byte) form_cursor_count#15 form_control::@7/(const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 form_control::@4/(signed byte) form_cursor_count#15 ) [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] )
+ [72] return [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] )
to:@return
-keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed
- [110] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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 ] )
- [111] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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::return#0 ] )
+form_control::@32: scope:[form_control] from form_control::@18
+ [73] phi() [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] )
+ to:form_control::@7
+form_control::@5: scope:[form_control] from form_control::@17
+ [74] (byte) form_field_idx#41 ← -- (byte) form_field_idx#14 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] )
+ [75] if((byte) form_field_idx#41!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@33 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] )
+ to:form_control::@7
+form_control::@33: scope:[form_control] from form_control::@5
+ [76] phi() [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] )
+ to:form_control::@7
+form_control::@4: scope:[form_control] from form_control::@30
+ [77] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_RIGHT#0) goto form_control::@return [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@23
+form_control::@23: scope:[form_control] from form_control::@4
+ [78] (byte~) form_control::$24 ← (byte) keyboard_modifiers#18 & (const byte) KEY_MODIFIER_SHIFT#0 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::$24 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::$24 ] )
+ [79] if((byte~) form_control::$24!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@10 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@24
+form_control::@24: scope:[form_control] from form_control::@23
+ [80] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ [81] 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::@12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@25
+form_control::@25: scope:[form_control] from form_control::@24
+ [82] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@12
+form_control::@12: scope:[form_control] from form_control::@10 form_control::@24 form_control::@25 form_control::@27
+ [83] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_cursor_count#15 ] )
+ to:form_control::@return
+form_control::@10: scope:[form_control] from form_control::@23
+ [84] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ [85] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#14)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@27
+form_control::@27: scope:[form_control] from form_control::@10
+ [86] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@12
+form_control::@2: scope:[form_control] from form_control::@1
+ [87] (byte~) form_control::$7 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$7 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$7 ] )
+ [88] *((byte*) form_control::field#0) ← (byte~) form_control::$7 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] )
+ to:form_control::@3
+form_control::@31: scope:[form_control] from form_control::@28
+ [89] phi() [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] )
+ to:form_control::@1
+keyboard_event_get: scope:[keyboard_event_get] from form_control::@29
+ [90] if((byte) keyboard_events_size#17!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@1 [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] )
+ to:keyboard_event_get::@return
+keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@1
+ [91] (byte) keyboard_events_size#20 ← phi( keyboard_event_get::@1/(byte) keyboard_events_size#4 keyboard_event_get/(byte) keyboard_events_size#17 ) [ keyboard_events_size#20 keyboard_event_get::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#20 keyboard_event_get::return#2 ] )
+ [91] (byte) keyboard_event_get::return#2 ← phi( keyboard_event_get::@1/(byte) keyboard_event_get::return#0 keyboard_event_get/(byte/word/signed word/dword/signed dword) 255 ) [ keyboard_events_size#20 keyboard_event_get::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#20 keyboard_event_get::return#2 ] )
+ [92] return [ keyboard_events_size#20 keyboard_event_get::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#20 keyboard_event_get::return#2 ] )
+ to:@return
+keyboard_event_get::@1: scope:[keyboard_event_get] from keyboard_event_get
+ [93] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#17 [ keyboard_events_size#4 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#4 ] )
+ [94] (byte) keyboard_event_get::return#0 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_event_get::return#0 keyboard_events_size#4 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#0 keyboard_events_size#4 ] )
+ to:keyboard_event_get::@return
+keyboard_event_scan: scope:[keyboard_event_scan] from form_control::@3
+ [95] phi() [ keyboard_events_size#24 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#24 ] )
+ to:keyboard_event_scan::@1
+keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8
+ [96] (byte) keyboard_events_size#43 ← phi( keyboard_event_scan/(byte) keyboard_events_size#24 keyboard_event_scan::@8/(byte) keyboard_events_size#17 ) [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] )
+ [96] (byte) keyboard_event_scan::keycode#11 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::keycode#14 ) [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] )
+ [96] (byte) keyboard_event_scan::row#2 ← phi( keyboard_event_scan/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@8/(byte) keyboard_event_scan::row#1 ) [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] )
+ [97] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::rowid#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::rowid#0 ] )
+ [98] call keyboard_matrix_read param-assignment [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] )
+ [99] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#2 ] )
+ to:keyboard_event_scan::@25
+keyboard_event_scan::@25: scope:[keyboard_event_scan] from keyboard_event_scan::@1
+ [100] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] )
+ [101] if((byte) keyboard_event_scan::row_scan#0==*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] )
+ to:keyboard_event_scan::@3
+keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@25 keyboard_event_scan::@4
+ [102] (byte) keyboard_events_size#14 ← phi( keyboard_event_scan::@25/(byte) keyboard_events_size#43 keyboard_event_scan::@4/(byte) keyboard_events_size#44 ) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ [102] (byte) keyboard_event_scan::keycode#10 ← phi( keyboard_event_scan::@25/(byte) keyboard_event_scan::keycode#11 keyboard_event_scan::@4/(byte) keyboard_event_scan::keycode#15 ) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ [102] (byte) keyboard_event_scan::col#2 ← phi( keyboard_event_scan::@25/(byte/signed byte/word/signed word/dword/signed dword) 0 keyboard_event_scan::@4/(byte) keyboard_event_scan::col#1 ) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ [103] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$3 ] )
+ [104] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$4 ] )
+ [105] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ to:keyboard_event_scan::@14
+keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan::@3
+ [106] if((byte) keyboard_events_size#14==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ to:keyboard_event_scan::@15
+keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@14
+ [107] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::event_type#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::event_type#0 ] )
+ [108] if((byte) keyboard_event_scan::event_type#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@6 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ to:keyboard_event_scan::@16
+keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15
+ [109] (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$12 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$12 ] )
+ [110] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#14) ← (byte/word/dword~) keyboard_event_scan::$12 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ [111] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#14 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#2 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#2 ] )
+ to:keyboard_event_scan::@4
+keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@14 keyboard_event_scan::@16 keyboard_event_scan::@3 keyboard_event_scan::@6
+ [112] (byte) keyboard_events_size#44 ← phi( keyboard_event_scan::@16/(byte) keyboard_events_size#2 keyboard_event_scan::@3/(byte) keyboard_events_size#14 keyboard_event_scan::@14/(byte) keyboard_events_size#14 keyboard_event_scan::@6/(byte) keyboard_events_size#1 ) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#44 ] )
+ [113] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] )
+ [114] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] )
+ [115] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@3 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] )
+ to:keyboard_event_scan::@18
+keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan::@4
+ [116] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] )
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@18 keyboard_event_scan::@2
+ [117] (byte) keyboard_events_size#17 ← phi( keyboard_event_scan::@18/(byte) keyboard_events_size#44 keyboard_event_scan::@2/(byte) keyboard_events_size#43 ) [ keyboard_events_size#17 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 ] )
+ [117] (byte) keyboard_event_scan::keycode#14 ← phi( keyboard_event_scan::@18/(byte) keyboard_event_scan::keycode#15 keyboard_event_scan::@2/(byte) keyboard_event_scan::keycode#1 ) [ keyboard_events_size#17 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::row#2 keyboard_event_scan::keycode#14 ] )
+ [118] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 [ keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] )
+ [119] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 [ keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] )
+ to:keyboard_event_scan::@20
+keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@8
+ [120] phi() [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] )
+ [121] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] )
+ [122] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_event_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#0 ] )
+ to:keyboard_event_scan::@26
+keyboard_event_scan::@26: scope:[keyboard_event_scan] from keyboard_event_scan::@20
+ [123] (byte~) keyboard_event_scan::$16 ← (byte) keyboard_event_pressed::return#0 [ keyboard_events_size#17 keyboard_event_scan::$16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::$16 ] )
+ [124] if((byte~) keyboard_event_scan::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] )
+ to:keyboard_event_scan::@21
+keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@26
+ [125] phi() [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] )
+ to:keyboard_event_scan::@9
+keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@21 keyboard_event_scan::@26
+ [126] (byte) keyboard_modifiers#15 ← phi( keyboard_event_scan::@21/(byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 keyboard_event_scan::@26/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ keyboard_events_size#17 keyboard_modifiers#15 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 ] )
+ [127] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#15 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#15 ] )
+ [128] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#1 ] )
+ to:keyboard_event_scan::@27
+keyboard_event_scan::@27: scope:[keyboard_event_scan] from keyboard_event_scan::@9
+ [129] (byte~) keyboard_event_scan::$20 ← (byte) keyboard_event_pressed::return#1 [ keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_scan::$20 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_scan::$20 ] )
+ [130] if((byte~) keyboard_event_scan::$20==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 [ keyboard_events_size#17 keyboard_modifiers#15 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 ] )
+ to:keyboard_event_scan::@22
+keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@27
+ [131] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#15 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#17 keyboard_modifiers#3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#3 ] )
+ to:keyboard_event_scan::@10
+keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@27
+ [132] (byte) keyboard_modifiers#16 ← phi( keyboard_event_scan::@22/(byte) keyboard_modifiers#3 keyboard_event_scan::@27/(byte) keyboard_modifiers#15 ) [ keyboard_events_size#17 keyboard_modifiers#16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 ] )
+ [133] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#16 ] )
+ [134] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#2 ] )
+ to:keyboard_event_scan::@28
+keyboard_event_scan::@28: scope:[keyboard_event_scan] from keyboard_event_scan::@10
+ [135] (byte~) keyboard_event_scan::$24 ← (byte) keyboard_event_pressed::return#2 [ keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_scan::$24 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_scan::$24 ] )
+ [136] if((byte~) keyboard_event_scan::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 [ keyboard_events_size#17 keyboard_modifiers#16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 ] )
+ to:keyboard_event_scan::@23
+keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@28
+ [137] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#16 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#17 keyboard_modifiers#4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#4 ] )
+ to:keyboard_event_scan::@11
+keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@23 keyboard_event_scan::@28
+ [138] (byte) keyboard_modifiers#17 ← phi( keyboard_event_scan::@23/(byte) keyboard_modifiers#4 keyboard_event_scan::@28/(byte) keyboard_modifiers#16 ) [ keyboard_events_size#17 keyboard_modifiers#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 ] )
+ [139] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#17 ] )
+ [140] (byte) keyboard_event_pressed::return#3 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#3 ] )
+ to:keyboard_event_scan::@29
+keyboard_event_scan::@29: scope:[keyboard_event_scan] from keyboard_event_scan::@11
+ [141] (byte~) keyboard_event_scan::$28 ← (byte) keyboard_event_pressed::return#3 [ keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_scan::$28 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_scan::$28 ] )
+ [142] if((byte~) keyboard_event_scan::$28==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return [ keyboard_events_size#17 keyboard_modifiers#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 ] )
+ to:keyboard_event_scan::@24
+keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@29
+ [143] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#17 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#17 keyboard_modifiers#5 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#5 ] )
+ to:keyboard_event_scan::@return
+keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@24 keyboard_event_scan::@29
+ [144] (byte) keyboard_modifiers#18 ← phi( keyboard_event_scan::@29/(byte) keyboard_modifiers#17 keyboard_event_scan::@24/(byte) keyboard_modifiers#5 ) [ keyboard_modifiers#18 keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_modifiers#18 keyboard_events_size#17 ] )
+ [145] return [ keyboard_modifiers#18 keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_modifiers#18 keyboard_events_size#17 ] )
+ to:@return
+keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@15
+ [146] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#14) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] )
+ [147] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#14 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#1 ] )
+ to:keyboard_event_scan::@4
+keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@25
+ [148] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#43 keyboard_event_scan::keycode#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#43 keyboard_event_scan::keycode#1 ] )
+ to:keyboard_event_scan::@8
+keyboard_event_pressed: scope:[keyboard_event_pressed] from keyboard_event_scan::@10 keyboard_event_scan::@11 keyboard_event_scan::@20 keyboard_event_scan::@9
+ [149] (byte) keyboard_event_pressed::keycode#4 ← phi( keyboard_event_scan::@10/(const byte) KEY_CTRL#0 keyboard_event_scan::@11/(const byte) KEY_COMMODORE#0 keyboard_event_scan::@20/(const byte) KEY_LSHIFT#0 keyboard_event_scan::@9/(const byte) KEY_RSHIFT#0 ) [ keyboard_event_pressed::keycode#4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::keycode#4 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::keycode#4 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::keycode#4 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::keycode#4 ] )
+ [150] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] )
+ [151] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] )
+ [152] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] )
+ [153] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#10 ] )
+ to:keyboard_event_pressed::@return
+keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed
+ [154] return [ keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#10 ] )
+ to:@return
+keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_event_scan::@1
+ [155] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] )
+ [156] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] )
to:keyboard_matrix_read::@return
keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read
- [112] return [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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::return#0 ] )
+ [157] return [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] )
to:@return
form_field_ptr: scope:[form_field_ptr] from form_control form_render_values::@1
- [113] (byte) form_field_ptr::field_idx#2 ← phi( form_control/(byte) form_field_ptr::field_idx#1 form_render_values::@1/(byte) form_field_ptr::field_idx#0 ) [ form_field_ptr::field_idx#2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#2 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::field_idx#2 ] )
- [114] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] )
- [115] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] )
- [116] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::$2 form_field_ptr::x#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::$2 form_field_ptr::x#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::$2 form_field_ptr::x#0 ] )
- [117] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ 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_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#0 ] )
+ [158] (byte) form_field_ptr::field_idx#2 ← phi( form_control/(byte) form_field_ptr::field_idx#1 form_render_values::@1/(byte) form_field_ptr::field_idx#0 ) [ form_field_ptr::field_idx#2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#2 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 ] )
+ [159] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] )
+ [160] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] )
+ [161] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::$2 form_field_ptr::x#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::$2 form_field_ptr::x#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::$2 form_field_ptr::x#0 ] )
+ [162] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#0 ] )
to:form_field_ptr::@return
form_field_ptr::@return: scope:[form_field_ptr] from form_field_ptr
- [118] return [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ 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_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#0 ] )
+ [163] return [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#0 ] )
to:@return
form_render_values: scope:[form_render_values] from menu::@21
- [119] phi() [ ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [164] phi() [ ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:form_render_values::@1
form_render_values::@1: scope:[form_render_values] from form_render_values form_render_values::@3
- [120] (byte) form_render_values::idx#2 ← phi( form_render_values/(byte/signed byte/word/signed word/dword/signed dword) 0 form_render_values::@3/(byte) form_render_values::idx#1 ) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 ] )
- [121] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 [ form_field_ptr::field_idx#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_field_ptr::field_idx#0 form_render_values::idx#2 ] )
- [122] call form_field_ptr param-assignment [ form_field_ptr::return#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_field_ptr::return#0 form_render_values::idx#2 ] )
- [123] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#2 ] )
+ [165] (byte) form_render_values::idx#2 ← phi( form_render_values/(byte/signed byte/word/signed word/dword/signed dword) 0 form_render_values::@3/(byte) form_render_values::idx#1 ) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 ] )
+ [166] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 [ form_field_ptr::field_idx#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_field_ptr::field_idx#0 form_render_values::idx#2 ] )
+ [167] call form_field_ptr param-assignment [ form_field_ptr::return#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_field_ptr::return#0 form_render_values::idx#2 ] )
+ [168] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#2 ] )
to:form_render_values::@3
form_render_values::@3: scope:[form_render_values] from form_render_values::@1
- [124] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_render_values::field#0 ] )
- [125] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 ] )
- [126] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#1 ] )
- [127] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#1 ] )
+ [169] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_render_values::field#0 ] )
+ [170] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 ] )
+ [171] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#1 ] )
+ [172] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#1 ] )
to:form_render_values::@return
form_render_values::@return: scope:[form_render_values] from form_render_values::@3
- [128] return [ ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [173] return [ ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:@return
form_set_screen: scope:[form_set_screen] from menu::@20
- [129] phi() [ ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [174] phi() [ ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:form_set_screen::@1
form_set_screen::@1: scope:[form_set_screen] from form_set_screen form_set_screen::@1
- [130] (byte) form_set_screen::y#2 ← phi( form_set_screen/(byte/signed byte/word/signed word/dword/signed dword) 0 form_set_screen::@1/(byte) form_set_screen::y#1 ) [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 ] )
- [130] (byte*) form_set_screen::line#2 ← phi( form_set_screen/(const byte*) menu::SCREEN#0 form_set_screen::@1/(byte*) form_set_screen::line#1 ) [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 ] )
- [131] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] )
- [132] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 ] )
- [133] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] )
- [134] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 ] )
- [135] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::y#2 form_set_screen::line#1 ] )
- [136] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#1 form_set_screen::y#1 ] )
- [137] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#1 form_set_screen::y#1 ] )
+ [175] (byte) form_set_screen::y#2 ← phi( form_set_screen/(byte/signed byte/word/signed word/dword/signed dword) 0 form_set_screen::@1/(byte) form_set_screen::y#1 ) [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 ] )
+ [175] (byte*) form_set_screen::line#2 ← phi( form_set_screen/(const byte*) menu::SCREEN#0 form_set_screen::@1/(byte*) form_set_screen::line#1 ) [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 ] )
+ [176] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] )
+ [177] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 ] )
+ [178] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] )
+ [179] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 ] )
+ [180] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::y#2 form_set_screen::line#1 ] )
+ [181] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#1 form_set_screen::y#1 ] )
+ [182] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#1 form_set_screen::y#1 ] )
to:form_set_screen::@return
form_set_screen::@return: scope:[form_set_screen] from form_set_screen::@1
- [138] return [ ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [183] return [ ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:@return
print_str_lines: scope:[print_str_lines] from menu::@16 menu::@19
- [139] (byte*) print_str_lines::str#5 ← phi( menu::@16/(const string) MENU_COLS#0 menu::@19/(const string) MENU_TEXT#0 ) [ print_str_lines::str#5 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_set_screen::screen#2 ] )
- [140] (byte*~) print_char_cursor#63 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] )
+ [184] (byte*) print_str_lines::str#5 ← phi( menu::@16/(const string) MENU_COLS#0 menu::@19/(const string) MENU_TEXT#0 ) [ print_str_lines::str#5 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_set_screen::screen#2 ] )
+ [185] (byte*~) print_char_cursor#64 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] )
to:print_str_lines::@1
print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9
- [141] (byte*) print_line_cursor#2 ← phi( print_str_lines/(byte*) print_set_screen::screen#2 print_str_lines::@9/(byte*) print_line_cursor#22 ) [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
- [141] (byte*) print_char_cursor#22 ← phi( print_str_lines/(byte*~) print_char_cursor#63 print_str_lines::@9/(byte*~) print_char_cursor#64 ) [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
- [141] (byte*) print_str_lines::str#3 ← phi( print_str_lines/(byte*) print_str_lines::str#5 print_str_lines::@9/(byte*) print_str_lines::str#0 ) [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
- [142] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
+ [186] (byte*) print_line_cursor#2 ← phi( print_str_lines/(byte*) print_set_screen::screen#2 print_str_lines::@9/(byte*) print_line_cursor#22 ) [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
+ [186] (byte*) print_char_cursor#22 ← phi( print_str_lines/(byte*~) print_char_cursor#64 print_str_lines::@9/(byte*~) print_char_cursor#65 ) [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
+ [186] (byte*) print_str_lines::str#3 ← phi( print_str_lines/(byte*) print_str_lines::str#5 print_str_lines::@9/(byte*) print_str_lines::str#0 ) [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
+ [187] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] )
to:print_str_lines::@return
print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@1
- [143] return [ ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ [188] return [ ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
to:@return
print_str_lines::@4: scope:[print_str_lines] from print_str_lines::@1 print_str_lines::@5
- [144] (byte*) print_char_cursor#20 ← phi( print_str_lines::@1/(byte*) print_char_cursor#22 print_str_lines::@5/(byte*) print_char_cursor#38 ) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] )
- [144] (byte*) print_str_lines::str#4 ← phi( print_str_lines::@1/(byte*) print_str_lines::str#3 print_str_lines::@5/(byte*) print_str_lines::str#0 ) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] )
- [145] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] )
- [146] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] )
- [147] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] )
+ [189] (byte*) print_char_cursor#20 ← phi( print_str_lines::@1/(byte*) print_char_cursor#22 print_str_lines::@5/(byte*) print_char_cursor#38 ) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] )
+ [189] (byte*) print_str_lines::str#4 ← phi( print_str_lines::@1/(byte*) print_str_lines::str#3 print_str_lines::@5/(byte*) print_str_lines::str#0 ) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 ] )
+ [190] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] )
+ [191] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] )
+ [192] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] )
to:print_str_lines::@8
print_str_lines::@8: scope:[print_str_lines] from print_str_lines::@4
- [148] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] )
- [149] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 [ print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] )
+ [193] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] )
+ [194] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 [ print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] )
to:print_str_lines::@5
print_str_lines::@5: scope:[print_str_lines] from print_str_lines::@4 print_str_lines::@8
- [150] (byte*) print_char_cursor#38 ← phi( print_str_lines::@4/(byte*) print_char_cursor#20 print_str_lines::@8/(byte*) print_char_cursor#1 ) [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 print_str_lines::ch#0 ] )
- [151] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] )
+ [195] (byte*) print_char_cursor#38 ← phi( print_str_lines::@4/(byte*) print_char_cursor#20 print_str_lines::@8/(byte*) print_char_cursor#1 ) [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 print_str_lines::ch#0 ] )
+ [196] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] )
to:print_str_lines::@9
print_str_lines::@9: scope:[print_str_lines] from print_str_lines::@5
- [152] phi() [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] )
- [153] call print_ln param-assignment [ print_str_lines::str#0 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] )
- [154] (byte*~) print_char_cursor#64 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] )
+ [197] phi() [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] )
+ [198] call print_ln param-assignment [ print_str_lines::str#0 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] )
+ [199] (byte*~) print_char_cursor#65 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] )
to:print_str_lines::@1
print_ln: scope:[print_ln] from print_str_lines::@9
- [155] phi() [ print_line_cursor#2 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#2 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#2 print_char_cursor#38 ] )
+ [200] phi() [ print_line_cursor#2 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#2 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#2 print_char_cursor#38 ] )
to:print_ln::@1
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
- [156] (byte*) print_line_cursor#21 ← phi( print_ln/(byte*) print_line_cursor#2 print_ln::@1/(byte*) print_line_cursor#22 ) [ print_char_cursor#38 print_line_cursor#21 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#38 print_line_cursor#21 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#38 print_line_cursor#21 ] )
- [157] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] )
- [158] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] )
+ [201] (byte*) print_line_cursor#21 ← phi( print_ln/(byte*) print_line_cursor#2 print_ln::@1/(byte*) print_line_cursor#22 ) [ print_char_cursor#38 print_line_cursor#21 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#38 print_line_cursor#21 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#38 print_line_cursor#21 ] )
+ [202] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] )
+ [203] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] )
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
- [159] return [ print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] )
+ [204] return [ print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] )
to:@return
print_cls: scope:[print_cls] from menu::@15 menu::@18
- [160] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 print_cls::sc#0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#0 ] )
+ [205] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 print_cls::sc#0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#0 ] )
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
- [161] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] )
- [162] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] )
- [163] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] )
- [164] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] )
- [165] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] )
+ [206] (byte*) print_cls::sc#2 ← phi( print_cls/(byte*) print_cls::sc#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] )
+ [207] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] )
+ [208] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] )
+ [209] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] )
+ [210] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] )
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
- [166] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ [211] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
to:@return
print_set_screen: scope:[print_set_screen] from menu::@17 menu::@8
- [167] (byte*) print_set_screen::screen#2 ← phi( menu::@17/(const byte*) menu::SCREEN#0 menu::@8/(const byte*) COLS#0 ) [ print_set_screen::screen#2 ] ( main:2::menu:10::print_set_screen:26 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] main:2::menu:10::print_set_screen:32 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ [212] (byte*) print_set_screen::screen#2 ← phi( menu::@17/(const byte*) menu::SCREEN#0 menu::@8/(const byte*) COLS#0 ) [ print_set_screen::screen#2 ] ( main:2::menu:10::print_set_screen:26 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] main:2::menu:10::print_set_screen:32 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
to:print_set_screen::@return
print_set_screen::@return: scope:[print_set_screen] from print_set_screen
- [168] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_set_screen:26 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] main:2::menu:10::print_set_screen:32 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ [213] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_set_screen:26 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] main:2::menu:10::print_set_screen:32 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
to:@return
DOMINATORS
@begin dominated by @begin
-@25 dominated by @25 @begin
-@end dominated by @25 @end @begin
-main dominated by @25 main @begin
-main::@1 dominated by @25 main main::@1 @begin
-main::@return dominated by @25 main main::@1 @begin main::@return
-main::@2 dominated by @25 main main::@1 main::@2 @begin
-menu dominated by @25 main main::@1 main::@2 @begin menu
-menu::@1 dominated by @25 main main::@1 main::@2 @begin menu::@1 menu
-menu::@8 dominated by @25 main main::@1 main::@2 @begin menu::@8 menu::@1 menu
-menu::@15 dominated by @25 main main::@1 main::@2 @begin menu::@8 menu::@1 menu menu::@15
-menu::@16 dominated by @25 main main::@1 main::@2 @begin menu::@8 menu::@1 menu menu::@16 menu::@15
-menu::@17 dominated by @25 main main::@1 main::@2 @begin menu::@8 menu::@1 menu menu::@17 menu::@16 menu::@15
-menu::@18 dominated by @25 main main::@1 main::@2 @begin menu::@8 menu::@1 menu menu::@18 menu::@17 menu::@16 menu::@15
-menu::@19 dominated by @25 main main::@1 main::@2 @begin menu::@8 menu::@1 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-menu::@20 dominated by @25 main main::@1 main::@2 @begin menu::@8 menu::@20 menu::@1 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-menu::@21 dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@8 menu::@20 menu::@1 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-menu::@2 dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@8 menu::@20 menu::@1 menu::@2 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-menu::@return dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@return menu::@8 menu::@20 menu::@1 menu::@2 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-menu::@5 dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-menu::@7 dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-form_control dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@32 dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu form_control::@32 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@1 dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 menu form_control::@32 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@17 dominated by @25 main main::@1 main::@2 menu::@21 @begin form_control::@17 menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 menu form_control::@32 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@3 dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 menu form_control::@32 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@33 dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@19 dominated by @25 main main::@1 main::@2 menu::@21 @begin form_control::@19 menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@20 dominated by @25 main main::@1 main::@2 menu::@21 @begin form_control::@20 form_control::@19 menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@35 dominated by @25 main form_control::@35 main::@1 main::@2 menu::@21 @begin form_control::@20 form_control::@19 menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@21 dominated by @25 main form_control::@35 main::@1 main::@2 menu::@21 @begin form_control::@20 form_control::@21 form_control::@19 menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@8 dominated by @25 main form_control::@35 main::@1 main::@2 menu::@21 @begin form_control::@20 form_control::@19 menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 form_control::@8 menu form_control::@32 form_control::@33 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@return dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 form_control::@return menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@38 dominated by @25 main form_control::@35 form_control::@38 main::@1 main::@2 menu::@21 @begin form_control::@20 form_control::@21 form_control::@19 menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@6 dominated by @25 main form_control::@35 main::@1 main::@2 menu::@21 @begin form_control::@20 form_control::@19 menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 form_control::@6 menu form_control::@32 form_control::@33 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@39 dominated by @25 main form_control::@35 form_control::@39 main::@1 main::@2 menu::@21 @begin form_control::@20 form_control::@19 menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 form_control::@6 menu form_control::@32 form_control::@33 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@4 dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 form_control::@4 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@34 dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 form_control::@4 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 form_control::@34 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@26 dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 form_control::@4 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 form_control::@34 menu::@19 form_control form_control::@26 menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@27 dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 form_control::@4 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 form_control::@34 menu::@19 form_control form_control::@26 menu::@18 form_control::@27 menu::@17 menu::@16 menu::@15
-form_control::@36 dominated by @25 main form_control::@36 main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 form_control::@4 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 form_control::@34 menu::@19 form_control form_control::@26 menu::@18 form_control::@27 menu::@17 menu::@16 menu::@15
-form_control::@28 dominated by @25 main form_control::@36 main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 form_control::@4 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 form_control::@34 menu::@19 form_control form_control::@26 menu::@18 form_control::@27 form_control::@28 menu::@17 menu::@16 menu::@15
-form_control::@29 dominated by @25 main form_control::@36 main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 form_control::@4 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 form_control::@34 menu::@19 form_control form_control::@26 menu::@18 form_control::@27 form_control::@28 form_control::@29 menu::@17 menu::@16 menu::@15
-form_control::@14 dominated by @25 main form_control::@36 main::@1 main::@2 menu::@21 @begin form_control::@14 menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 form_control::@4 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 form_control::@34 menu::@19 form_control form_control::@26 menu::@18 form_control::@27 menu::@17 menu::@16 menu::@15
-form_control::@12 dominated by @25 main form_control::@36 main::@1 main::@2 menu::@21 @begin form_control::@12 menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 form_control::@4 menu::@1 menu::@2 form_control::@3 menu form_control::@32 form_control::@33 form_control::@34 menu::@19 form_control form_control::@26 menu::@18 form_control::@27 menu::@17 menu::@16 menu::@15
-form_control::@31 dominated by @25 main form_control::@36 main::@1 main::@2 menu::@21 @begin form_control::@12 menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 form_control::@4 menu::@1 menu::@2 form_control::@3 menu form_control::@31 form_control::@32 form_control::@33 form_control::@34 menu::@19 form_control form_control::@26 menu::@18 form_control::@27 menu::@17 menu::@16 menu::@15
-form_control::@2 dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 form_control::@2 menu::@2 menu form_control::@32 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-form_control::@37 dominated by @25 main form_control::@37 main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu form_control::@32 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
-keyboard_key_pressed dominated by @25 main main::@1 main::@2 menu::@21 @begin menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 menu form_control::@32 menu::@19 form_control menu::@18 keyboard_key_pressed menu::@17 menu::@16 menu::@15
-keyboard_key_pressed::@2 dominated by @25 main main::@1 main::@2 keyboard_key_pressed::@2 menu::@21 @begin menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 menu form_control::@32 menu::@19 form_control menu::@18 keyboard_key_pressed menu::@17 menu::@16 menu::@15
-keyboard_key_pressed::@return dominated by @25 main main::@1 main::@2 keyboard_key_pressed::@2 menu::@21 @begin keyboard_key_pressed::@return menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 menu form_control::@32 menu::@19 form_control menu::@18 keyboard_key_pressed menu::@17 menu::@16 menu::@15
-keyboard_matrix_read dominated by @25 main main::@1 main::@2 menu::@21 @begin keyboard_matrix_read menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 menu form_control::@32 menu::@19 form_control menu::@18 keyboard_key_pressed menu::@17 menu::@16 menu::@15
-keyboard_matrix_read::@return dominated by @25 main main::@1 main::@2 menu::@21 @begin keyboard_matrix_read menu::@7 menu::@8 form_control::@1 menu::@5 menu::@20 menu::@1 menu::@2 form_control::@3 menu form_control::@32 keyboard_matrix_read::@return menu::@19 form_control menu::@18 keyboard_key_pressed menu::@17 menu::@16 menu::@15
-form_field_ptr dominated by @25 main main::@1 main::@2 menu::@21 @begin form_field_ptr menu::@8 menu::@20 menu::@1 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-form_field_ptr::@return dominated by @25 main main::@1 form_field_ptr::@return main::@2 menu::@21 @begin form_field_ptr menu::@8 menu::@20 menu::@1 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-form_render_values dominated by @25 main main::@1 main::@2 menu::@21 @begin form_render_values menu::@8 menu::@20 menu::@1 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-form_render_values::@1 dominated by @25 main form_render_values::@1 main::@1 main::@2 menu::@21 @begin form_render_values menu::@8 menu::@20 menu::@1 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-form_render_values::@3 dominated by @25 form_render_values::@3 main form_render_values::@1 main::@1 main::@2 menu::@21 @begin form_render_values menu::@8 menu::@20 menu::@1 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-form_render_values::@return dominated by @25 form_render_values::@3 main form_render_values::@1 main::@1 main::@2 menu::@21 @begin form_render_values::@return form_render_values menu::@8 menu::@20 menu::@1 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-form_set_screen dominated by @25 form_set_screen main main::@1 main::@2 @begin menu::@8 menu::@20 menu::@1 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-form_set_screen::@1 dominated by @25 form_set_screen main main::@1 main::@2 @begin menu::@8 form_set_screen::@1 menu::@20 menu::@1 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-form_set_screen::@return dominated by @25 form_set_screen main form_set_screen::@return main::@1 main::@2 @begin menu::@8 form_set_screen::@1 menu::@20 menu::@1 menu menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
-print_str_lines dominated by @25 main main::@1 main::@2 print_str_lines @begin menu::@8 menu::@1 menu menu::@16 menu::@15
-print_str_lines::@1 dominated by @25 main main::@1 main::@2 print_str_lines @begin menu::@8 menu::@1 print_str_lines::@1 menu menu::@16 menu::@15
-print_str_lines::@return dominated by @25 main main::@1 main::@2 print_str_lines @begin print_str_lines::@return menu::@8 menu::@1 print_str_lines::@1 menu menu::@16 menu::@15
-print_str_lines::@4 dominated by @25 main main::@1 main::@2 print_str_lines @begin menu::@8 menu::@1 print_str_lines::@1 print_str_lines::@4 menu menu::@16 menu::@15
-print_str_lines::@8 dominated by @25 main main::@1 main::@2 print_str_lines @begin menu::@8 menu::@1 print_str_lines::@1 print_str_lines::@4 menu print_str_lines::@8 menu::@16 menu::@15
-print_str_lines::@5 dominated by @25 main main::@1 main::@2 print_str_lines @begin menu::@8 menu::@1 print_str_lines::@1 print_str_lines::@4 menu print_str_lines::@5 menu::@16 menu::@15
-print_str_lines::@9 dominated by @25 main main::@1 main::@2 print_str_lines @begin menu::@8 print_str_lines::@9 menu::@1 print_str_lines::@1 print_str_lines::@4 menu print_str_lines::@5 menu::@16 menu::@15
-print_ln dominated by @25 main main::@1 main::@2 print_str_lines @begin print_ln menu::@8 print_str_lines::@9 menu::@1 print_str_lines::@1 print_str_lines::@4 menu print_str_lines::@5 menu::@16 menu::@15
-print_ln::@1 dominated by print_ln::@1 @25 main main::@1 main::@2 print_str_lines @begin print_ln menu::@8 print_str_lines::@9 menu::@1 print_str_lines::@1 print_str_lines::@4 menu print_str_lines::@5 menu::@16 menu::@15
-print_ln::@return dominated by print_ln::@1 @25 main print_ln::@return main::@1 main::@2 print_str_lines @begin print_ln menu::@8 print_str_lines::@9 menu::@1 print_str_lines::@1 print_str_lines::@4 menu print_str_lines::@5 menu::@16 menu::@15
-print_cls dominated by @25 main main::@1 main::@2 @begin menu::@8 menu::@1 menu print_cls menu::@15
-print_cls::@1 dominated by @25 main main::@1 main::@2 @begin menu::@8 menu::@1 print_cls::@1 menu print_cls menu::@15
-print_cls::@return dominated by @25 main main::@1 main::@2 @begin print_cls::@return menu::@8 menu::@1 print_cls::@1 menu print_cls menu::@15
-print_set_screen dominated by @25 main main::@1 main::@2 @begin print_set_screen menu::@8 menu::@1 menu
-print_set_screen::@return dominated by @25 main main::@1 main::@2 @begin print_set_screen menu::@8 menu::@1 menu print_set_screen::@return
+@28 dominated by @28 @begin
+@end dominated by @end @28 @begin
+main dominated by @28 main @begin
+main::@1 dominated by main::@1 @28 main @begin
+main::@return dominated by main::@1 main::@return @28 main @begin
+main::@2 dominated by main::@1 main::@2 @28 main @begin
+menu dominated by main::@1 main::@2 menu @28 main @begin
+menu::@1 dominated by main::@1 main::@2 menu @28 main @begin menu::@1
+menu::@8 dominated by main::@1 main::@2 menu @28 main @begin menu::@8 menu::@1
+menu::@15 dominated by main::@1 main::@2 menu @28 main @begin menu::@8 menu::@1 menu::@15
+menu::@16 dominated by main::@1 main::@2 menu @28 main @begin menu::@8 menu::@1 menu::@16 menu::@15
+menu::@17 dominated by main::@1 main::@2 menu @28 main @begin menu::@8 menu::@1 menu::@17 menu::@16 menu::@15
+menu::@18 dominated by main::@1 main::@2 menu @28 main @begin menu::@8 menu::@1 menu::@18 menu::@17 menu::@16 menu::@15
+menu::@19 dominated by main::@1 main::@2 menu @28 main @begin menu::@8 menu::@1 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+menu::@20 dominated by main::@1 main::@2 menu @28 main @begin menu::@8 menu::@20 menu::@1 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+menu::@21 dominated by main::@1 main::@2 menu @28 main menu::@21 @begin menu::@8 menu::@20 menu::@1 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+menu::@2 dominated by main::@1 main::@2 menu @28 main menu::@21 @begin menu::@8 menu::@20 menu::@1 menu::@2 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+menu::@return dominated by main::@1 main::@2 menu @28 main menu::@21 @begin menu::@return menu::@8 menu::@20 menu::@1 menu::@2 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+menu::@5 dominated by main::@1 main::@2 menu @28 main menu::@21 @begin menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+menu::@7 dominated by main::@1 main::@2 menu @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+form_control dominated by main::@1 main::@2 menu @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@28 dominated by main::@1 main::@2 menu form_control::@28 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@1 dominated by main::@1 main::@2 form_control::@1 menu form_control::@28 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@15 dominated by main::@1 main::@2 form_control::@15 form_control::@1 menu form_control::@28 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@3 dominated by main::@1 main::@2 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@29 dominated by main::@1 main::@2 form_control::@1 form_control::@3 menu form_control::@28 form_control::@29 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@30 dominated by main::@1 main::@2 form_control::@1 form_control::@3 form_control::@30 menu form_control::@28 form_control::@29 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@17 dominated by main::@1 main::@2 form_control::@17 form_control::@1 form_control::@3 form_control::@30 menu form_control::@28 form_control::@29 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@18 dominated by main::@1 main::@2 form_control::@17 form_control::@18 form_control::@1 form_control::@3 form_control::@30 menu form_control::@28 form_control::@29 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@7 dominated by main::@1 main::@2 form_control::@17 form_control::@1 form_control::@3 form_control::@30 form_control::@7 menu form_control::@28 form_control::@29 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@return dominated by main::@1 main::@2 form_control::@1 form_control::@3 form_control::@30 menu form_control::@return form_control::@28 form_control::@29 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@32 dominated by main::@1 main::@2 form_control::@17 form_control::@18 form_control::@1 form_control::@3 form_control::@30 menu form_control::@32 form_control::@28 form_control::@29 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@5 dominated by main::@1 main::@2 form_control::@17 form_control::@1 form_control::@5 form_control::@3 form_control::@30 menu form_control::@28 form_control::@29 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@33 dominated by main::@1 main::@2 form_control::@17 form_control::@1 form_control::@5 form_control::@3 form_control::@30 menu form_control::@33 form_control::@28 form_control::@29 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@4 dominated by main::@1 main::@2 form_control::@1 form_control::@4 form_control::@3 form_control::@30 menu form_control::@28 form_control::@29 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@23 dominated by main::@1 main::@2 form_control::@23 form_control::@1 form_control::@4 form_control::@3 form_control::@30 menu form_control::@28 form_control::@29 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@24 dominated by main::@1 main::@2 form_control::@23 form_control::@1 form_control::@4 form_control::@3 form_control::@30 menu form_control::@24 form_control::@28 form_control::@29 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@25 dominated by main::@1 main::@2 form_control::@23 form_control::@1 form_control::@4 form_control::@3 form_control::@30 menu form_control::@24 form_control::@25 form_control::@28 form_control::@29 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@12 dominated by main::@1 main::@2 form_control::@23 form_control::@1 form_control::@4 form_control::@3 form_control::@30 menu form_control::@28 form_control::@29 @28 main menu::@21 @begin form_control::@12 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@10 dominated by main::@1 main::@2 form_control::@23 form_control::@1 form_control::@4 form_control::@3 form_control::@30 menu form_control::@28 form_control::@29 @28 main menu::@21 @begin form_control::@10 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@27 dominated by main::@1 main::@2 form_control::@23 form_control::@1 form_control::@4 form_control::@3 form_control::@30 menu form_control::@27 form_control::@28 form_control::@29 @28 main menu::@21 @begin form_control::@10 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@2 dominated by main::@1 main::@2 form_control::@1 form_control::@2 menu form_control::@28 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_control::@31 dominated by main::@1 main::@2 menu form_control::@31 form_control::@28 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_get dominated by main::@1 main::@2 form_control::@1 form_control::@3 menu form_control::@28 form_control::@29 @28 main keyboard_event_get menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_get::@return dominated by main::@1 main::@2 form_control::@1 form_control::@3 menu form_control::@28 form_control::@29 keyboard_event_get::@return @28 main keyboard_event_get menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_get::@1 dominated by main::@1 main::@2 form_control::@1 form_control::@3 menu form_control::@28 form_control::@29 keyboard_event_get::@1 @28 main keyboard_event_get menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan dominated by keyboard_event_scan main::@1 main::@2 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@1 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@25 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@3 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@3 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@14 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@3 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 menu::@7 menu::@8 menu::@5 menu::@20 keyboard_event_scan::@14 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@15 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@3 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 menu::@7 menu::@8 menu::@5 menu::@20 keyboard_event_scan::@14 menu::@1 menu::@2 keyboard_event_scan::@15 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@16 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@3 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 menu::@7 menu::@8 menu::@5 menu::@20 keyboard_event_scan::@14 menu::@1 keyboard_event_scan::@16 menu::@2 keyboard_event_scan::@15 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@4 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@3 keyboard_event_scan::@4 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@18 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@3 keyboard_event_scan::@4 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 menu::@7 keyboard_event_scan::@18 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@8 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@20 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 keyboard_event_scan::@20 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@26 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 keyboard_event_scan::@26 keyboard_event_scan::@20 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@21 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 keyboard_event_scan::@26 keyboard_event_scan::@21 keyboard_event_scan::@20 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@9 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@9 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 keyboard_event_scan::@26 keyboard_event_scan::@20 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@27 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@9 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@22 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@9 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@22 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@10 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@9 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 keyboard_event_scan::@10 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@28 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@9 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 keyboard_event_scan::@10 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@23 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@9 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 keyboard_event_scan::@23 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 keyboard_event_scan::@10 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@11 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@9 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 keyboard_event_scan::@10 keyboard_event_scan::@11 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@29 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@9 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@29 keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 keyboard_event_scan::@10 keyboard_event_scan::@11 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@24 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@9 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@29 keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@24 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 keyboard_event_scan::@10 keyboard_event_scan::@11 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@return dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@9 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 keyboard_event_scan::@return @28 main menu::@21 @begin keyboard_event_scan::@29 keyboard_event_scan::@28 keyboard_event_scan::@25 keyboard_event_scan::@27 keyboard_event_scan::@26 keyboard_event_scan::@20 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 keyboard_event_scan::@10 keyboard_event_scan::@11 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@6 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@6 keyboard_event_scan::@3 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 menu::@7 menu::@8 menu::@5 menu::@20 keyboard_event_scan::@14 menu::@1 menu::@2 keyboard_event_scan::@15 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_scan::@2 dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@2 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_scan::@25 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_pressed dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_pressed keyboard_event_scan::@25 keyboard_event_scan::@20 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_event_pressed::@return dominated by keyboard_event_scan keyboard_event_pressed::@return main::@1 main::@2 keyboard_event_scan::@8 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_event_pressed keyboard_event_scan::@25 keyboard_event_scan::@20 menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_matrix_read dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_matrix_read menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+keyboard_matrix_read::@return dominated by keyboard_event_scan main::@1 main::@2 keyboard_event_scan::@1 form_control::@1 form_control::@3 menu form_control::@28 @28 main menu::@21 @begin keyboard_matrix_read menu::@7 menu::@8 menu::@5 menu::@20 menu::@1 menu::@2 keyboard_matrix_read::@return menu::@19 form_control menu::@18 menu::@17 menu::@16 menu::@15
+form_field_ptr dominated by main::@1 main::@2 form_field_ptr menu @28 main menu::@21 @begin menu::@8 menu::@20 menu::@1 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+form_field_ptr::@return dominated by main::@1 form_field_ptr::@return main::@2 form_field_ptr menu @28 main menu::@21 @begin menu::@8 menu::@20 menu::@1 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+form_render_values dominated by main::@1 main::@2 menu @28 main menu::@21 @begin form_render_values menu::@8 menu::@20 menu::@1 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+form_render_values::@1 dominated by form_render_values::@1 main::@1 main::@2 menu @28 main menu::@21 @begin form_render_values menu::@8 menu::@20 menu::@1 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+form_render_values::@3 dominated by form_render_values::@3 form_render_values::@1 main::@1 main::@2 menu @28 main menu::@21 @begin form_render_values menu::@8 menu::@20 menu::@1 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+form_render_values::@return dominated by form_render_values::@3 form_render_values::@1 main::@1 main::@2 form_render_values::@return menu @28 main menu::@21 @begin form_render_values menu::@8 menu::@20 menu::@1 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+form_set_screen dominated by main::@1 main::@2 menu @28 form_set_screen main @begin menu::@8 menu::@20 menu::@1 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+form_set_screen::@1 dominated by main::@1 main::@2 form_set_screen::@1 menu @28 form_set_screen main @begin menu::@8 menu::@20 menu::@1 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+form_set_screen::@return dominated by main::@1 main::@2 form_set_screen::@1 menu @28 form_set_screen main form_set_screen::@return @begin menu::@8 menu::@20 menu::@1 menu::@19 menu::@18 menu::@17 menu::@16 menu::@15
+print_str_lines dominated by main::@1 main::@2 print_str_lines menu @28 main @begin menu::@8 menu::@1 menu::@16 menu::@15
+print_str_lines::@1 dominated by main::@1 main::@2 print_str_lines menu @28 main @begin menu::@8 menu::@1 print_str_lines::@1 menu::@16 menu::@15
+print_str_lines::@return dominated by main::@1 main::@2 print_str_lines menu @28 main @begin print_str_lines::@return menu::@8 menu::@1 print_str_lines::@1 menu::@16 menu::@15
+print_str_lines::@4 dominated by main::@1 main::@2 print_str_lines menu @28 main @begin menu::@8 menu::@1 print_str_lines::@1 print_str_lines::@4 menu::@16 menu::@15
+print_str_lines::@8 dominated by main::@1 main::@2 print_str_lines menu @28 main @begin menu::@8 menu::@1 print_str_lines::@1 print_str_lines::@4 print_str_lines::@8 menu::@16 menu::@15
+print_str_lines::@5 dominated by main::@1 main::@2 print_str_lines menu @28 main @begin menu::@8 menu::@1 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 menu::@16 menu::@15
+print_str_lines::@9 dominated by main::@1 main::@2 print_str_lines menu @28 main @begin menu::@8 print_str_lines::@9 menu::@1 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 menu::@16 menu::@15
+print_ln dominated by main::@1 main::@2 print_str_lines print_ln menu @28 main @begin menu::@8 print_str_lines::@9 menu::@1 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 menu::@16 menu::@15
+print_ln::@1 dominated by main::@1 main::@2 print_str_lines print_ln menu print_ln::@1 @28 main @begin menu::@8 print_str_lines::@9 menu::@1 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 menu::@16 menu::@15
+print_ln::@return dominated by print_ln::@return main::@1 main::@2 print_str_lines print_ln menu print_ln::@1 @28 main @begin menu::@8 print_str_lines::@9 menu::@1 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 menu::@16 menu::@15
+print_cls dominated by main::@1 main::@2 menu print_cls @28 main @begin menu::@8 menu::@1 menu::@15
+print_cls::@1 dominated by main::@1 main::@2 menu print_cls @28 main @begin menu::@8 menu::@1 print_cls::@1 menu::@15
+print_cls::@return dominated by main::@1 main::@2 menu print_cls @28 main @begin print_cls::@return menu::@8 menu::@1 print_cls::@1 menu::@15
+print_set_screen dominated by main::@1 main::@2 print_set_screen menu @28 main @begin menu::@8 menu::@1
+print_set_screen::@return dominated by main::@1 main::@2 print_set_screen menu @28 main @begin menu::@8 menu::@1 print_set_screen::@return
NATURAL LOOPS
Found back edge: Loop head: main::@1 tails: main::@2 blocks: null
Found back edge: Loop head: menu::@1 tails: menu::@1 blocks: null
Found back edge: Loop head: menu::@5 tails: menu::@5 blocks: null
Found back edge: Loop head: menu::@2 tails: menu::@7 blocks: null
+Found back edge: Loop head: keyboard_event_scan::@3 tails: keyboard_event_scan::@4 blocks: null
+Found back edge: Loop head: keyboard_event_scan::@1 tails: keyboard_event_scan::@8 blocks: null
Found back edge: Loop head: form_render_values::@1 tails: form_render_values::@3 blocks: null
Found back edge: Loop head: form_set_screen::@1 tails: form_set_screen::@1 blocks: null
Found back edge: Loop head: print_str_lines::@4 tails: print_str_lines::@5 blocks: null
@@ -6418,6 +7619,8 @@ Populated: Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1
Populated: Loop head: menu::@1 tails: menu::@1 blocks: menu::@1
Populated: Loop head: menu::@5 tails: menu::@5 blocks: menu::@5
Populated: Loop head: menu::@2 tails: menu::@7 blocks: menu::@7 menu::@5 menu::@2
+Populated: Loop head: keyboard_event_scan::@3 tails: keyboard_event_scan::@4 blocks: keyboard_event_scan::@4 keyboard_event_scan::@14 keyboard_event_scan::@16 keyboard_event_scan::@3 keyboard_event_scan::@6 keyboard_event_scan::@15
+Populated: Loop head: keyboard_event_scan::@1 tails: keyboard_event_scan::@8 blocks: keyboard_event_scan::@8 keyboard_event_scan::@18 keyboard_event_scan::@2 keyboard_event_scan::@4 keyboard_event_scan::@25 keyboard_event_scan::@14 keyboard_event_scan::@16 keyboard_event_scan::@3 keyboard_event_scan::@6 keyboard_event_scan::@1 keyboard_event_scan::@15
Populated: Loop head: form_render_values::@1 tails: form_render_values::@3 blocks: form_render_values::@3 form_render_values::@1
Populated: Loop head: form_set_screen::@1 tails: form_set_screen::@1 blocks: form_set_screen::@1
Populated: Loop head: print_str_lines::@4 tails: print_str_lines::@5 blocks: print_str_lines::@5 print_str_lines::@4 print_str_lines::@8
@@ -6428,6 +7631,8 @@ Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1
Loop head: menu::@1 tails: menu::@1 blocks: menu::@1
Loop head: menu::@5 tails: menu::@5 blocks: menu::@5
Loop head: menu::@2 tails: menu::@7 blocks: menu::@7 menu::@5 menu::@2
+Loop head: keyboard_event_scan::@3 tails: keyboard_event_scan::@4 blocks: keyboard_event_scan::@4 keyboard_event_scan::@14 keyboard_event_scan::@16 keyboard_event_scan::@3 keyboard_event_scan::@6 keyboard_event_scan::@15
+Loop head: keyboard_event_scan::@1 tails: keyboard_event_scan::@8 blocks: keyboard_event_scan::@8 keyboard_event_scan::@18 keyboard_event_scan::@2 keyboard_event_scan::@4 keyboard_event_scan::@25 keyboard_event_scan::@14 keyboard_event_scan::@16 keyboard_event_scan::@3 keyboard_event_scan::@6 keyboard_event_scan::@1 keyboard_event_scan::@15
Loop head: form_render_values::@1 tails: form_render_values::@3 blocks: form_render_values::@3 form_render_values::@1
Loop head: form_set_screen::@1 tails: form_set_screen::@1 blocks: form_set_screen::@1
Loop head: print_str_lines::@4 tails: print_str_lines::@5 blocks: print_str_lines::@5 print_str_lines::@4 print_str_lines::@8
@@ -6457,12 +7662,18 @@ Found 0 loops in scope [form_control]
Found 1 loops in scope [print_ln]
Loop head: print_ln::@1 tails: print_ln::@1 blocks: print_ln::@1
Found 0 loops in scope [form_field_ptr]
-Found 0 loops in scope [keyboard_key_pressed]
+Found 2 loops in scope [keyboard_event_scan]
+ Loop head: keyboard_event_scan::@3 tails: keyboard_event_scan::@4 blocks: keyboard_event_scan::@4 keyboard_event_scan::@14 keyboard_event_scan::@16 keyboard_event_scan::@3 keyboard_event_scan::@6 keyboard_event_scan::@15
+ Loop head: keyboard_event_scan::@1 tails: keyboard_event_scan::@8 blocks: keyboard_event_scan::@8 keyboard_event_scan::@18 keyboard_event_scan::@2 keyboard_event_scan::@4 keyboard_event_scan::@25 keyboard_event_scan::@14 keyboard_event_scan::@16 keyboard_event_scan::@3 keyboard_event_scan::@6 keyboard_event_scan::@1 keyboard_event_scan::@15
+Found 0 loops in scope [keyboard_event_get]
Found 0 loops in scope [keyboard_matrix_read]
+Found 0 loops in scope [keyboard_event_pressed]
Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 depth: 1
Loop head: menu::@1 tails: menu::@1 blocks: menu::@1 depth: 2
Loop head: menu::@5 tails: menu::@5 blocks: menu::@5 depth: 3
Loop head: menu::@2 tails: menu::@7 blocks: menu::@7 menu::@5 menu::@2 depth: 2
+Loop head: keyboard_event_scan::@3 tails: keyboard_event_scan::@4 blocks: keyboard_event_scan::@4 keyboard_event_scan::@14 keyboard_event_scan::@16 keyboard_event_scan::@3 keyboard_event_scan::@6 keyboard_event_scan::@15 depth: 4
+Loop head: keyboard_event_scan::@1 tails: keyboard_event_scan::@8 blocks: keyboard_event_scan::@8 keyboard_event_scan::@18 keyboard_event_scan::@2 keyboard_event_scan::@4 keyboard_event_scan::@25 keyboard_event_scan::@14 keyboard_event_scan::@16 keyboard_event_scan::@3 keyboard_event_scan::@6 keyboard_event_scan::@1 keyboard_event_scan::@15 depth: 3
Loop head: form_render_values::@1 tails: form_render_values::@3 blocks: form_render_values::@3 form_render_values::@1 depth: 2
Loop head: form_set_screen::@1 tails: form_set_screen::@1 blocks: form_set_screen::@1 depth: 2
Loop head: print_str_lines::@4 tails: print_str_lines::@5 blocks: print_str_lines::@5 print_str_lines::@4 print_str_lines::@8 depth: 3
@@ -6489,8 +7700,16 @@ VARIABLE REGISTER WEIGHTS
(byte*) DTV_PALETTE
(byte[16]) DTV_PALETTE_DEFAULT
(signed byte) FORM_CURSOR_BLINK
+(byte) KEY_COMMODORE
(byte) KEY_CRSR_DOWN
(byte) KEY_CRSR_RIGHT
+(byte) KEY_CTRL
+(byte) KEY_LSHIFT
+(byte) KEY_MODIFIER_COMMODORE
+(byte) KEY_MODIFIER_CTRL
+(byte) KEY_MODIFIER_LSHIFT
+(byte) KEY_MODIFIER_RSHIFT
+(byte) KEY_MODIFIER_SHIFT
(byte) KEY_RSHIFT
(byte[]) MENU_COLS
(byte[]) MENU_TEXT
@@ -6502,30 +7721,28 @@ VARIABLE REGISTER WEIGHTS
(byte*) VIC_MEMORY
(byte) VIC_RSEL
(void()) form_control()
+(byte~) form_control::$12 4.0
(byte~) form_control::$13 4.0
-(byte~) form_control::$14 4.0
-(byte~) form_control::$28 4.0
+(byte~) form_control::$24 4.0
(byte/word/dword~) form_control::$6 4.0
(byte~) form_control::$7 4.0
(byte*) form_control::field
-(byte*) form_control::field#0 0.44444444444444453
-(byte) form_control::key_down
-(byte) form_control::key_down#0 2.6666666666666665
-(byte) form_control::key_right
-(byte) form_control::key_right#0 2.6666666666666665
+(byte*) form_control::field#0 0.5925925925925926
+(byte) form_control::key_event
+(byte) form_control::key_event#0 3.0
(signed byte) form_cursor_count
(signed byte) form_cursor_count#1 0.3939393939393939
(signed byte) form_cursor_count#13 11.6
-(signed byte) form_cursor_count#15 0.3125
-(signed byte) form_cursor_count#16 35.66666666666666
+(signed byte) form_cursor_count#15 0.34782608695652173
+(signed byte) form_cursor_count#16 34.99999999999999
(signed byte) form_cursor_count#5 2.0
(byte) form_field_idx
(byte) form_field_idx#1 0.3939393939393939
-(byte) form_field_idx#14 2.901960784313723
-(byte) form_field_idx#18 36.33333333333332
-(byte) form_field_idx#32 6.0
+(byte) form_field_idx#14 3.6499999999999972
+(byte) form_field_idx#18 35.66666666666666
+(byte) form_field_idx#30 6.0
+(byte) form_field_idx#40 2.0
(byte) form_field_idx#41 2.0
-(byte) form_field_idx#42 2.0
(byte*()) form_field_ptr((byte) form_field_ptr::field_idx)
(word~) form_field_ptr::$2 1.0
(byte*) form_field_ptr::field
@@ -6565,40 +7782,80 @@ VARIABLE REGISTER WEIGHTS
(byte) form_set_screen::y
(byte) form_set_screen::y#1 151.5
(byte) form_set_screen::y#2 67.33333333333333
-(byte) key_down_debounce
-(byte) key_down_debounce#1 0.3939393939393939
-(byte) key_down_debounce#11 4.916666666666666
-(byte) key_down_debounce#13 36.33333333333332
-(byte) key_down_debounce#20 0.5263157894736842
-(byte) key_down_debounce#23 0.4
-(byte) key_right_debounce
-(byte) key_right_debounce#1 0.3939393939393939
-(byte) key_right_debounce#11 2.727272727272727
-(byte) key_right_debounce#13 36.33333333333332
-(byte) key_right_debounce#21 0.42857142857142855
-(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
-(byte~) keyboard_key_pressed::$2 4.0
-(byte) keyboard_key_pressed::colidx
-(byte) keyboard_key_pressed::colidx#0 0.6666666666666666
-(byte) keyboard_key_pressed::key
-(byte) keyboard_key_pressed::key#4 2.0
-(byte) keyboard_key_pressed::return
-(byte) keyboard_key_pressed::return#0 1.6666666666666665
-(byte) keyboard_key_pressed::return#10 4.0
-(byte) keyboard_key_pressed::return#2 4.0
-(byte) keyboard_key_pressed::return#3 4.0
-(byte) keyboard_key_pressed::return#4 4.0
-(byte) keyboard_key_pressed::rowidx
-(byte) keyboard_key_pressed::rowidx#0 4.0
-(byte[]) keyboard_matrix_col_bitmask
+(byte()) keyboard_event_get()
+(byte) keyboard_event_get::return
+(byte) keyboard_event_get::return#0 4.0
+(byte) keyboard_event_get::return#2 1.3333333333333333
+(byte) keyboard_event_get::return#3 4.0
+(byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
+(byte~) keyboard_event_pressed::$0 4.0
+(byte~) keyboard_event_pressed::$1 4.0
+(byte) keyboard_event_pressed::keycode
+(byte) keyboard_event_pressed::keycode#4 1.3333333333333333
+(byte) keyboard_event_pressed::return
+(byte) keyboard_event_pressed::return#0 4.0
+(byte) keyboard_event_pressed::return#1 4.0
+(byte) keyboard_event_pressed::return#10 1.6666666666666665
+(byte) keyboard_event_pressed::return#2 4.0
+(byte) keyboard_event_pressed::return#3 4.0
+(byte) keyboard_event_pressed::row_bits
+(byte) keyboard_event_pressed::row_bits#0 2.0
+(void()) keyboard_event_scan()
+(byte/word/dword~) keyboard_event_scan::$12 20002.0
+(byte~) keyboard_event_scan::$16 4.0
+(byte~) keyboard_event_scan::$20 4.0
+(byte~) keyboard_event_scan::$24 4.0
+(byte~) keyboard_event_scan::$28 4.0
+(byte~) keyboard_event_scan::$3 20002.0
+(byte~) keyboard_event_scan::$4 20002.0
+(byte) keyboard_event_scan::col
+(byte) keyboard_event_scan::col#1 15001.5
+(byte) keyboard_event_scan::col#2 2857.4285714285716
+(byte) keyboard_event_scan::event_type
+(byte) keyboard_event_scan::event_type#0 20002.0
+(byte) keyboard_event_scan::keycode
+(byte) keyboard_event_scan::keycode#1 2002.0
+(byte) keyboard_event_scan::keycode#10 3154.230769230769
+(byte) keyboard_event_scan::keycode#11 500.5
+(byte) keyboard_event_scan::keycode#14 1001.0
+(byte) keyboard_event_scan::keycode#15 5250.75
+(byte) keyboard_event_scan::row
+(byte) keyboard_event_scan::row#1 1501.5
+(byte) keyboard_event_scan::row#2 600.24
+(byte) keyboard_event_scan::row_scan
+(byte) keyboard_event_scan::row_scan#0 1278.0555555555554
+(byte[8]) keyboard_events
+(byte) keyboard_events_size
+(byte) keyboard_events_size#1 20002.0
+(byte) keyboard_events_size#14 8100.9000000000015
+(byte) keyboard_events_size#17 94.03125
+(byte) keyboard_events_size#2 20002.0
+(byte) keyboard_events_size#20 3.5000000000000004
+(byte) keyboard_events_size#22 0.3939393939393939
+(byte) keyboard_events_size#24 5.523809523809524
+(byte) keyboard_events_size#4 3.0
+(byte) keyboard_events_size#43 429.2857142857143
+(byte) keyboard_events_size#44 10201.2
+(byte[8]) keyboard_matrix_col_bitmask
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte) keyboard_matrix_read::return
-(byte) keyboard_matrix_read::return#0 1.3333333333333333
-(byte) keyboard_matrix_read::return#2 4.0
+(byte) keyboard_matrix_read::return#0 334.33333333333337
+(byte) keyboard_matrix_read::return#2 2002.0
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
-(byte) keyboard_matrix_read::rowid#0 4.0
+(byte) keyboard_matrix_read::rowid#0 1003.0
(byte[8]) keyboard_matrix_row_bitmask
+(byte) keyboard_modifiers
+(byte) keyboard_modifiers#10 28.5
+(byte) keyboard_modifiers#15 0.8
+(byte) keyboard_modifiers#16 1.6
+(byte) keyboard_modifiers#17 1.6
+(byte) keyboard_modifiers#18 3.40625
+(byte) keyboard_modifiers#20 0.3939393939393939
+(byte) keyboard_modifiers#3 4.0
+(byte) keyboard_modifiers#4 4.0
+(byte) keyboard_modifiers#5 4.0
+(byte[8]) keyboard_scan_values
(void()) main()
(void()) menu()
(byte*) menu::CHARSET
@@ -6611,8 +7868,8 @@ VARIABLE REGISTER WEIGHTS
(byte*) print_char_cursor#20 821.0
(byte*) print_char_cursor#22 102.0
(byte*) print_char_cursor#38 572.0
-(byte*~) print_char_cursor#63 4.0
-(byte*~) print_char_cursor#64 202.0
+(byte*~) print_char_cursor#64 4.0
+(byte*~) print_char_cursor#65 202.0
(void()) print_cls()
(byte*~) print_cls::$0 202.0
(byte*) print_cls::sc
@@ -6640,38 +7897,51 @@ VARIABLE REGISTER WEIGHTS
Initial phi equivalence classes
[ form_cursor_count#1 form_cursor_count#13 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ]
-[ key_down_debounce#1 key_down_debounce#11 key_down_debounce#13 key_down_debounce#20 key_down_debounce#23 ]
-[ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#32 form_field_idx#41 form_field_idx#42 ]
-[ key_right_debounce#1 key_right_debounce#11 key_right_debounce#13 key_right_debounce#21 ]
+[ keyboard_modifiers#20 keyboard_modifiers#10 keyboard_modifiers#18 keyboard_modifiers#17 keyboard_modifiers#4 keyboard_modifiers#16 keyboard_modifiers#3 keyboard_modifiers#15 keyboard_modifiers#5 ]
+[ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#30 form_field_idx#40 form_field_idx#41 ]
[ menu::i#2 menu::i#1 ]
-[ keyboard_key_pressed::key#4 ]
+[ keyboard_event_get::return#2 keyboard_event_get::return#0 ]
+[ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
+[ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
+[ 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_events_size#14 keyboard_events_size#43 keyboard_events_size#22 keyboard_events_size#24 keyboard_events_size#20 keyboard_events_size#4 keyboard_events_size#17 keyboard_events_size#44 keyboard_events_size#2 keyboard_events_size#1 ]
+[ keyboard_event_pressed::keycode#4 ]
[ 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 ]
[ form_set_screen::line#2 form_set_screen::line#1 ]
[ form_set_screen::y#2 form_set_screen::y#1 ]
[ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ]
-[ print_char_cursor#20 print_char_cursor#22 print_char_cursor#63 print_char_cursor#64 print_char_cursor#38 print_char_cursor#1 ]
+[ print_char_cursor#20 print_char_cursor#22 print_char_cursor#64 print_char_cursor#65 print_char_cursor#38 print_char_cursor#1 ]
[ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ]
[ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ]
Added variable form_field_ptr::return#3 to zero page equivalence class [ form_field_ptr::return#3 ]
Added variable form_control::field#0 to zero page equivalence class [ form_control::field#0 ]
Added variable form_control::$6 to zero page equivalence class [ form_control::$6 ]
-Added variable keyboard_key_pressed::return#2 to zero page equivalence class [ keyboard_key_pressed::return#2 ]
-Added variable form_control::key_down#0 to zero page equivalence class [ form_control::key_down#0 ]
+Added variable keyboard_event_get::return#3 to zero page equivalence class [ keyboard_event_get::return#3 ]
+Added variable form_control::key_event#0 to zero page equivalence class [ form_control::key_event#0 ]
+Added variable form_control::$12 to zero page equivalence class [ form_control::$12 ]
Added variable form_control::$13 to zero page equivalence class [ form_control::$13 ]
-Added variable keyboard_key_pressed::return#4 to zero page equivalence class [ keyboard_key_pressed::return#4 ]
-Added variable form_control::$14 to zero page equivalence class [ form_control::$14 ]
-Added variable keyboard_key_pressed::return#3 to zero page equivalence class [ keyboard_key_pressed::return#3 ]
-Added variable form_control::key_right#0 to zero page equivalence class [ form_control::key_right#0 ]
-Added variable keyboard_key_pressed::return#10 to zero page equivalence class [ keyboard_key_pressed::return#10 ]
-Added variable form_control::$28 to zero page equivalence class [ form_control::$28 ]
+Added variable form_control::$24 to zero page equivalence class [ form_control::$24 ]
Added variable form_control::$7 to zero page equivalence class [ form_control::$7 ]
-Added variable keyboard_key_pressed::colidx#0 to zero page equivalence class [ keyboard_key_pressed::colidx#0 ]
-Added variable keyboard_key_pressed::rowidx#0 to zero page equivalence class [ keyboard_key_pressed::rowidx#0 ]
Added variable keyboard_matrix_read::rowid#0 to zero page equivalence class [ keyboard_matrix_read::rowid#0 ]
Added variable keyboard_matrix_read::return#2 to zero page equivalence class [ keyboard_matrix_read::return#2 ]
-Added variable keyboard_key_pressed::$2 to zero page equivalence class [ keyboard_key_pressed::$2 ]
-Added variable keyboard_key_pressed::return#0 to zero page equivalence class [ keyboard_key_pressed::return#0 ]
+Added variable keyboard_event_scan::row_scan#0 to zero page equivalence class [ keyboard_event_scan::row_scan#0 ]
+Added variable keyboard_event_scan::$3 to zero page equivalence class [ keyboard_event_scan::$3 ]
+Added variable keyboard_event_scan::$4 to zero page equivalence class [ keyboard_event_scan::$4 ]
+Added variable keyboard_event_scan::event_type#0 to zero page equivalence class [ keyboard_event_scan::event_type#0 ]
+Added variable keyboard_event_scan::$12 to zero page equivalence class [ keyboard_event_scan::$12 ]
+Added variable keyboard_event_pressed::return#0 to zero page equivalence class [ keyboard_event_pressed::return#0 ]
+Added variable keyboard_event_scan::$16 to zero page equivalence class [ keyboard_event_scan::$16 ]
+Added variable keyboard_event_pressed::return#1 to zero page equivalence class [ keyboard_event_pressed::return#1 ]
+Added variable keyboard_event_scan::$20 to zero page equivalence class [ keyboard_event_scan::$20 ]
+Added variable keyboard_event_pressed::return#2 to zero page equivalence class [ keyboard_event_pressed::return#2 ]
+Added variable keyboard_event_scan::$24 to zero page equivalence class [ keyboard_event_scan::$24 ]
+Added variable keyboard_event_pressed::return#3 to zero page equivalence class [ keyboard_event_pressed::return#3 ]
+Added variable keyboard_event_scan::$28 to zero page equivalence class [ keyboard_event_scan::$28 ]
+Added variable keyboard_event_pressed::$0 to zero page equivalence class [ keyboard_event_pressed::$0 ]
+Added variable keyboard_event_pressed::row_bits#0 to zero page equivalence class [ keyboard_event_pressed::row_bits#0 ]
+Added variable keyboard_event_pressed::$1 to zero page equivalence class [ keyboard_event_pressed::$1 ]
+Added variable keyboard_event_pressed::return#10 to zero page equivalence class [ keyboard_event_pressed::return#10 ]
Added variable keyboard_matrix_read::return#0 to zero page equivalence class [ keyboard_matrix_read::return#0 ]
Added variable form_field_ptr::y#0 to zero page equivalence class [ form_field_ptr::y#0 ]
Added variable form_field_ptr::$2 to zero page equivalence class [ form_field_ptr::$2 ]
@@ -6685,38 +7955,51 @@ Added variable print_str_lines::ch#0 to zero page equivalence class [ print_str_
Added variable print_cls::$0 to zero page equivalence class [ print_cls::$0 ]
Complete equivalence classes
[ form_cursor_count#1 form_cursor_count#13 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ]
-[ key_down_debounce#1 key_down_debounce#11 key_down_debounce#13 key_down_debounce#20 key_down_debounce#23 ]
-[ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#32 form_field_idx#41 form_field_idx#42 ]
-[ key_right_debounce#1 key_right_debounce#11 key_right_debounce#13 key_right_debounce#21 ]
+[ keyboard_modifiers#20 keyboard_modifiers#10 keyboard_modifiers#18 keyboard_modifiers#17 keyboard_modifiers#4 keyboard_modifiers#16 keyboard_modifiers#3 keyboard_modifiers#15 keyboard_modifiers#5 ]
+[ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#30 form_field_idx#40 form_field_idx#41 ]
[ menu::i#2 menu::i#1 ]
-[ keyboard_key_pressed::key#4 ]
+[ keyboard_event_get::return#2 keyboard_event_get::return#0 ]
+[ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
+[ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
+[ 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_events_size#14 keyboard_events_size#43 keyboard_events_size#22 keyboard_events_size#24 keyboard_events_size#20 keyboard_events_size#4 keyboard_events_size#17 keyboard_events_size#44 keyboard_events_size#2 keyboard_events_size#1 ]
+[ keyboard_event_pressed::keycode#4 ]
[ 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 ]
[ form_set_screen::line#2 form_set_screen::line#1 ]
[ form_set_screen::y#2 form_set_screen::y#1 ]
[ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ]
-[ print_char_cursor#20 print_char_cursor#22 print_char_cursor#63 print_char_cursor#64 print_char_cursor#38 print_char_cursor#1 ]
+[ print_char_cursor#20 print_char_cursor#22 print_char_cursor#64 print_char_cursor#65 print_char_cursor#38 print_char_cursor#1 ]
[ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ]
[ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ]
[ form_field_ptr::return#3 ]
[ form_control::field#0 ]
[ form_control::$6 ]
-[ keyboard_key_pressed::return#2 ]
-[ form_control::key_down#0 ]
+[ keyboard_event_get::return#3 ]
+[ form_control::key_event#0 ]
+[ form_control::$12 ]
[ form_control::$13 ]
-[ keyboard_key_pressed::return#4 ]
-[ form_control::$14 ]
-[ keyboard_key_pressed::return#3 ]
-[ form_control::key_right#0 ]
-[ keyboard_key_pressed::return#10 ]
-[ form_control::$28 ]
+[ form_control::$24 ]
[ form_control::$7 ]
-[ keyboard_key_pressed::colidx#0 ]
-[ keyboard_key_pressed::rowidx#0 ]
[ keyboard_matrix_read::rowid#0 ]
[ keyboard_matrix_read::return#2 ]
-[ keyboard_key_pressed::$2 ]
-[ keyboard_key_pressed::return#0 ]
+[ keyboard_event_scan::row_scan#0 ]
+[ keyboard_event_scan::$3 ]
+[ keyboard_event_scan::$4 ]
+[ keyboard_event_scan::event_type#0 ]
+[ keyboard_event_scan::$12 ]
+[ keyboard_event_pressed::return#0 ]
+[ keyboard_event_scan::$16 ]
+[ keyboard_event_pressed::return#1 ]
+[ keyboard_event_scan::$20 ]
+[ keyboard_event_pressed::return#2 ]
+[ keyboard_event_scan::$24 ]
+[ keyboard_event_pressed::return#3 ]
+[ keyboard_event_scan::$28 ]
+[ keyboard_event_pressed::$0 ]
+[ keyboard_event_pressed::row_bits#0 ]
+[ keyboard_event_pressed::$1 ]
+[ keyboard_event_pressed::return#10 ]
[ keyboard_matrix_read::return#0 ]
[ form_field_ptr::y#0 ]
[ form_field_ptr::$2 ]
@@ -6729,49 +8012,62 @@ Complete equivalence classes
[ print_str_lines::ch#0 ]
[ print_cls::$0 ]
Allocated zp ZP_BYTE:2 [ form_cursor_count#1 form_cursor_count#13 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ]
-Allocated zp ZP_BYTE:3 [ key_down_debounce#1 key_down_debounce#11 key_down_debounce#13 key_down_debounce#20 key_down_debounce#23 ]
-Allocated 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 ]
-Allocated zp ZP_BYTE:5 [ key_right_debounce#1 key_right_debounce#11 key_right_debounce#13 key_right_debounce#21 ]
-Allocated zp ZP_BYTE:6 [ menu::i#2 menu::i#1 ]
-Allocated zp ZP_BYTE:7 [ keyboard_key_pressed::key#4 ]
-Allocated zp ZP_BYTE:8 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ]
-Allocated zp ZP_BYTE:9 [ form_render_values::idx#2 form_render_values::idx#1 ]
-Allocated zp ZP_WORD:10 [ form_set_screen::line#2 form_set_screen::line#1 ]
-Allocated zp ZP_BYTE:12 [ form_set_screen::y#2 form_set_screen::y#1 ]
-Allocated zp ZP_WORD:13 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ]
-Allocated zp ZP_WORD:15 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#63 print_char_cursor#64 print_char_cursor#38 print_char_cursor#1 ]
-Allocated zp ZP_WORD:17 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ]
-Allocated zp ZP_WORD:19 [ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ]
-Allocated zp ZP_WORD:21 [ form_field_ptr::return#3 ]
-Allocated zp ZP_WORD:23 [ form_control::field#0 ]
-Allocated zp ZP_BYTE:25 [ form_control::$6 ]
-Allocated zp ZP_BYTE:26 [ keyboard_key_pressed::return#2 ]
-Allocated zp ZP_BYTE:27 [ form_control::key_down#0 ]
-Allocated zp ZP_BYTE:28 [ form_control::$13 ]
-Allocated zp ZP_BYTE:29 [ keyboard_key_pressed::return#4 ]
-Allocated zp ZP_BYTE:30 [ form_control::$14 ]
-Allocated zp ZP_BYTE:31 [ keyboard_key_pressed::return#3 ]
-Allocated zp ZP_BYTE:32 [ form_control::key_right#0 ]
-Allocated zp ZP_BYTE:33 [ keyboard_key_pressed::return#10 ]
-Allocated zp ZP_BYTE:34 [ form_control::$28 ]
+Allocated zp ZP_BYTE:3 [ keyboard_modifiers#20 keyboard_modifiers#10 keyboard_modifiers#18 keyboard_modifiers#17 keyboard_modifiers#4 keyboard_modifiers#16 keyboard_modifiers#3 keyboard_modifiers#15 keyboard_modifiers#5 ]
+Allocated zp ZP_BYTE:4 [ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#30 form_field_idx#40 form_field_idx#41 ]
+Allocated zp ZP_BYTE:5 [ menu::i#2 menu::i#1 ]
+Allocated zp ZP_BYTE:6 [ keyboard_event_get::return#2 keyboard_event_get::return#0 ]
+Allocated zp ZP_BYTE:7 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
+Allocated zp ZP_BYTE:8 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
+Allocated zp ZP_BYTE:9 [ 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 ]
+Allocated zp ZP_BYTE:10 [ keyboard_events_size#14 keyboard_events_size#43 keyboard_events_size#22 keyboard_events_size#24 keyboard_events_size#20 keyboard_events_size#4 keyboard_events_size#17 keyboard_events_size#44 keyboard_events_size#2 keyboard_events_size#1 ]
+Allocated zp ZP_BYTE:11 [ keyboard_event_pressed::keycode#4 ]
+Allocated zp ZP_BYTE:12 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ]
+Allocated zp ZP_BYTE:13 [ form_render_values::idx#2 form_render_values::idx#1 ]
+Allocated zp ZP_WORD:14 [ form_set_screen::line#2 form_set_screen::line#1 ]
+Allocated zp ZP_BYTE:16 [ form_set_screen::y#2 form_set_screen::y#1 ]
+Allocated zp ZP_WORD:17 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ]
+Allocated zp ZP_WORD:19 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#64 print_char_cursor#65 print_char_cursor#38 print_char_cursor#1 ]
+Allocated zp ZP_WORD:21 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ]
+Allocated zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ]
+Allocated zp ZP_WORD:25 [ form_field_ptr::return#3 ]
+Allocated zp ZP_WORD:27 [ form_control::field#0 ]
+Allocated zp ZP_BYTE:29 [ form_control::$6 ]
+Allocated zp ZP_BYTE:30 [ keyboard_event_get::return#3 ]
+Allocated zp ZP_BYTE:31 [ form_control::key_event#0 ]
+Allocated zp ZP_BYTE:32 [ form_control::$12 ]
+Allocated zp ZP_BYTE:33 [ form_control::$13 ]
+Allocated zp ZP_BYTE:34 [ form_control::$24 ]
Allocated zp ZP_BYTE:35 [ form_control::$7 ]
-Allocated zp ZP_BYTE:36 [ keyboard_key_pressed::colidx#0 ]
-Allocated zp ZP_BYTE:37 [ keyboard_key_pressed::rowidx#0 ]
-Allocated zp ZP_BYTE:38 [ keyboard_matrix_read::rowid#0 ]
-Allocated zp ZP_BYTE:39 [ keyboard_matrix_read::return#2 ]
-Allocated zp ZP_BYTE:40 [ keyboard_key_pressed::$2 ]
-Allocated zp ZP_BYTE:41 [ keyboard_key_pressed::return#0 ]
-Allocated zp ZP_BYTE:42 [ keyboard_matrix_read::return#0 ]
-Allocated zp ZP_BYTE:43 [ form_field_ptr::y#0 ]
-Allocated zp ZP_WORD:44 [ form_field_ptr::$2 ]
-Allocated zp ZP_BYTE:46 [ form_field_ptr::x#0 ]
-Allocated zp ZP_WORD:47 [ form_field_ptr::return#0 ]
-Allocated zp ZP_WORD:49 [ form_field_ptr::return#2 ]
-Allocated zp ZP_WORD:51 [ form_render_values::field#0 ]
-Allocated zp ZP_BYTE:53 [ form_set_screen::$0 ]
-Allocated zp ZP_BYTE:54 [ form_set_screen::$1 ]
-Allocated zp ZP_BYTE:55 [ print_str_lines::ch#0 ]
-Allocated zp ZP_WORD:56 [ print_cls::$0 ]
+Allocated zp ZP_BYTE:36 [ keyboard_matrix_read::rowid#0 ]
+Allocated zp ZP_BYTE:37 [ keyboard_matrix_read::return#2 ]
+Allocated zp ZP_BYTE:38 [ keyboard_event_scan::row_scan#0 ]
+Allocated zp ZP_BYTE:39 [ keyboard_event_scan::$3 ]
+Allocated zp ZP_BYTE:40 [ keyboard_event_scan::$4 ]
+Allocated zp ZP_BYTE:41 [ keyboard_event_scan::event_type#0 ]
+Allocated zp ZP_BYTE:42 [ keyboard_event_scan::$12 ]
+Allocated zp ZP_BYTE:43 [ keyboard_event_pressed::return#0 ]
+Allocated zp ZP_BYTE:44 [ keyboard_event_scan::$16 ]
+Allocated zp ZP_BYTE:45 [ keyboard_event_pressed::return#1 ]
+Allocated zp ZP_BYTE:46 [ keyboard_event_scan::$20 ]
+Allocated zp ZP_BYTE:47 [ keyboard_event_pressed::return#2 ]
+Allocated zp ZP_BYTE:48 [ keyboard_event_scan::$24 ]
+Allocated zp ZP_BYTE:49 [ keyboard_event_pressed::return#3 ]
+Allocated zp ZP_BYTE:50 [ keyboard_event_scan::$28 ]
+Allocated zp ZP_BYTE:51 [ keyboard_event_pressed::$0 ]
+Allocated zp ZP_BYTE:52 [ keyboard_event_pressed::row_bits#0 ]
+Allocated zp ZP_BYTE:53 [ keyboard_event_pressed::$1 ]
+Allocated zp ZP_BYTE:54 [ keyboard_event_pressed::return#10 ]
+Allocated zp ZP_BYTE:55 [ keyboard_matrix_read::return#0 ]
+Allocated zp ZP_BYTE:56 [ form_field_ptr::y#0 ]
+Allocated zp ZP_WORD:57 [ form_field_ptr::$2 ]
+Allocated zp ZP_BYTE:59 [ form_field_ptr::x#0 ]
+Allocated zp ZP_WORD:60 [ form_field_ptr::return#0 ]
+Allocated zp ZP_WORD:62 [ form_field_ptr::return#2 ]
+Allocated zp ZP_WORD:64 [ form_render_values::field#0 ]
+Allocated zp ZP_BYTE:66 [ form_set_screen::$0 ]
+Allocated zp ZP_BYTE:67 [ form_set_screen::$1 ]
+Allocated zp ZP_BYTE:68 [ print_str_lines::ch#0 ]
+Allocated zp ZP_WORD:69 [ print_cls::$0 ]
INITIAL ASM
//SEG0 Basic Upstart
@@ -6803,26 +8099,34 @@ INITIAL ASM
.label DTV_GRAPHICS_VIC_BANK = $d03d
.const KEY_CRSR_RIGHT = 2
.const KEY_CRSR_DOWN = 7
+ .const KEY_LSHIFT = $f
.const KEY_RSHIFT = $34
+ .const KEY_CTRL = $3a
+ .const KEY_COMMODORE = $3d
+ .const KEY_MODIFIER_LSHIFT = 1
+ .const KEY_MODIFIER_RSHIFT = 2
+ .const KEY_MODIFIER_CTRL = 4
+ .const KEY_MODIFIER_COMMODORE = 8
.const form_fields_cnt = $23
.const FORM_CURSOR_BLINK = $28
- .label print_char_cursor = $f
- .label print_line_cursor = $11
+ .const KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT
+ .label print_char_cursor = $13
+ .label print_line_cursor = $15
+ .label keyboard_events_size = $a
+ .label keyboard_modifiers = 3
.label form_cursor_count = 2
- .label key_down_debounce = 3
.label form_field_idx = 4
- .label key_right_debounce = 5
//SEG2 @begin
bbegin:
-//SEG3 [1] phi from @begin to @25 [phi:@begin->@25]
-b25_from_bbegin:
- jmp b25
-//SEG4 @25
-b25:
+//SEG3 [1] phi from @begin to @28 [phi:@begin->@28]
+b28_from_bbegin:
+ jmp b28
+//SEG4 @28
+b28:
//SEG5 [2] call main param-assignment [ ] ( )
jsr main
-//SEG6 [3] phi from @25 to @end [phi:@25->@end]
-bend_from_b25:
+//SEG6 [3] phi from @28 to @end [phi:@28->@end]
+bend_from_b28:
jmp bend
//SEG7 @end
bend:
@@ -6835,22 +8139,22 @@ main: {
sta DTV_FEATURE
//SEG11 [6] phi from main to main::@1 [phi:main->main::@1]
b1_from_main:
- //SEG12 [6] phi (byte) key_right_debounce#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
- lda #0
- sta key_right_debounce
- //SEG13 [6] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1
+ //SEG12 [6] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
lda #0
sta form_field_idx
- //SEG14 [6] phi (byte) key_down_debounce#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1
+ //SEG13 [6] phi (byte) keyboard_modifiers#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1
lda #0
- sta key_down_debounce
+ sta keyboard_modifiers
+ //SEG14 [6] phi (byte) keyboard_events_size#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1
+ lda #0
+ sta keyboard_events_size
//SEG15 [6] phi (signed byte) form_cursor_count#1 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#3] -- vbsz1=vbuc1
lda #FORM_CURSOR_BLINK/2
sta form_cursor_count
jmp b1
//SEG16 main::@1
b1:
- //SEG17 [7] if(true) goto main::@2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- true_then_la1
+ //SEG17 [7] if(true) goto main::@2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- true_then_la1
jmp b2_from_b1
jmp breturn
//SEG18 main::@return
@@ -6862,13 +8166,13 @@ main: {
jmp b2
//SEG21 main::@2
b2:
- //SEG22 [10] call menu param-assignment [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
+ //SEG22 [10] call menu param-assignment [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
jsr menu
//SEG23 [6] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
b1_from_b2:
- //SEG24 [6] phi (byte) key_right_debounce#1 = (byte) key_right_debounce#11 [phi:main::@2->main::@1#0] -- register_copy
- //SEG25 [6] phi (byte) form_field_idx#1 = (byte) form_field_idx#14 [phi:main::@2->main::@1#1] -- register_copy
- //SEG26 [6] phi (byte) key_down_debounce#1 = (byte) key_down_debounce#11 [phi:main::@2->main::@1#2] -- register_copy
+ //SEG24 [6] phi (byte) form_field_idx#1 = (byte) form_field_idx#14 [phi:main::@2->main::@1#0] -- register_copy
+ //SEG25 [6] phi (byte) keyboard_modifiers#20 = (byte) keyboard_modifiers#10 [phi:main::@2->main::@1#1] -- register_copy
+ //SEG26 [6] phi (byte) keyboard_events_size#22 = (byte) keyboard_events_size#24 [phi:main::@2->main::@1#2] -- register_copy
//SEG27 [6] phi (signed byte) form_cursor_count#1 = (signed byte) form_cursor_count#13 [phi:main::@2->main::@1#3] -- register_copy
jmp b1
}
@@ -6876,32 +8180,32 @@ main: {
menu: {
.label SCREEN = $8000
.label CHARSET = $9800
- .label i = 6
- //SEG29 [11] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ .label i = 5
+ //SEG29 [11] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #($ffffffff&CHARSET)/$10000
sta DTV_GRAPHICS_VIC_BANK
- //SEG30 [12] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG30 [12] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #DTV_COLOR_BANK_DEFAULT/$400
sta DTV_COLOR_BANK_LO
- //SEG31 [13] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG31 [13] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #0
sta DTV_COLOR_BANK_HI
- //SEG32 [14] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG32 [14] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #0
sta DTV_CONTROL
- //SEG33 [15] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG33 [15] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #3
sta CIA2_PORT_A_DDR
- //SEG34 [16] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG34 [16] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #3^CHARSET/$4000
sta CIA2_PORT_A
- //SEG35 [17] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG35 [17] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #VIC_DEN|VIC_RSEL|3
sta VIC_CONTROL
- //SEG36 [18] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG36 [18] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #VIC_CSEL
sta VIC_CONTROL2
- //SEG37 [19] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG37 [19] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400
sta VIC_MEMORY
//SEG38 [20] phi from menu to menu::@1 [phi:menu->menu::@1]
@@ -6916,29 +8220,29 @@ menu: {
jmp b1
//SEG42 menu::@1
b1:
- //SEG43 [21] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
+ //SEG43 [21] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
ldy i
lda DTV_PALETTE_DEFAULT,y
sta DTV_PALETTE,y
- //SEG44 [22] (byte) menu::i#1 ← ++ (byte) menu::i#2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ) -- vbuz1=_inc_vbuz1
+ //SEG44 [22] (byte) menu::i#1 ← ++ (byte) menu::i#2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ) -- vbuz1=_inc_vbuz1
inc i
- //SEG45 [23] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1
+ //SEG45 [23] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ) -- vbuz1_neq_vbuc1_then_la1
lda i
cmp #$10
bne b1_from_b1
jmp b8
//SEG46 menu::@8
b8:
- //SEG47 [24] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG47 [24] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #0
sta BGCOL
- //SEG48 [25] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG48 [25] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #0
sta BORDERCOL
- //SEG49 [26] call print_set_screen param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
- //SEG50 [167] phi from menu::@8 to print_set_screen [phi:menu::@8->print_set_screen]
+ //SEG49 [26] call print_set_screen param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
+ //SEG50 [212] phi from menu::@8 to print_set_screen [phi:menu::@8->print_set_screen]
print_set_screen_from_b8:
- //SEG51 [167] phi (byte*) print_set_screen::screen#2 = (const byte*) COLS#0 [phi:menu::@8->print_set_screen#0] -- pbuz1=pbuc1
+ //SEG51 [212] phi (byte*) print_set_screen::screen#2 = (const byte*) COLS#0 [phi:menu::@8->print_set_screen#0] -- pbuz1=pbuc1
lda #COLS
@@ -6949,17 +8253,17 @@ menu: {
jmp b15
//SEG53 menu::@15
b15:
- //SEG54 [28] call print_cls param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ //SEG54 [28] call print_cls param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
jsr print_cls
//SEG55 [29] phi from menu::@15 to menu::@16 [phi:menu::@15->menu::@16]
b16_from_b15:
jmp b16
//SEG56 menu::@16
b16:
- //SEG57 [30] call print_str_lines param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- //SEG58 [139] phi from menu::@16 to print_str_lines [phi:menu::@16->print_str_lines]
+ //SEG57 [30] call print_str_lines param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ //SEG58 [184] phi from menu::@16 to print_str_lines [phi:menu::@16->print_str_lines]
print_str_lines_from_b16:
- //SEG59 [139] phi (byte*) print_str_lines::str#5 = (const string) MENU_COLS#0 [phi:menu::@16->print_str_lines#0] -- pbuz1=pbuc1
+ //SEG59 [184] phi (byte*) print_str_lines::str#5 = (const string) MENU_COLS#0 [phi:menu::@16->print_str_lines#0] -- pbuz1=pbuc1
lda #MENU_COLS
@@ -6970,10 +8274,10 @@ menu: {
jmp b17
//SEG61 menu::@17
b17:
- //SEG62 [32] call print_set_screen param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
- //SEG63 [167] phi from menu::@17 to print_set_screen [phi:menu::@17->print_set_screen]
+ //SEG62 [32] call print_set_screen param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
+ //SEG63 [212] phi from menu::@17 to print_set_screen [phi:menu::@17->print_set_screen]
print_set_screen_from_b17:
- //SEG64 [167] phi (byte*) print_set_screen::screen#2 = (const byte*) menu::SCREEN#0 [phi:menu::@17->print_set_screen#0] -- pbuz1=pbuc1
+ //SEG64 [212] phi (byte*) print_set_screen::screen#2 = (const byte*) menu::SCREEN#0 [phi:menu::@17->print_set_screen#0] -- pbuz1=pbuc1
lda #SCREEN
@@ -6984,17 +8288,17 @@ menu: {
jmp b18
//SEG66 menu::@18
b18:
- //SEG67 [34] call print_cls param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ //SEG67 [34] call print_cls param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
jsr print_cls
//SEG68 [35] phi from menu::@18 to menu::@19 [phi:menu::@18->menu::@19]
b19_from_b18:
jmp b19
//SEG69 menu::@19
b19:
- //SEG70 [36] call print_str_lines param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- //SEG71 [139] phi from menu::@19 to print_str_lines [phi:menu::@19->print_str_lines]
+ //SEG70 [36] call print_str_lines param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ //SEG71 [184] phi from menu::@19 to print_str_lines [phi:menu::@19->print_str_lines]
print_str_lines_from_b19:
- //SEG72 [139] phi (byte*) print_str_lines::str#5 = (const string) MENU_TEXT#0 [phi:menu::@19->print_str_lines#0] -- pbuz1=pbuc1
+ //SEG72 [184] phi (byte*) print_str_lines::str#5 = (const string) MENU_TEXT#0 [phi:menu::@19->print_str_lines#0] -- pbuz1=pbuc1
lda #MENU_TEXT
@@ -7005,8 +8309,8 @@ menu: {
jmp b20
//SEG74 menu::@20
b20:
- //SEG75 [38] call form_set_screen param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- //SEG76 [129] phi from menu::@20 to form_set_screen [phi:menu::@20->form_set_screen]
+ //SEG75 [38] call form_set_screen param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ //SEG76 [174] phi from menu::@20 to form_set_screen [phi:menu::@20->form_set_screen]
form_set_screen_from_b20:
jsr form_set_screen
//SEG77 [39] phi from menu::@20 to menu::@21 [phi:menu::@20->menu::@21]
@@ -7014,30 +8318,30 @@ menu: {
jmp b21
//SEG78 menu::@21
b21:
- //SEG79 [40] call form_render_values param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- //SEG80 [119] phi from menu::@21 to form_render_values [phi:menu::@21->form_render_values]
+ //SEG79 [40] call form_render_values param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ //SEG80 [164] phi from menu::@21 to form_render_values [phi:menu::@21->form_render_values]
form_render_values_from_b21:
jsr form_render_values
//SEG81 [41] phi from menu::@21 menu::@7 to menu::@2 [phi:menu::@21/menu::@7->menu::@2]
b2_from_b21:
b2_from_b7:
- //SEG82 [41] phi (byte) key_right_debounce#11 = (byte) key_right_debounce#1 [phi:menu::@21/menu::@7->menu::@2#0] -- register_copy
- //SEG83 [41] phi (byte) form_field_idx#14 = (byte) form_field_idx#1 [phi:menu::@21/menu::@7->menu::@2#1] -- register_copy
- //SEG84 [41] phi (byte) key_down_debounce#11 = (byte) key_down_debounce#1 [phi:menu::@21/menu::@7->menu::@2#2] -- register_copy
+ //SEG82 [41] phi (byte) form_field_idx#14 = (byte) form_field_idx#1 [phi:menu::@21/menu::@7->menu::@2#0] -- register_copy
+ //SEG83 [41] phi (byte) keyboard_modifiers#10 = (byte) keyboard_modifiers#20 [phi:menu::@21/menu::@7->menu::@2#1] -- register_copy
+ //SEG84 [41] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#22 [phi:menu::@21/menu::@7->menu::@2#2] -- register_copy
//SEG85 [41] phi (signed byte) form_cursor_count#13 = (signed byte) form_cursor_count#1 [phi:menu::@21/menu::@7->menu::@2#3] -- register_copy
jmp b2
//SEG86 menu::@2
b2:
- //SEG87 [42] if(true) goto menu::@5 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ) -- true_then_la1
+ //SEG87 [42] if(true) goto menu::@5 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ) -- true_then_la1
jmp b5
jmp breturn
//SEG88 menu::@return
breturn:
- //SEG89 [43] return [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
+ //SEG89 [43] return [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
rts
//SEG90 menu::@5
b5:
- //SEG91 [44] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto menu::@5 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
+ //SEG91 [44] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto menu::@5 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
lda RASTER
cmp #$ff
bne b5
@@ -7046,56 +8350,55 @@ menu: {
jmp b7
//SEG93 menu::@7
b7:
- //SEG94 [46] call form_control param-assignment [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
+ //SEG94 [46] call form_control param-assignment [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] ( main:2::menu:10 [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] )
jsr form_control
jmp b2_from_b7
}
//SEG95 form_control
form_control: {
- .label _6 = $19
+ .label _6 = $1d
.label _7 = $23
- .label _13 = $1c
- .label _14 = $1e
- .label _28 = $22
- .label field = $17
- .label key_down = $1b
- .label key_right = $20
- //SEG96 [47] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#1 ] ) -- vbuz1=vbuz2
+ .label _12 = $20
+ .label _13 = $21
+ .label _24 = $22
+ .label field = $1b
+ .label key_event = $1f
+ //SEG96 [47] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#14 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#1 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#1 ] ) -- vbuz1=vbuz2
lda form_field_idx
sta form_field_ptr.field_idx
- //SEG97 [48] 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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#0 ] )
- //SEG98 [113] phi from form_control to form_field_ptr [phi:form_control->form_field_ptr]
+ //SEG97 [48] call form_field_ptr param-assignment [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] )
+ //SEG98 [158] phi from form_control to form_field_ptr [phi:form_control->form_field_ptr]
form_field_ptr_from_form_control:
- //SEG99 [113] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#1 [phi:form_control->form_field_ptr#0] -- register_copy
+ //SEG99 [158] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#1 [phi:form_control->form_field_ptr#0] -- register_copy
jsr form_field_ptr
- //SEG100 [49] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#3 ] ) -- pbuz1=pbuz2
+ //SEG100 [49] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#3 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#3 ] ) -- pbuz1=pbuz2
lda form_field_ptr.return
sta form_field_ptr.return_3
lda form_field_ptr.return+1
sta form_field_ptr.return_3+1
- jmp b32
- //SEG101 form_control::@32
- b32:
- //SEG102 [50] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 ] ) -- pbuz1=pbuz2
+ jmp b28
+ //SEG101 form_control::@28
+ b28:
+ //SEG102 [50] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_control::field#0 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_control::field#0 ] ) -- pbuz1=pbuz2
lda form_field_ptr.return_3
sta field
lda form_field_ptr.return_3+1
sta field+1
- //SEG103 [51] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] ) -- vbsz1=_dec_vbsz1
+ //SEG103 [51] (signed byte) form_cursor_count#5 ← -- (signed byte) form_cursor_count#13 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ) -- vbsz1=_dec_vbsz1
dec form_cursor_count
- //SEG104 [52] 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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] ) -- vbsz1_ge_0_then_la1
+ //SEG104 [52] if((signed byte) form_cursor_count#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@31 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ) -- vbsz1_ge_0_then_la1
lda form_cursor_count
cmp #0
- bpl b37_from_b32
- //SEG105 [53] phi from form_control::@32 to form_control::@1 [phi:form_control::@32->form_control::@1]
- b1_from_b32:
- //SEG106 [53] phi (signed byte) form_cursor_count#15 = (const signed byte) FORM_CURSOR_BLINK#0 [phi:form_control::@32->form_control::@1#0] -- vbsz1=vbsc1
+ bpl b31_from_b28
+ //SEG105 [53] phi from form_control::@28 to form_control::@1 [phi:form_control::@28->form_control::@1]
+ b1_from_b28:
+ //SEG106 [53] phi (signed byte) form_cursor_count#15 = (const signed byte) FORM_CURSOR_BLINK#0 [phi:form_control::@28->form_control::@1#0] -- vbsz1=vbsc1
lda #FORM_CURSOR_BLINK
sta form_cursor_count
jmp b1
//SEG107 form_control::@1
b1:
- //SEG108 [54] 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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ) -- vbsz1_ge_vbuc1_then_la1
+ //SEG108 [54] 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 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ) -- vbsz1_ge_vbuc1_then_la1
lda form_cursor_count
sec
sbc #FORM_CURSOR_BLINK/2
@@ -7103,376 +8406,643 @@ form_control: {
eor #$80
!:
bpl b2
- jmp b17
- //SEG109 form_control::@17
- b17:
- //SEG110 [55] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$6 ] ) -- vbuz1=_deref_pbuz2_bor_vbuc1
+ jmp b15
+ //SEG109 form_control::@15
+ b15:
+ //SEG110 [55] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$6 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$6 ] ) -- vbuz1=_deref_pbuz2_bor_vbuc1
lda #$80
ldy #0
ora (field),y
sta _6
- //SEG111 [56] *((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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ) -- _deref_pbuz1=vbuz2
+ //SEG111 [56] *((byte*) form_control::field#0) ← (byte/word/dword~) form_control::$6 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ) -- _deref_pbuz1=vbuz2
lda _6
ldy #0
sta (field),y
- //SEG112 [57] phi from form_control::@17 form_control::@2 to form_control::@3 [phi:form_control::@17/form_control::@2->form_control::@3]
- b3_from_b17:
+ //SEG112 [57] phi from form_control::@15 form_control::@2 to form_control::@3 [phi:form_control::@15/form_control::@2->form_control::@3]
+ b3_from_b15:
b3_from_b2:
jmp b3
//SEG113 form_control::@3
b3:
- //SEG114 [58] 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:46 [ 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 ] )
- //SEG115 [101] phi from form_control::@3 to keyboard_key_pressed [phi:form_control::@3->keyboard_key_pressed]
- keyboard_key_pressed_from_b3:
- //SEG116 [101] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_CRSR_DOWN#0 [phi:form_control::@3->keyboard_key_pressed#0] -- vbuz1=vbuc1
- lda #KEY_CRSR_DOWN
- sta keyboard_key_pressed.key
- jsr keyboard_key_pressed
- //SEG117 [59] (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:46 [ 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 ] ) -- vbuz1=vbuz2
- lda keyboard_key_pressed.return
- sta keyboard_key_pressed.return_2
- jmp b33
- //SEG118 form_control::@33
- b33:
- //SEG119 [60] (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:46 [ 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 ] ) -- vbuz1=vbuz2
- lda keyboard_key_pressed.return_2
- sta key_down
- //SEG120 [61] 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:46 [ 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 ] ) -- vbuz1_eq_vbuz2_then_la1
- lda key_down
- cmp key_down_debounce
- beq b4_from_b33
- jmp b19
- //SEG121 form_control::@19
- b19:
- //SEG122 [62] (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:46 [ 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 ] ) -- vbuz1=vbuz2
- lda key_down
- sta key_down_debounce
- //SEG123 [63] 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:46 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#23 ] ) -- vbuz1_eq_0_then_la1
- lda key_down
- beq b4_from_b19
- jmp b20
- //SEG124 form_control::@20
- b20:
- //SEG125 [64] (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:46 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 key_down_debounce#23 form_control::$13 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1
+ //SEG114 [58] call keyboard_event_scan param-assignment [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] )
+ //SEG115 [95] phi from form_control::@3 to keyboard_event_scan [phi:form_control::@3->keyboard_event_scan]
+ keyboard_event_scan_from_b3:
+ jsr keyboard_event_scan
+ //SEG116 [59] phi from form_control::@3 to form_control::@29 [phi:form_control::@3->form_control::@29]
+ b29_from_b3:
+ jmp b29
+ //SEG117 form_control::@29
+ b29:
+ //SEG118 [60] call keyboard_event_get param-assignment [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#2 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#2 ] )
+ jsr keyboard_event_get
+ //SEG119 [61] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#3 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#3 ] ) -- vbuz1=vbuz2
+ lda keyboard_event_get.return
+ sta keyboard_event_get.return_3
+ jmp b30
+ //SEG120 form_control::@30
+ b30:
+ //SEG121 [62] (byte) form_control::key_event#0 ← (byte) keyboard_event_get::return#3 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] ) -- vbuz1=vbuz2
+ lda keyboard_event_get.return_3
+ sta key_event
+ //SEG122 [63] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_DOWN#0) goto form_control::@4 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] ) -- vbuz1_neq_vbuc1_then_la1
+ lda key_event
+ cmp #KEY_CRSR_DOWN
+ bne b4
+ jmp b17
+ //SEG123 form_control::@17
+ b17:
+ //SEG124 [64] (byte~) form_control::$12 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_control::$12 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_control::$12 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1
lda #$7f
ldy #0
and (field),y
- sta _13
- //SEG126 [65] *((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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] ) -- _deref_pbuz1=vbuz2
- lda _13
+ sta _12
+ //SEG125 [65] *((byte*) form_control::field#0) ← (byte~) form_control::$12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ) -- _deref_pbuz1=vbuz2
+ lda _12
ldy #0
sta (field),y
- //SEG127 [66] 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:46 [ form_field_idx#14 key_right_debounce#11 keyboard_key_pressed::return#0 key_down_debounce#23 ] )
- //SEG128 [101] phi from form_control::@20 to keyboard_key_pressed [phi:form_control::@20->keyboard_key_pressed]
- keyboard_key_pressed_from_b20:
- //SEG129 [101] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_RSHIFT#0 [phi:form_control::@20->keyboard_key_pressed#0] -- vbuz1=vbuc1
- lda #KEY_RSHIFT
- sta keyboard_key_pressed.key
- jsr keyboard_key_pressed
- //SEG130 [67] (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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#4 ] ) -- vbuz1=vbuz2
- lda keyboard_key_pressed.return
- sta keyboard_key_pressed.return_4
- jmp b35
- //SEG131 form_control::@35
- b35:
- //SEG132 [68] (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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 form_control::$14 ] ) -- vbuz1=vbuz2
- lda keyboard_key_pressed.return_4
- sta _14
- //SEG133 [69] 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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] ) -- vbuz1_neq_0_then_la1
- lda _14
- bne b6
- jmp b21
- //SEG134 form_control::@21
- b21:
- //SEG135 [70] (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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] ) -- vbuz1=_inc_vbuz1
+ //SEG126 [66] (byte~) form_control::$13 ← (byte) keyboard_modifiers#18 & (const byte) KEY_MODIFIER_SHIFT#0 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::$13 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::$13 ] ) -- vbuz1=vbuz2_band_vbuc1
+ lda #KEY_MODIFIER_SHIFT
+ and keyboard_modifiers
+ sta _13
+ //SEG127 [67] if((byte~) form_control::$13!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@5 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ) -- vbuz1_neq_0_then_la1
+ lda _13
+ bne b5
+ jmp b18
+ //SEG128 form_control::@18
+ b18:
+ //SEG129 [68] (byte) form_field_idx#40 ← ++ (byte) form_field_idx#14 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ) -- vbuz1=_inc_vbuz1
inc form_field_idx
- //SEG136 [71] 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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] ) -- vbuz1_neq_vbuc1_then_la1
+ //SEG130 [69] if((byte) form_field_idx#40!=(const byte) form_fields_cnt#0) goto form_control::@32 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ) -- vbuz1_neq_vbuc1_then_la1
lda form_field_idx
cmp #form_fields_cnt
- bne b38_from_b21
- //SEG137 [72] phi from form_control::@21 to form_control::@8 [phi:form_control::@21->form_control::@8]
- b8_from_b21:
- //SEG138 [72] phi (byte) form_field_idx#32 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@21->form_control::@8#0] -- vbuz1=vbuc1
+ bne b32_from_b18
+ //SEG131 [70] phi from form_control::@18 to form_control::@7 [phi:form_control::@18->form_control::@7]
+ b7_from_b18:
+ //SEG132 [70] phi (byte) form_field_idx#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@18->form_control::@7#0] -- vbuz1=vbuc1
lda #0
sta form_field_idx
- jmp b8
- //SEG139 form_control::@8
- b8:
- //SEG140 [73] phi from form_control::@8 to form_control::@return [phi:form_control::@8->form_control::@return]
- breturn_from_b8:
- //SEG141 [73] phi (byte) key_right_debounce#13 = (byte) key_right_debounce#11 [phi:form_control::@8->form_control::@return#0] -- register_copy
- //SEG142 [73] phi (byte) form_field_idx#18 = (byte) form_field_idx#32 [phi:form_control::@8->form_control::@return#1] -- register_copy
- //SEG143 [73] phi (byte) key_down_debounce#13 = (byte) key_down_debounce#23 [phi:form_control::@8->form_control::@return#2] -- register_copy
- //SEG144 [73] phi (signed byte) form_cursor_count#16 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:form_control::@8->form_control::@return#3] -- vbsz1=vbuc1
+ jmp b7
+ //SEG133 form_control::@7
+ b7:
+ //SEG134 [71] phi from form_control::@7 to form_control::@return [phi:form_control::@7->form_control::@return]
+ breturn_from_b7:
+ //SEG135 [71] phi (byte) form_field_idx#18 = (byte) form_field_idx#30 [phi:form_control::@7->form_control::@return#0] -- register_copy
+ //SEG136 [71] phi (signed byte) form_cursor_count#16 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:form_control::@7->form_control::@return#1] -- vbsz1=vbuc1
lda #FORM_CURSOR_BLINK/2
sta form_cursor_count
jmp breturn
- //SEG145 [73] phi from form_control::@14 form_control::@26 form_control::@34 to form_control::@return [phi:form_control::@14/form_control::@26/form_control::@34->form_control::@return]
- breturn_from_b14:
- breturn_from_b26:
- breturn_from_b34:
- //SEG146 [73] phi (byte) key_right_debounce#13 = (byte) key_right_debounce#21 [phi:form_control::@14/form_control::@26/form_control::@34->form_control::@return#0] -- register_copy
- //SEG147 [73] phi (byte) form_field_idx#18 = (byte) form_field_idx#14 [phi:form_control::@14/form_control::@26/form_control::@34->form_control::@return#1] -- register_copy
- //SEG148 [73] phi (byte) key_down_debounce#13 = (byte) key_down_debounce#20 [phi:form_control::@14/form_control::@26/form_control::@34->form_control::@return#2] -- register_copy
- //SEG149 [73] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@14/form_control::@26/form_control::@34->form_control::@return#3] -- register_copy
+ //SEG137 [71] phi from form_control::@12 form_control::@4 to form_control::@return [phi:form_control::@12/form_control::@4->form_control::@return]
+ breturn_from_b12:
+ breturn_from_b4:
+ //SEG138 [71] phi (byte) form_field_idx#18 = (byte) form_field_idx#14 [phi:form_control::@12/form_control::@4->form_control::@return#0] -- register_copy
+ //SEG139 [71] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@12/form_control::@4->form_control::@return#1] -- register_copy
jmp breturn
- //SEG150 form_control::@return
+ //SEG140 form_control::@return
breturn:
- //SEG151 [74] return [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
+ //SEG141 [72] return [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] )
rts
- //SEG152 [75] phi from form_control::@21 to form_control::@38 [phi:form_control::@21->form_control::@38]
- b38_from_b21:
- jmp b38
- //SEG153 form_control::@38
- b38:
- //SEG154 [72] phi from form_control::@38 form_control::@39 to form_control::@8 [phi:form_control::@38/form_control::@39->form_control::@8]
- b8_from_b38:
- b8_from_b39:
- //SEG155 [72] phi (byte) form_field_idx#32 = (byte) form_field_idx#41 [phi:form_control::@38/form_control::@39->form_control::@8#0] -- register_copy
- jmp b8
- //SEG156 form_control::@6
- b6:
- //SEG157 [76] (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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] ) -- vbuz1=_dec_vbuz1
+ //SEG142 [73] phi from form_control::@18 to form_control::@32 [phi:form_control::@18->form_control::@32]
+ b32_from_b18:
+ jmp b32
+ //SEG143 form_control::@32
+ b32:
+ //SEG144 [70] phi from form_control::@32 form_control::@33 to form_control::@7 [phi:form_control::@32/form_control::@33->form_control::@7]
+ b7_from_b32:
+ b7_from_b33:
+ //SEG145 [70] phi (byte) form_field_idx#30 = (byte) form_field_idx#40 [phi:form_control::@32/form_control::@33->form_control::@7#0] -- register_copy
+ jmp b7
+ //SEG146 form_control::@5
+ b5:
+ //SEG147 [74] (byte) form_field_idx#41 ← -- (byte) form_field_idx#14 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ) -- vbuz1=_dec_vbuz1
dec form_field_idx
- //SEG158 [77] 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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] ) -- vbuz1_neq_vbuc1_then_la1
+ //SEG148 [75] if((byte) form_field_idx#41!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@33 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ) -- vbuz1_neq_vbuc1_then_la1
lda form_field_idx
cmp #$ff
- bne b39_from_b6
- //SEG159 [72] phi from form_control::@6 to form_control::@8 [phi:form_control::@6->form_control::@8]
- b8_from_b6:
- //SEG160 [72] phi (byte) form_field_idx#32 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@6->form_control::@8#0] -- vbuz1=vbuc1
+ bne b33_from_b5
+ //SEG149 [70] phi from form_control::@5 to form_control::@7 [phi:form_control::@5->form_control::@7]
+ b7_from_b5:
+ //SEG150 [70] phi (byte) form_field_idx#30 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@5->form_control::@7#0] -- vbuz1=vbuc1
lda #form_fields_cnt-1
sta form_field_idx
- jmp b8
- //SEG161 [78] phi from form_control::@6 to form_control::@39 [phi:form_control::@6->form_control::@39]
- b39_from_b6:
- jmp b39
- //SEG162 form_control::@39
- b39:
- jmp b8_from_b39
- //SEG163 [79] phi from form_control::@19 form_control::@33 to form_control::@4 [phi:form_control::@19/form_control::@33->form_control::@4]
- b4_from_b19:
- b4_from_b33:
- //SEG164 [79] phi (byte) key_down_debounce#20 = (byte) key_down_debounce#23 [phi:form_control::@19/form_control::@33->form_control::@4#0] -- register_copy
- jmp b4
- //SEG165 form_control::@4
+ jmp b7
+ //SEG151 [76] phi from form_control::@5 to form_control::@33 [phi:form_control::@5->form_control::@33]
+ b33_from_b5:
+ jmp b33
+ //SEG152 form_control::@33
+ b33:
+ jmp b7_from_b33
+ //SEG153 form_control::@4
b4:
- //SEG166 [80] 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:46 [ 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 ] )
- //SEG167 [101] phi from form_control::@4 to keyboard_key_pressed [phi:form_control::@4->keyboard_key_pressed]
- keyboard_key_pressed_from_b4:
- //SEG168 [101] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_CRSR_RIGHT#0 [phi:form_control::@4->keyboard_key_pressed#0] -- vbuz1=vbuc1
- lda #KEY_CRSR_RIGHT
- sta keyboard_key_pressed.key
- jsr keyboard_key_pressed
- //SEG169 [81] (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:46 [ 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 ] ) -- vbuz1=vbuz2
- lda keyboard_key_pressed.return
- sta keyboard_key_pressed.return_3
- jmp b34
- //SEG170 form_control::@34
- b34:
- //SEG171 [82] (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:46 [ 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 ] ) -- vbuz1=vbuz2
- lda keyboard_key_pressed.return_3
- sta key_right
- //SEG172 [83] 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:46 [ 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 ] ) -- vbuz1_eq_vbuz2_then_la1
- lda key_right
- cmp key_right_debounce
- beq breturn_from_b34
- jmp b26
- //SEG173 form_control::@26
- b26:
- //SEG174 [84] (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:46 [ 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 ] ) -- vbuz1=vbuz2
- lda key_right
- sta key_right_debounce
- //SEG175 [85] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- vbuz1_eq_0_then_la1
- lda key_right
- beq breturn_from_b26
- //SEG176 [86] phi from form_control::@26 to form_control::@27 [phi:form_control::@26->form_control::@27]
- b27_from_b26:
- jmp b27
- //SEG177 form_control::@27
- b27:
- //SEG178 [87] 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:46 [ 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 ] )
- //SEG179 [101] phi from form_control::@27 to keyboard_key_pressed [phi:form_control::@27->keyboard_key_pressed]
- keyboard_key_pressed_from_b27:
- //SEG180 [101] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_RSHIFT#0 [phi:form_control::@27->keyboard_key_pressed#0] -- vbuz1=vbuc1
- lda #KEY_RSHIFT
- sta keyboard_key_pressed.key
- jsr keyboard_key_pressed
- //SEG181 [88] (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:46 [ 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 ] ) -- vbuz1=vbuz2
- lda keyboard_key_pressed.return
- sta keyboard_key_pressed.return_10
- jmp b36
- //SEG182 form_control::@36
- b36:
- //SEG183 [89] (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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::$28 ] ) -- vbuz1=vbuz2
- lda keyboard_key_pressed.return_10
- sta _28
- //SEG184 [90] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- vbuz1_neq_0_then_la1
- lda _28
- bne b12
- jmp b28
- //SEG185 form_control::@28
- b28:
- //SEG186 [91] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
+ //SEG154 [77] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_RIGHT#0) goto form_control::@return [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- vbuz1_neq_vbuc1_then_la1
+ lda key_event
+ cmp #KEY_CRSR_RIGHT
+ bne breturn_from_b4
+ jmp b23
+ //SEG155 form_control::@23
+ b23:
+ //SEG156 [78] (byte~) form_control::$24 ← (byte) keyboard_modifiers#18 & (const byte) KEY_MODIFIER_SHIFT#0 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::$24 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::$24 ] ) -- vbuz1=vbuz2_band_vbuc1
+ lda #KEY_MODIFIER_SHIFT
+ and keyboard_modifiers
+ sta _24
+ //SEG157 [79] if((byte~) form_control::$24!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@10 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- vbuz1_neq_0_then_la1
+ lda _24
+ bne b10
+ jmp b24
+ //SEG158 form_control::@24
+ b24:
+ //SEG159 [80] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
ldx form_field_idx
inc form_fields_val,x
- //SEG187 [92] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1_le_pbuc2_derefidx_vbuz1_then_la1
+ //SEG160 [81] 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::@12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1_le_pbuc2_derefidx_vbuz1_then_la1
ldy form_field_idx
lda form_fields_val,y
cmp form_fields_max,y
- bcc b14
- beq b14
- jmp b29
- //SEG188 form_control::@29
- b29:
- //SEG189 [93] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1=vbuc2
+ bcc b12
+ beq b12
+ jmp b25
+ //SEG161 form_control::@25
+ b25:
+ //SEG162 [82] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1=vbuc2
ldy form_field_idx
lda #0
sta form_fields_val,y
- jmp b14
- //SEG190 form_control::@14
- b14:
- //SEG191 [94] *((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:46 [ form_field_idx#14 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2
+ jmp b12
+ //SEG163 form_control::@12
+ b12:
+ //SEG164 [83] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_cursor_count#15 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2
ldy form_field_idx
lda form_fields_val,y
tay
lda print_hextab,y
ldy #0
sta (field),y
- jmp breturn_from_b14
- //SEG192 form_control::@12
- b12:
- //SEG193 [95] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1=_dec_pbuc1_derefidx_vbuz1
+ jmp breturn_from_b12
+ //SEG165 form_control::@10
+ b10:
+ //SEG166 [84] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1=_dec_pbuc1_derefidx_vbuz1
ldx form_field_idx
lda form_fields_val,x
sec
sbc #1
ldx form_field_idx
sta form_fields_val,x
- //SEG194 [96] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
+ //SEG167 [85] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#14)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
ldy form_field_idx
lda form_fields_val,y
cmp #$ff
- bne b14
- jmp b31
- //SEG195 form_control::@31
- b31:
- //SEG196 [97] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
+ bne b12
+ jmp b27
+ //SEG168 form_control::@27
+ b27:
+ //SEG169 [86] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
ldy form_field_idx
lda form_fields_max,y
sta form_fields_val,y
- jmp b14
- //SEG197 form_control::@2
+ jmp b12
+ //SEG170 form_control::@2
b2:
- //SEG198 [98] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$7 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1
+ //SEG171 [87] (byte~) form_control::$7 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$7 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$7 ] ) -- vbuz1=_deref_pbuz2_band_vbuc1
lda #$7f
ldy #0
and (field),y
sta _7
- //SEG199 [99] *((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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ) -- _deref_pbuz1=vbuz2
+ //SEG172 [88] *((byte*) form_control::field#0) ← (byte~) form_control::$7 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ) -- _deref_pbuz1=vbuz2
lda _7
ldy #0
sta (field),y
jmp b3_from_b2
- //SEG200 [100] phi from form_control::@32 to form_control::@37 [phi:form_control::@32->form_control::@37]
- b37_from_b32:
- jmp b37
- //SEG201 form_control::@37
- b37:
- //SEG202 [53] phi from form_control::@37 to form_control::@1 [phi:form_control::@37->form_control::@1]
- b1_from_b37:
- //SEG203 [53] phi (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#5 [phi:form_control::@37->form_control::@1#0] -- register_copy
+ //SEG173 [89] phi from form_control::@28 to form_control::@31 [phi:form_control::@28->form_control::@31]
+ b31_from_b28:
+ jmp b31
+ //SEG174 form_control::@31
+ b31:
+ //SEG175 [53] phi from form_control::@31 to form_control::@1 [phi:form_control::@31->form_control::@1]
+ b1_from_b31:
+ //SEG176 [53] phi (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#5 [phi:form_control::@31->form_control::@1#0] -- register_copy
jmp b1
}
-//SEG204 keyboard_key_pressed
-keyboard_key_pressed: {
- .label _2 = $28
- .label colidx = $24
- .label rowidx = $25
- .label return = $29
- .label return_2 = $1a
- .label return_3 = $1f
- .label return_4 = $1d
- .label key = 7
- .label return_10 = $21
- //SEG205 [102] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] ) -- vbuz1=vbuz2_band_vbuc1
- lda #7
- and key
- sta colidx
- //SEG206 [103] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] ) -- vbuz1=vbuz2_ror_3
- lda key
- lsr
- lsr
- lsr
- sta rowidx
- //SEG207 [104] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] ) -- vbuz1=vbuz2
- lda rowidx
- sta keyboard_matrix_read.rowid
- //SEG208 [105] call keyboard_matrix_read param-assignment [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ 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::return#0 ] )
- jsr keyboard_matrix_read
- //SEG209 [106] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#2 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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::return#2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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::return#2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ 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::return#2 ] ) -- vbuz1=vbuz2
- lda keyboard_matrix_read.return
- sta keyboard_matrix_read.return_2
- jmp b2
- //SEG210 keyboard_key_pressed::@2
- b2:
- //SEG211 [107] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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::$2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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::$2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ 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::$2 ] ) -- vbuz1=vbuz2
- lda keyboard_matrix_read.return_2
- sta _2
- //SEG212 [108] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::return#0 ] ) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3
- lda _2
- ldy colidx
- and keyboard_matrix_col_bitmask,y
+//SEG177 keyboard_event_get
+keyboard_event_get: {
+ .label return = 6
+ .label return_3 = $1e
+ //SEG178 [90] if((byte) keyboard_events_size#17!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@1 [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] ) -- vbuz1_neq_0_then_la1
+ lda keyboard_events_size
+ bne b1
+ //SEG179 [91] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return]
+ breturn_from_keyboard_event_get:
+ //SEG180 [91] phi (byte) keyboard_events_size#20 = (byte) keyboard_events_size#17 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy
+ //SEG181 [91] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuz1=vbuc1
+ lda #$ff
sta return
jmp breturn
- //SEG213 keyboard_key_pressed::@return
+ //SEG182 keyboard_event_get::@return
breturn:
- //SEG214 [109] return [ keyboard_key_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::return#0 ] )
+ //SEG183 [92] return [ keyboard_events_size#20 keyboard_event_get::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#20 keyboard_event_get::return#2 ] )
+ rts
+ //SEG184 keyboard_event_get::@1
+ b1:
+ //SEG185 [93] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#17 [ keyboard_events_size#4 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#4 ] ) -- vbuz1=_dec_vbuz1
+ dec keyboard_events_size
+ //SEG186 [94] (byte) keyboard_event_get::return#0 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_event_get::return#0 keyboard_events_size#4 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#0 keyboard_events_size#4 ] ) -- vbuz1=pbuc1_derefidx_vbuz2
+ ldy keyboard_events_size
+ lda keyboard_events,y
+ sta return
+ //SEG187 [91] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return]
+ breturn_from_b1:
+ //SEG188 [91] phi (byte) keyboard_events_size#20 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy
+ //SEG189 [91] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#0 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy
+ jmp breturn
+}
+//SEG190 keyboard_event_scan
+keyboard_event_scan: {
+ .label _3 = $27
+ .label _4 = $28
+ .label _12 = $2a
+ .label _16 = $2c
+ .label _20 = $2e
+ .label _24 = $30
+ .label _28 = $32
+ .label row_scan = $26
+ .label keycode = 9
+ .label col = 8
+ .label event_type = $29
+ .label row = 7
+ //SEG191 [96] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1]
+ b1_from_keyboard_event_scan:
+ //SEG192 [96] phi (byte) keyboard_events_size#43 = (byte) keyboard_events_size#24 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy
+ //SEG193 [96] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1
+ lda #0
+ sta keycode
+ //SEG194 [96] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1
+ lda #0
+ sta row
+ jmp b1
+ //SEG195 [96] phi from keyboard_event_scan::@8 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@1]
+ b1_from_b8:
+ //SEG196 [96] phi (byte) keyboard_events_size#43 = (byte) keyboard_events_size#17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@1#0] -- register_copy
+ //SEG197 [96] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@8->keyboard_event_scan::@1#1] -- register_copy
+ //SEG198 [96] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@1#2] -- register_copy
+ jmp b1
+ //SEG199 keyboard_event_scan::@1
+ b1:
+ //SEG200 [97] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::rowid#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::rowid#0 ] ) -- vbuz1=vbuz2
+ lda row
+ sta keyboard_matrix_read.rowid
+ //SEG201 [98] call keyboard_matrix_read param-assignment [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] )
+ jsr keyboard_matrix_read
+ //SEG202 [99] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#2 ] ) -- vbuz1=vbuz2
+ lda keyboard_matrix_read.return
+ sta keyboard_matrix_read.return_2
+ jmp b25
+ //SEG203 keyboard_event_scan::@25
+ b25:
+ //SEG204 [100] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ) -- vbuz1=vbuz2
+ lda keyboard_matrix_read.return_2
+ sta row_scan
+ //SEG205 [101] if((byte) keyboard_event_scan::row_scan#0==*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ) -- vbuz1_eq_pbuc1_derefidx_vbuz2_then_la1
+ ldy row
+ lda keyboard_scan_values,y
+ cmp row_scan
+ beq b2
+ //SEG206 [102] phi from keyboard_event_scan::@25 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@25->keyboard_event_scan::@3]
+ b3_from_b25:
+ //SEG207 [102] phi (byte) keyboard_events_size#14 = (byte) keyboard_events_size#43 [phi:keyboard_event_scan::@25->keyboard_event_scan::@3#0] -- register_copy
+ //SEG208 [102] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@3#1] -- register_copy
+ //SEG209 [102] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@3#2] -- vbuz1=vbuc1
+ lda #0
+ sta col
+ jmp b3
+ //SEG210 [102] phi from keyboard_event_scan::@4 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@4->keyboard_event_scan::@3]
+ b3_from_b4:
+ //SEG211 [102] phi (byte) keyboard_events_size#14 = (byte) keyboard_events_size#44 [phi:keyboard_event_scan::@4->keyboard_event_scan::@3#0] -- register_copy
+ //SEG212 [102] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@4->keyboard_event_scan::@3#1] -- register_copy
+ //SEG213 [102] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@4->keyboard_event_scan::@3#2] -- register_copy
+ jmp b3
+ //SEG214 keyboard_event_scan::@3
+ b3:
+ //SEG215 [103] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$3 ] ) -- vbuz1=vbuz2_bxor_pbuc1_derefidx_vbuz3
+ lda row_scan
+ ldy row
+ eor keyboard_scan_values,y
+ sta _3
+ //SEG216 [104] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$4 ] ) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3
+ lda _3
+ ldy col
+ and keyboard_matrix_col_bitmask,y
+ sta _4
+ //SEG217 [105] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) -- vbuz1_eq_0_then_la1
+ lda _4
+ beq b4_from_b3
+ jmp b14
+ //SEG218 keyboard_event_scan::@14
+ b14:
+ //SEG219 [106] if((byte) keyboard_events_size#14==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) -- vbuz1_eq_vbuc1_then_la1
+ lda keyboard_events_size
+ cmp #8
+ beq b4_from_b14
+ jmp b15
+ //SEG220 keyboard_event_scan::@15
+ b15:
+ //SEG221 [107] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::event_type#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::event_type#0 ] ) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3
+ lda row_scan
+ ldy col
+ and keyboard_matrix_col_bitmask,y
+ sta event_type
+ //SEG222 [108] if((byte) keyboard_event_scan::event_type#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@6 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) -- vbuz1_neq_0_then_la1
+ lda event_type
+ bne b6
+ jmp b16
+ //SEG223 keyboard_event_scan::@16
+ b16:
+ //SEG224 [109] (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$12 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$12 ] ) -- vbuz1=vbuz2_bor_vbuc1
+ lda #$40
+ ora keycode
+ sta _12
+ //SEG225 [110] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#14) ← (byte/word/dword~) keyboard_event_scan::$12 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) -- pbuc1_derefidx_vbuz1=vbuz2
+ lda _12
+ ldy keyboard_events_size
+ sta keyboard_events,y
+ //SEG226 [111] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#14 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#2 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#2 ] ) -- vbuz1=_inc_vbuz1
+ inc keyboard_events_size
+ //SEG227 [112] phi from keyboard_event_scan::@14 keyboard_event_scan::@16 keyboard_event_scan::@3 keyboard_event_scan::@6 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@14/keyboard_event_scan::@16/keyboard_event_scan::@3/keyboard_event_scan::@6->keyboard_event_scan::@4]
+ b4_from_b14:
+ b4_from_b16:
+ b4_from_b3:
+ b4_from_b6:
+ //SEG228 [112] phi (byte) keyboard_events_size#44 = (byte) keyboard_events_size#14 [phi:keyboard_event_scan::@14/keyboard_event_scan::@16/keyboard_event_scan::@3/keyboard_event_scan::@6->keyboard_event_scan::@4#0] -- register_copy
+ jmp b4
+ //SEG229 keyboard_event_scan::@4
+ b4:
+ //SEG230 [113] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ) -- vbuz1=_inc_vbuz1
+ inc keycode
+ //SEG231 [114] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ) -- vbuz1=_inc_vbuz1
+ inc col
+ //SEG232 [115] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@3 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ) -- vbuz1_neq_vbuc1_then_la1
+ lda col
+ cmp #8
+ bne b3_from_b4
+ jmp b18
+ //SEG233 keyboard_event_scan::@18
+ b18:
+ //SEG234 [116] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ) -- pbuc1_derefidx_vbuz1=vbuz2
+ lda row_scan
+ ldy row
+ sta keyboard_scan_values,y
+ //SEG235 [117] phi from keyboard_event_scan::@18 keyboard_event_scan::@2 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@18/keyboard_event_scan::@2->keyboard_event_scan::@8]
+ b8_from_b18:
+ b8_from_b2:
+ //SEG236 [117] phi (byte) keyboard_events_size#17 = (byte) keyboard_events_size#44 [phi:keyboard_event_scan::@18/keyboard_event_scan::@2->keyboard_event_scan::@8#0] -- register_copy
+ //SEG237 [117] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@18/keyboard_event_scan::@2->keyboard_event_scan::@8#1] -- register_copy
+ jmp b8
+ //SEG238 keyboard_event_scan::@8
+ b8:
+ //SEG239 [118] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 [ keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ) -- vbuz1=_inc_vbuz1
+ inc row
+ //SEG240 [119] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 [ keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ) -- vbuz1_neq_vbuc1_then_la1
+ lda row
+ cmp #8
+ bne b1_from_b8
+ //SEG241 [120] phi from keyboard_event_scan::@8 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@8->keyboard_event_scan::@20]
+ b20_from_b8:
+ jmp b20
+ //SEG242 keyboard_event_scan::@20
+ b20:
+ //SEG243 [121] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] )
+ //SEG244 [149] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed]
+ keyboard_event_pressed_from_b20:
+ //SEG245 [149] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1
+ lda #KEY_LSHIFT
+ sta keyboard_event_pressed.keycode
+ jsr keyboard_event_pressed
+ //SEG246 [122] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_event_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#0 ] ) -- vbuz1=vbuz2
+ lda keyboard_event_pressed.return_10
+ sta keyboard_event_pressed.return
+ jmp b26
+ //SEG247 keyboard_event_scan::@26
+ b26:
+ //SEG248 [123] (byte~) keyboard_event_scan::$16 ← (byte) keyboard_event_pressed::return#0 [ keyboard_events_size#17 keyboard_event_scan::$16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::$16 ] ) -- vbuz1=vbuz2
+ lda keyboard_event_pressed.return
+ sta _16
+ //SEG249 [124] if((byte~) keyboard_event_scan::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] ) -- vbuz1_eq_0_then_la1
+ lda _16
+ beq b9_from_b26
+ //SEG250 [125] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21]
+ b21_from_b26:
+ jmp b21
+ //SEG251 keyboard_event_scan::@21
+ b21:
+ //SEG252 [126] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9]
+ b9_from_b21:
+ //SEG253 [126] phi (byte) keyboard_modifiers#15 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuz1=vbuc1
+ lda #0|KEY_MODIFIER_LSHIFT
+ sta keyboard_modifiers
+ jmp b9
+ //SEG254 [126] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9]
+ b9_from_b26:
+ //SEG255 [126] phi (byte) keyboard_modifiers#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuz1=vbuc1
+ lda #0
+ sta keyboard_modifiers
+ jmp b9
+ //SEG256 keyboard_event_scan::@9
+ b9:
+ //SEG257 [127] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#15 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#15 ] )
+ //SEG258 [149] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed]
+ keyboard_event_pressed_from_b9:
+ //SEG259 [149] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1
+ lda #KEY_RSHIFT
+ sta keyboard_event_pressed.keycode
+ jsr keyboard_event_pressed
+ //SEG260 [128] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#1 ] ) -- vbuz1=vbuz2
+ lda keyboard_event_pressed.return_10
+ sta keyboard_event_pressed.return_1
+ jmp b27
+ //SEG261 keyboard_event_scan::@27
+ b27:
+ //SEG262 [129] (byte~) keyboard_event_scan::$20 ← (byte) keyboard_event_pressed::return#1 [ keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_scan::$20 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_scan::$20 ] ) -- vbuz1=vbuz2
+ lda keyboard_event_pressed.return_1
+ sta _20
+ //SEG263 [130] if((byte~) keyboard_event_scan::$20==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 [ keyboard_events_size#17 keyboard_modifiers#15 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 ] ) -- vbuz1_eq_0_then_la1
+ lda _20
+ beq b10_from_b27
+ jmp b22
+ //SEG264 keyboard_event_scan::@22
+ b22:
+ //SEG265 [131] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#15 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#17 keyboard_modifiers#3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#3 ] ) -- vbuz1=vbuz1_bor_vbuc1
+ lda #KEY_MODIFIER_RSHIFT
+ ora keyboard_modifiers
+ sta keyboard_modifiers
+ //SEG266 [132] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10]
+ b10_from_b22:
+ b10_from_b27:
+ //SEG267 [132] phi (byte) keyboard_modifiers#16 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy
+ jmp b10
+ //SEG268 keyboard_event_scan::@10
+ b10:
+ //SEG269 [133] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#16 ] )
+ //SEG270 [149] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed]
+ keyboard_event_pressed_from_b10:
+ //SEG271 [149] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1
+ lda #KEY_CTRL
+ sta keyboard_event_pressed.keycode
+ jsr keyboard_event_pressed
+ //SEG272 [134] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#2 ] ) -- vbuz1=vbuz2
+ lda keyboard_event_pressed.return_10
+ sta keyboard_event_pressed.return_2
+ jmp b28
+ //SEG273 keyboard_event_scan::@28
+ b28:
+ //SEG274 [135] (byte~) keyboard_event_scan::$24 ← (byte) keyboard_event_pressed::return#2 [ keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_scan::$24 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_scan::$24 ] ) -- vbuz1=vbuz2
+ lda keyboard_event_pressed.return_2
+ sta _24
+ //SEG275 [136] if((byte~) keyboard_event_scan::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 [ keyboard_events_size#17 keyboard_modifiers#16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 ] ) -- vbuz1_eq_0_then_la1
+ lda _24
+ beq b11_from_b28
+ jmp b23
+ //SEG276 keyboard_event_scan::@23
+ b23:
+ //SEG277 [137] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#16 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#17 keyboard_modifiers#4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#4 ] ) -- vbuz1=vbuz1_bor_vbuc1
+ lda #KEY_MODIFIER_CTRL
+ ora keyboard_modifiers
+ sta keyboard_modifiers
+ //SEG278 [138] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11]
+ b11_from_b23:
+ b11_from_b28:
+ //SEG279 [138] phi (byte) keyboard_modifiers#17 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy
+ jmp b11
+ //SEG280 keyboard_event_scan::@11
+ b11:
+ //SEG281 [139] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#17 ] )
+ //SEG282 [149] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed]
+ keyboard_event_pressed_from_b11:
+ //SEG283 [149] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1
+ lda #KEY_COMMODORE
+ sta keyboard_event_pressed.keycode
+ jsr keyboard_event_pressed
+ //SEG284 [140] (byte) keyboard_event_pressed::return#3 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#3 ] ) -- vbuz1=vbuz2
+ lda keyboard_event_pressed.return_10
+ sta keyboard_event_pressed.return_3
+ jmp b29
+ //SEG285 keyboard_event_scan::@29
+ b29:
+ //SEG286 [141] (byte~) keyboard_event_scan::$28 ← (byte) keyboard_event_pressed::return#3 [ keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_scan::$28 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_scan::$28 ] ) -- vbuz1=vbuz2
+ lda keyboard_event_pressed.return_3
+ sta _28
+ //SEG287 [142] if((byte~) keyboard_event_scan::$28==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return [ keyboard_events_size#17 keyboard_modifiers#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 ] ) -- vbuz1_eq_0_then_la1
+ lda _28
+ beq breturn_from_b29
+ jmp b24
+ //SEG288 keyboard_event_scan::@24
+ b24:
+ //SEG289 [143] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#17 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#17 keyboard_modifiers#5 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#5 ] ) -- vbuz1=vbuz1_bor_vbuc1
+ lda #KEY_MODIFIER_COMMODORE
+ ora keyboard_modifiers
+ sta keyboard_modifiers
+ //SEG290 [144] phi from keyboard_event_scan::@24 keyboard_event_scan::@29 to keyboard_event_scan::@return [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return]
+ breturn_from_b24:
+ breturn_from_b29:
+ //SEG291 [144] phi (byte) keyboard_modifiers#18 = (byte) keyboard_modifiers#5 [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return#0] -- register_copy
+ jmp breturn
+ //SEG292 keyboard_event_scan::@return
+ breturn:
+ //SEG293 [145] return [ keyboard_modifiers#18 keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_modifiers#18 keyboard_events_size#17 ] )
+ rts
+ //SEG294 keyboard_event_scan::@6
+ b6:
+ //SEG295 [146] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#14) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) -- pbuc1_derefidx_vbuz1=vbuz2
+ lda keycode
+ ldy keyboard_events_size
+ sta keyboard_events,y
+ //SEG296 [147] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#14 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#1 ] ) -- vbuz1=_inc_vbuz1
+ inc keyboard_events_size
+ jmp b4_from_b6
+ //SEG297 keyboard_event_scan::@2
+ b2:
+ //SEG298 [148] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#43 keyboard_event_scan::keycode#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#43 keyboard_event_scan::keycode#1 ] ) -- vbuz1=vbuz1_plus_vbuc1
+ lda #8
+ clc
+ adc keycode
+ sta keycode
+ jmp b8_from_b2
+}
+//SEG299 keyboard_event_pressed
+keyboard_event_pressed: {
+ .label _0 = $33
+ .label _1 = $35
+ .label return = $2b
+ .label return_1 = $2d
+ .label return_2 = $2f
+ .label return_3 = $31
+ .label row_bits = $34
+ .label keycode = $b
+ .label return_10 = $36
+ //SEG300 [150] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ) -- vbuz1=vbuz2_ror_3
+ lda keycode
+ lsr
+ lsr
+ lsr
+ sta _0
+ //SEG301 [151] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2
+ ldy _0
+ lda keyboard_scan_values,y
+ sta row_bits
+ //SEG302 [152] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) -- vbuz1=vbuz2_band_vbuc1
+ lda #7
+ and keycode
+ sta _1
+ //SEG303 [153] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#10 ] ) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3
+ lda row_bits
+ ldy _1
+ and keyboard_matrix_col_bitmask,y
+ sta return_10
+ jmp breturn
+ //SEG304 keyboard_event_pressed::@return
+ breturn:
+ //SEG305 [154] return [ keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#10 ] )
rts
}
-//SEG215 keyboard_matrix_read
+//SEG306 keyboard_matrix_read
keyboard_matrix_read: {
- .label return = $2a
- .label rowid = $26
- .label return_2 = $27
- //SEG216 [110] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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 ] ) -- _deref_pbuc1=pbuc2_derefidx_vbuz1
+ .label return = $37
+ .label rowid = $24
+ .label return_2 = $25
+ //SEG307 [155] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] ) -- _deref_pbuc1=pbuc2_derefidx_vbuz1
ldy rowid
lda keyboard_matrix_row_bitmask,y
sta CIA1_PORT_A
- //SEG217 [111] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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::return#0 ] ) -- vbuz1=_bnot__deref_pbuc1
+ //SEG308 [156] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] ) -- vbuz1=_bnot__deref_pbuc1
lda CIA1_PORT_B
eor #$ff
sta return
jmp breturn
- //SEG218 keyboard_matrix_read::@return
+ //SEG309 keyboard_matrix_read::@return
breturn:
- //SEG219 [112] return [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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::return#0 ] )
+ //SEG310 [157] return [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] )
rts
}
-//SEG220 form_field_ptr
+//SEG311 form_field_ptr
form_field_ptr: {
- .label y = $2b
- .label x = $2e
- .label return = $2f
- .label field_idx = 8
- .label return_2 = $31
- .label return_3 = $15
- .label _2 = $2c
- //SEG221 [114] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2
+ .label y = $38
+ .label x = $3b
+ .label return = $3c
+ .label field_idx = $c
+ .label return_2 = $3e
+ .label return_3 = $19
+ .label _2 = $39
+ //SEG312 [159] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2
ldy field_idx
lda form_fields_y,y
sta y
- //SEG222 [115] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] ) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2
+ //SEG313 [160] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] ) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2
ldy y
lda form_line_hi,y
sta _2+1
lda form_line_lo,y
sta _2
- //SEG223 [116] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::$2 form_field_ptr::x#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::$2 form_field_ptr::x#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::$2 form_field_ptr::x#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2
+ //SEG314 [161] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::$2 form_field_ptr::x#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::$2 form_field_ptr::x#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::$2 form_field_ptr::x#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2
ldy field_idx
lda form_fields_x,y
sta x
- //SEG224 [117] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ 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_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#0 ] ) -- pbuz1=pbuz2_plus_vbuz3
+ //SEG315 [162] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#0 ] ) -- pbuz1=pbuz2_plus_vbuz3
lda x
clc
adc _2
@@ -7481,106 +9051,106 @@ form_field_ptr: {
adc _2+1
sta return+1
jmp breturn
- //SEG225 form_field_ptr::@return
+ //SEG316 form_field_ptr::@return
breturn:
- //SEG226 [118] return [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ 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_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#0 ] )
+ //SEG317 [163] return [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#0 ] )
rts
}
-//SEG227 form_render_values
+//SEG318 form_render_values
form_render_values: {
- .label field = $33
- .label idx = 9
- //SEG228 [120] phi from form_render_values to form_render_values::@1 [phi:form_render_values->form_render_values::@1]
+ .label field = $40
+ .label idx = $d
+ //SEG319 [165] phi from form_render_values to form_render_values::@1 [phi:form_render_values->form_render_values::@1]
b1_from_form_render_values:
- //SEG229 [120] phi (byte) form_render_values::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_render_values->form_render_values::@1#0] -- vbuz1=vbuc1
+ //SEG320 [165] phi (byte) form_render_values::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_render_values->form_render_values::@1#0] -- vbuz1=vbuc1
lda #0
sta idx
jmp b1
- //SEG230 [120] phi from form_render_values::@3 to form_render_values::@1 [phi:form_render_values::@3->form_render_values::@1]
+ //SEG321 [165] phi from form_render_values::@3 to form_render_values::@1 [phi:form_render_values::@3->form_render_values::@1]
b1_from_b3:
- //SEG231 [120] phi (byte) form_render_values::idx#2 = (byte) form_render_values::idx#1 [phi:form_render_values::@3->form_render_values::@1#0] -- register_copy
+ //SEG322 [165] phi (byte) form_render_values::idx#2 = (byte) form_render_values::idx#1 [phi:form_render_values::@3->form_render_values::@1#0] -- register_copy
jmp b1
- //SEG232 form_render_values::@1
+ //SEG323 form_render_values::@1
b1:
- //SEG233 [121] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 [ form_field_ptr::field_idx#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_field_ptr::field_idx#0 form_render_values::idx#2 ] ) -- vbuz1=vbuz2
+ //SEG324 [166] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 [ form_field_ptr::field_idx#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_field_ptr::field_idx#0 form_render_values::idx#2 ] ) -- vbuz1=vbuz2
lda idx
sta form_field_ptr.field_idx
- //SEG234 [122] call form_field_ptr param-assignment [ form_field_ptr::return#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_field_ptr::return#0 form_render_values::idx#2 ] )
- //SEG235 [113] phi from form_render_values::@1 to form_field_ptr [phi:form_render_values::@1->form_field_ptr]
+ //SEG325 [167] call form_field_ptr param-assignment [ form_field_ptr::return#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_field_ptr::return#0 form_render_values::idx#2 ] )
+ //SEG326 [158] phi from form_render_values::@1 to form_field_ptr [phi:form_render_values::@1->form_field_ptr]
form_field_ptr_from_b1:
- //SEG236 [113] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#0 [phi:form_render_values::@1->form_field_ptr#0] -- register_copy
+ //SEG327 [158] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#0 [phi:form_render_values::@1->form_field_ptr#0] -- register_copy
jsr form_field_ptr
- //SEG237 [123] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#2 ] ) -- pbuz1=pbuz2
+ //SEG328 [168] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#2 ] ) -- pbuz1=pbuz2
lda form_field_ptr.return
sta form_field_ptr.return_2
lda form_field_ptr.return+1
sta form_field_ptr.return_2+1
jmp b3
- //SEG238 form_render_values::@3
+ //SEG329 form_render_values::@3
b3:
- //SEG239 [124] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_render_values::field#0 ] ) -- pbuz1=pbuz2
+ //SEG330 [169] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_render_values::field#0 ] ) -- pbuz1=pbuz2
lda form_field_ptr.return_2
sta field
lda form_field_ptr.return_2+1
sta field+1
- //SEG240 [125] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2
+ //SEG331 [170] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2
ldy idx
lda form_fields_val,y
tay
lda print_hextab,y
ldy #0
sta (field),y
- //SEG241 [126] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#1 ] ) -- vbuz1=_inc_vbuz1
+ //SEG332 [171] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#1 ] ) -- vbuz1=_inc_vbuz1
inc idx
- //SEG242 [127] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#1 ] ) -- vbuz1_lt_vbuc1_then_la1
+ //SEG333 [172] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#1 ] ) -- vbuz1_lt_vbuc1_then_la1
lda idx
cmp #form_fields_cnt
bcc b1_from_b3
jmp breturn
- //SEG243 form_render_values::@return
+ //SEG334 form_render_values::@return
breturn:
- //SEG244 [128] return [ ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ //SEG335 [173] return [ ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
rts
}
-//SEG245 form_set_screen
+//SEG336 form_set_screen
form_set_screen: {
- .label _0 = $35
- .label _1 = $36
- .label line = $a
- .label y = $c
- //SEG246 [130] phi from form_set_screen to form_set_screen::@1 [phi:form_set_screen->form_set_screen::@1]
+ .label _0 = $42
+ .label _1 = $43
+ .label line = $e
+ .label y = $10
+ //SEG337 [175] phi from form_set_screen to form_set_screen::@1 [phi:form_set_screen->form_set_screen::@1]
b1_from_form_set_screen:
- //SEG247 [130] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuz1=vbuc1
+ //SEG338 [175] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuz1=vbuc1
lda #0
sta y
- //SEG248 [130] phi (byte*) form_set_screen::line#2 = (const byte*) menu::SCREEN#0 [phi:form_set_screen->form_set_screen::@1#1] -- pbuz1=pbuc1
+ //SEG339 [175] phi (byte*) form_set_screen::line#2 = (const byte*) menu::SCREEN#0 [phi:form_set_screen->form_set_screen::@1#1] -- pbuz1=pbuc1
lda #menu.SCREEN
sta line+1
jmp b1
- //SEG249 [130] phi from form_set_screen::@1 to form_set_screen::@1 [phi:form_set_screen::@1->form_set_screen::@1]
+ //SEG340 [175] phi from form_set_screen::@1 to form_set_screen::@1 [phi:form_set_screen::@1->form_set_screen::@1]
b1_from_b1:
- //SEG250 [130] phi (byte) form_set_screen::y#2 = (byte) form_set_screen::y#1 [phi:form_set_screen::@1->form_set_screen::@1#0] -- register_copy
- //SEG251 [130] phi (byte*) form_set_screen::line#2 = (byte*) form_set_screen::line#1 [phi:form_set_screen::@1->form_set_screen::@1#1] -- register_copy
+ //SEG341 [175] phi (byte) form_set_screen::y#2 = (byte) form_set_screen::y#1 [phi:form_set_screen::@1->form_set_screen::@1#0] -- register_copy
+ //SEG342 [175] phi (byte*) form_set_screen::line#2 = (byte*) form_set_screen::line#1 [phi:form_set_screen::@1->form_set_screen::@1#1] -- register_copy
jmp b1
- //SEG252 form_set_screen::@1
+ //SEG343 form_set_screen::@1
b1:
- //SEG253 [131] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ) -- vbuz1=_lo_pbuz2
+ //SEG344 [176] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ) -- vbuz1=_lo_pbuz2
lda line
sta _0
- //SEG254 [132] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2
+ //SEG345 [177] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2
lda _0
ldy y
sta form_line_lo,y
- //SEG255 [133] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ) -- vbuz1=_hi_pbuz2
+ //SEG346 [178] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ) -- vbuz1=_hi_pbuz2
lda line+1
sta _1
- //SEG256 [134] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2
+ //SEG347 [179] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2
lda _1
ldy y
sta form_line_hi,y
- //SEG257 [135] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::y#2 form_set_screen::line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1
+ //SEG348 [180] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::y#2 form_set_screen::line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1
lda line
clc
adc #$28
@@ -7588,116 +9158,116 @@ form_set_screen: {
bcc !+
inc line+1
!:
- //SEG258 [136] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#1 form_set_screen::y#1 ] ) -- vbuz1=_inc_vbuz1
+ //SEG349 [181] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#1 form_set_screen::y#1 ] ) -- vbuz1=_inc_vbuz1
inc y
- //SEG259 [137] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#1 form_set_screen::y#1 ] ) -- vbuz1_neq_vbuc1_then_la1
+ //SEG350 [182] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#1 form_set_screen::y#1 ] ) -- vbuz1_neq_vbuc1_then_la1
lda y
cmp #$19
bne b1_from_b1
jmp breturn
- //SEG260 form_set_screen::@return
+ //SEG351 form_set_screen::@return
breturn:
- //SEG261 [138] return [ ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ //SEG352 [183] return [ ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
rts
}
-//SEG262 print_str_lines
+//SEG353 print_str_lines
print_str_lines: {
- .label ch = $37
- .label str = $d
- //SEG263 [140] (byte*~) print_char_cursor#63 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] ) -- pbuz1=pbuz2
+ .label ch = $44
+ .label str = $11
+ //SEG354 [185] (byte*~) print_char_cursor#64 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] ) -- pbuz1=pbuz2
lda print_set_screen.screen
sta print_char_cursor
lda print_set_screen.screen+1
sta print_char_cursor+1
- //SEG264 [141] phi from print_str_lines print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1]
+ //SEG355 [186] phi from print_str_lines print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1]
b1_from_print_str_lines:
b1_from_b9:
- //SEG265 [141] phi (byte*) print_line_cursor#2 = (byte*) print_set_screen::screen#2 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#0] -- register_copy
- //SEG266 [141] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#63 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#1] -- register_copy
- //SEG267 [141] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#5 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#2] -- register_copy
+ //SEG356 [186] phi (byte*) print_line_cursor#2 = (byte*) print_set_screen::screen#2 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#0] -- register_copy
+ //SEG357 [186] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#64 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#1] -- register_copy
+ //SEG358 [186] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#5 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#2] -- register_copy
jmp b1
- //SEG268 print_str_lines::@1
+ //SEG359 print_str_lines::@1
b1:
- //SEG269 [142] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1
+ //SEG360 [187] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1
ldy #0
lda (str),y
cmp #'@'
bne b4_from_b1
jmp breturn
- //SEG270 print_str_lines::@return
+ //SEG361 print_str_lines::@return
breturn:
- //SEG271 [143] return [ ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ //SEG362 [188] return [ ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
rts
- //SEG272 [144] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4]
+ //SEG363 [189] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4]
b4_from_b1:
b4_from_b5:
- //SEG273 [144] phi (byte*) print_char_cursor#20 = (byte*) print_char_cursor#22 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy
- //SEG274 [144] phi (byte*) print_str_lines::str#4 = (byte*) print_str_lines::str#3 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy
+ //SEG364 [189] phi (byte*) print_char_cursor#20 = (byte*) print_char_cursor#22 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy
+ //SEG365 [189] phi (byte*) print_str_lines::str#4 = (byte*) print_str_lines::str#3 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy
jmp b4
- //SEG275 print_str_lines::@4
+ //SEG366 print_str_lines::@4
b4:
- //SEG276 [145] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ) -- vbuz1=_deref_pbuz2
+ //SEG367 [190] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ) -- vbuz1=_deref_pbuz2
ldy #0
lda (str),y
sta ch
- //SEG277 [146] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- pbuz1=_inc_pbuz1
+ //SEG368 [191] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- pbuz1=_inc_pbuz1
inc str
bne !+
inc str+1
!:
- //SEG278 [147] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- vbuz1_eq_vbuc1_then_la1
+ //SEG369 [192] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- vbuz1_eq_vbuc1_then_la1
lda ch
cmp #'@'
beq b5_from_b4
jmp b8
- //SEG279 print_str_lines::@8
+ //SEG370 print_str_lines::@8
b8:
- //SEG280 [148] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- _deref_pbuz1=vbuz2
+ //SEG371 [193] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- _deref_pbuz1=vbuz2
lda ch
ldy #0
sta (print_char_cursor),y
- //SEG281 [149] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 [ print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ) -- pbuz1=_inc_pbuz1
+ //SEG372 [194] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 [ print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ) -- pbuz1=_inc_pbuz1
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
- //SEG282 [150] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5]
+ //SEG373 [195] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5]
b5_from_b4:
b5_from_b8:
- //SEG283 [150] phi (byte*) print_char_cursor#38 = (byte*) print_char_cursor#20 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy
+ //SEG374 [195] phi (byte*) print_char_cursor#38 = (byte*) print_char_cursor#20 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy
jmp b5
- //SEG284 print_str_lines::@5
+ //SEG375 print_str_lines::@5
b5:
- //SEG285 [151] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ) -- vbuz1_neq_vbuc1_then_la1
+ //SEG376 [196] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ) -- vbuz1_neq_vbuc1_then_la1
lda ch
cmp #'@'
bne b4_from_b5
- //SEG286 [152] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9]
+ //SEG377 [197] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9]
b9_from_b5:
jmp b9
- //SEG287 print_str_lines::@9
+ //SEG378 print_str_lines::@9
b9:
- //SEG288 [153] call print_ln param-assignment [ print_str_lines::str#0 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] )
- //SEG289 [155] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln]
+ //SEG379 [198] call print_ln param-assignment [ print_str_lines::str#0 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] )
+ //SEG380 [200] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln]
print_ln_from_b9:
jsr print_ln
- //SEG290 [154] (byte*~) print_char_cursor#64 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] ) -- pbuz1=pbuz2
+ //SEG381 [199] (byte*~) print_char_cursor#65 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] ) -- pbuz1=pbuz2
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
jmp b1_from_b9
}
-//SEG291 print_ln
+//SEG382 print_ln
print_ln: {
- //SEG292 [156] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
+ //SEG383 [201] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
b1_from_print_ln:
b1_from_b1:
- //SEG293 [156] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#2 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy
+ //SEG384 [201] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#2 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy
jmp b1
- //SEG294 print_ln::@1
+ //SEG385 print_ln::@1
b1:
- //SEG295 [157] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) -- pbuz1=pbuz1_plus_vbuc1
+ //SEG386 [202] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) -- pbuz1=pbuz1_plus_vbuc1
lda print_line_cursor
clc
adc #$28
@@ -7705,7 +9275,7 @@ print_ln: {
bcc !+
inc print_line_cursor+1
!:
- //SEG296 [158] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) -- pbuz1_lt_pbuz2_then_la1
+ //SEG387 [203] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) -- pbuz1_lt_pbuz2_then_la1
lda print_line_cursor+1
cmp print_char_cursor+1
bcc b1_from_b1
@@ -7715,37 +9285,37 @@ print_ln: {
bcc b1_from_b1
!:
jmp breturn
- //SEG297 print_ln::@return
+ //SEG388 print_ln::@return
breturn:
- //SEG298 [159] return [ print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] )
+ //SEG389 [204] return [ print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] )
rts
}
-//SEG299 print_cls
+//SEG390 print_cls
print_cls: {
- .label _0 = $38
- .label sc = $13
- //SEG300 [160] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 print_cls::sc#0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#0 ] ) -- pbuz1=pbuz2
+ .label _0 = $45
+ .label sc = $17
+ //SEG391 [205] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 print_cls::sc#0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#0 ] ) -- pbuz1=pbuz2
lda print_set_screen.screen
sta sc
lda print_set_screen.screen+1
sta sc+1
- //SEG301 [161] phi from print_cls print_cls::@1 to print_cls::@1 [phi:print_cls/print_cls::@1->print_cls::@1]
+ //SEG392 [206] phi from print_cls print_cls::@1 to print_cls::@1 [phi:print_cls/print_cls::@1->print_cls::@1]
b1_from_print_cls:
b1_from_b1:
- //SEG302 [161] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#0 [phi:print_cls/print_cls::@1->print_cls::@1#0] -- register_copy
+ //SEG393 [206] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#0 [phi:print_cls/print_cls::@1->print_cls::@1#0] -- register_copy
jmp b1
- //SEG303 print_cls::@1
+ //SEG394 print_cls::@1
b1:
- //SEG304 [162] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
+ //SEG395 [207] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
lda #' '
ldy #0
sta (sc),y
- //SEG305 [163] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
+ //SEG396 [208] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
inc sc
bne !+
inc sc+1
!:
- //SEG306 [164] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ) -- pbuz1=pbuz2_plus_vwuc1
+ //SEG397 [209] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ) -- pbuz1=pbuz2_plus_vwuc1
lda print_set_screen.screen
clc
adc #<$3e8
@@ -7753,7 +9323,7 @@ print_cls: {
lda print_set_screen.screen+1
adc #>$3e8
sta _0+1
- //SEG307 [165] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] ) -- pbuz1_neq_pbuz2_then_la1
+ //SEG398 [210] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] ) -- pbuz1_neq_pbuz2_then_la1
lda sc+1
cmp _0+1
bne b1_from_b1
@@ -7761,24 +9331,26 @@ print_cls: {
cmp _0
bne b1_from_b1
jmp breturn
- //SEG308 print_cls::@return
+ //SEG399 print_cls::@return
breturn:
- //SEG309 [166] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ //SEG400 [211] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
rts
}
-//SEG310 print_set_screen
+//SEG401 print_set_screen
print_set_screen: {
- .label screen = $11
+ .label screen = $15
jmp breturn
- //SEG311 print_set_screen::@return
+ //SEG402 print_set_screen::@return
breturn:
- //SEG312 [168] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_set_screen:26 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] main:2::menu:10::print_set_screen:32 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ //SEG403 [213] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_set_screen:26 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] main:2::menu:10::print_set_screen:32 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
rts
}
DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a
print_hextab: .text "0123456789abcdef"
keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f
keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80
+ keyboard_events: .fill 8, 0
+ keyboard_scan_values: .fill 8, 0
form_line_lo: .fill $19, 0
form_line_hi: .fill $19, 0
form_fields_x: .byte $16, 7, 7, 7, 7, 7, 7, 7, $11, $11, $11, $10, $11, $10, $11, $10, $11, $1b, $1a, $1b, $1a, $1b, $1a, $1b, $26, $26, $26, $25, $26, $25, $26, $25, $26, $25, $26
@@ -7790,245 +9362,319 @@ print_set_screen: {
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [5] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
-Statement [11] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
+Statement [11] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ form_cursor_count#1 form_cursor_count#13 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ]
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ key_down_debounce#1 key_down_debounce#11 key_down_debounce#13 key_down_debounce#20 key_down_debounce#23 ]
-Removing always clobbered register reg byte a as potential for 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 ]
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ key_right_debounce#1 key_right_debounce#11 key_right_debounce#13 key_right_debounce#21 ]
-Statement [12] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [13] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [14] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [15] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [16] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [17] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [18] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [19] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [21] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] ) always clobbers reg byte a
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ menu::i#2 menu::i#1 ]
-Statement [24] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [25] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [44] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto menu::@5 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ) always clobbers reg byte a
-Statement [49] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#3 ] ) always clobbers reg byte a
-Statement [50] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 ] ) always clobbers reg byte a
-Statement [54] 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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a
-Statement [55] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$6 ] ) always clobbers reg byte a reg byte y
-Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ key_down_debounce#1 key_down_debounce#11 key_down_debounce#13 key_down_debounce#20 key_down_debounce#23 ]
-Removing always clobbered register reg byte y as potential for 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 ]
-Removing always clobbered register reg byte y as potential for zp ZP_BYTE:5 [ key_right_debounce#1 key_right_debounce#11 key_right_debounce#13 key_right_debounce#21 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ keyboard_events_size#14 keyboard_events_size#43 keyboard_events_size#22 keyboard_events_size#24 keyboard_events_size#20 keyboard_events_size#4 keyboard_events_size#17 keyboard_events_size#44 keyboard_events_size#2 keyboard_events_size#1 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ keyboard_modifiers#20 keyboard_modifiers#10 keyboard_modifiers#18 keyboard_modifiers#17 keyboard_modifiers#4 keyboard_modifiers#16 keyboard_modifiers#3 keyboard_modifiers#15 keyboard_modifiers#5 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#30 form_field_idx#40 form_field_idx#41 ]
+Statement [12] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [13] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [14] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [15] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [16] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [17] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [18] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [19] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [21] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ menu::i#2 menu::i#1 ]
+Statement [24] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [25] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [44] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto menu::@5 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] ) always clobbers reg byte a
+Statement [49] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#3 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#3 ] ) always clobbers reg byte a
+Statement [50] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_control::field#0 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_control::field#0 ] ) always clobbers reg byte a
+Statement [54] 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 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a
+Statement [55] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$6 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$6 ] ) always clobbers reg byte a reg byte y
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:10 [ keyboard_events_size#14 keyboard_events_size#43 keyboard_events_size#22 keyboard_events_size#24 keyboard_events_size#20 keyboard_events_size#4 keyboard_events_size#17 keyboard_events_size#44 keyboard_events_size#2 keyboard_events_size#1 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:4 [ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#30 form_field_idx#40 form_field_idx#41 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ form_cursor_count#1 form_cursor_count#13 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ]
-Statement [56] *((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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte y
-Statement [64] (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:46 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 key_down_debounce#23 form_control::$13 ] ) always clobbers reg byte a reg byte y
-Statement [65] *((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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] ) always clobbers reg byte y
-Statement [92] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) always clobbers reg byte a reg byte y
-Statement [93] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) always clobbers reg byte a
-Statement [94] *((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:46 [ form_field_idx#14 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) always clobbers reg byte a reg byte y
-Potential register analysis [95] *(form_fields_val#0 + form_field_idx#14) ← -- *(form_fields_val#0 + form_field_idx#14) missing fragment pbuc1_derefidx_vbuxx=_dec_pbuc1_derefidx_vbuxx allocation: reg byte x [ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#32 form_field_idx#41 form_field_idx#42 ]
+Statement [56] *((byte*) form_control::field#0) ← (byte/word/dword~) form_control::$6 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte y
+Statement [64] (byte~) form_control::$12 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_control::$12 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_control::$12 ] ) always clobbers reg byte a reg byte y
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:3 [ keyboard_modifiers#20 keyboard_modifiers#10 keyboard_modifiers#18 keyboard_modifiers#17 keyboard_modifiers#4 keyboard_modifiers#16 keyboard_modifiers#3 keyboard_modifiers#15 keyboard_modifiers#5 ]
+Statement [65] *((byte*) form_control::field#0) ← (byte~) form_control::$12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ) always clobbers reg byte y
+Statement [66] (byte~) form_control::$13 ← (byte) keyboard_modifiers#18 & (const byte) KEY_MODIFIER_SHIFT#0 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::$13 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::$13 ] ) always clobbers reg byte a
+Statement [78] (byte~) form_control::$24 ← (byte) keyboard_modifiers#18 & (const byte) KEY_MODIFIER_SHIFT#0 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::$24 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::$24 ] ) always clobbers reg byte a
+Statement [81] 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::@12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y
+Statement [82] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a
+Statement [83] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y
+Potential register analysis [84] *(form_fields_val#0 + form_field_idx#14) ← -- *(form_fields_val#0 + form_field_idx#14) missing fragment pbuc1_derefidx_vbuxx=_dec_pbuc1_derefidx_vbuxx allocation: reg byte x [ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#30 form_field_idx#40 form_field_idx#41 ]
MISSING FRAGMENTS
pbuc1_derefidx_vbuxx=_dec_pbuc1_derefidx_vbuxx
-Statement [95] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) always clobbers reg byte a reg byte x
-Removing always clobbered register reg byte x as potential for 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 ]
+Statement [84] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a reg byte x
+Removing always clobbered register reg byte x as potential for zp ZP_BYTE:4 [ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#30 form_field_idx#40 form_field_idx#41 ]
+Removing always clobbered register reg byte x as potential for zp ZP_BYTE:10 [ keyboard_events_size#14 keyboard_events_size#43 keyboard_events_size#22 keyboard_events_size#24 keyboard_events_size#20 keyboard_events_size#4 keyboard_events_size#17 keyboard_events_size#44 keyboard_events_size#2 keyboard_events_size#1 ]
+Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ keyboard_modifiers#20 keyboard_modifiers#10 keyboard_modifiers#18 keyboard_modifiers#17 keyboard_modifiers#4 keyboard_modifiers#16 keyboard_modifiers#3 keyboard_modifiers#15 keyboard_modifiers#5 ]
Removing always clobbered register reg byte x as potential for zp ZP_BYTE:2 [ form_cursor_count#1 form_cursor_count#13 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ]
-Removing always clobbered register reg byte x as potential for zp ZP_BYTE:3 [ key_down_debounce#1 key_down_debounce#11 key_down_debounce#13 key_down_debounce#20 key_down_debounce#23 ]
-Removing always clobbered register reg byte x as potential for zp ZP_BYTE:5 [ key_right_debounce#1 key_right_debounce#11 key_right_debounce#13 key_right_debounce#21 ]
-Statement [96] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) always clobbers reg byte a reg byte y
-Statement [97] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) always clobbers reg byte a reg byte y
-Statement [98] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$7 ] ) always clobbers reg byte a reg byte y
-Statement [99] *((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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte y
-Statement [102] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] ) always clobbers reg byte a
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ keyboard_key_pressed::key#4 ]
-Statement [103] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] ) always clobbers reg byte a
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ keyboard_key_pressed::colidx#0 ]
-Statement [108] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
-Statement [110] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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 ] ) always clobbers reg byte a
-Statement [111] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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::return#0 ] ) always clobbers reg byte a
-Statement [115] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] ) always clobbers reg byte a
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ]
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ form_render_values::idx#2 form_render_values::idx#1 ]
-Statement [117] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ 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_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#0 ] ) always clobbers reg byte a
-Statement [123] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#2 ] ) always clobbers reg byte a
-Statement [124] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_render_values::field#0 ] ) always clobbers reg byte a
-Statement [125] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 ] ) always clobbers reg byte a reg byte y
-Removing always clobbered register reg byte y as potential for zp ZP_BYTE:9 [ form_render_values::idx#2 form_render_values::idx#1 ]
-Statement [135] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::y#2 form_set_screen::line#1 ] ) always clobbers reg byte a
-Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ form_set_screen::y#2 form_set_screen::y#1 ]
-Statement [140] (byte*~) print_char_cursor#63 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] ) always clobbers reg byte a
-Statement [142] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ) always clobbers reg byte a reg byte y
-Statement [145] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte a reg byte y
-Statement [148] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte y
-Removing always clobbered register reg byte y as potential for zp ZP_BYTE:55 [ print_str_lines::ch#0 ]
-Statement [154] (byte*~) print_char_cursor#64 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] ) always clobbers reg byte a
-Statement [157] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a
-Statement [158] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a
-Statement [160] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 print_cls::sc#0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#0 ] ) always clobbers reg byte a
-Statement [162] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
-Statement [164] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ) always clobbers reg byte a
-Statement [165] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] ) always clobbers reg byte a
+Statement [85] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#14)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y
+Statement [86] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y
+Statement [87] (byte~) form_control::$7 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$7 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$7 ] ) always clobbers reg byte a reg byte y
+Statement [88] *((byte*) form_control::field#0) ← (byte~) form_control::$7 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte y
+Statement [90] if((byte) keyboard_events_size#17!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@1 [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] ) always clobbers reg byte a
+Statement [101] if((byte) keyboard_event_scan::row_scan#0==*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ 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 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:38 [ keyboard_event_scan::row_scan#0 ]
+Statement [103] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$3 ] ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
+Statement [104] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$4 ] ) always clobbers reg byte a
+Statement [106] if((byte) keyboard_events_size#14==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) always clobbers reg byte a
+Statement [107] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::event_type#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a
+Statement [109] (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$12 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$12 ] ) always clobbers reg byte a
+Statement [110] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#14) ← (byte/word/dword~) keyboard_event_scan::$12 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) always clobbers reg byte y
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:38 [ keyboard_event_scan::row_scan#0 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:8 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:9 [ 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 ]
+Statement [116] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ) always clobbers reg byte a
+Statement [131] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#15 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#17 keyboard_modifiers#3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#3 ] ) always clobbers reg byte a
+Statement [137] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#16 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#17 keyboard_modifiers#4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#4 ] ) always clobbers reg byte a
+Statement [143] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#17 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#17 keyboard_modifiers#5 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#5 ] ) always clobbers reg byte a
+Statement [146] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#14) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) always clobbers reg byte a reg byte y
+Statement [148] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#43 keyboard_event_scan::keycode#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#43 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a
+Statement [152] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:52 [ keyboard_event_pressed::row_bits#0 ]
+Statement [153] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#10 ] ) always clobbers reg byte a
+Statement [155] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] ) always clobbers reg byte a
+Statement [156] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a
+Statement [160] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ]
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ form_render_values::idx#2 form_render_values::idx#1 ]
+Statement [162] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#0 ] ) always clobbers reg byte a
+Statement [168] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#2 ] ) always clobbers reg byte a
+Statement [169] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_render_values::field#0 ] ) always clobbers reg byte a
+Statement [170] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 ] ) always clobbers reg byte a reg byte y
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:13 [ form_render_values::idx#2 form_render_values::idx#1 ]
+Statement [180] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::y#2 form_set_screen::line#1 ] ) always clobbers reg byte a
+Removing always clobbered register reg byte a as potential for zp ZP_BYTE:16 [ form_set_screen::y#2 form_set_screen::y#1 ]
+Statement [185] (byte*~) print_char_cursor#64 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] ) always clobbers reg byte a
+Statement [187] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ) always clobbers reg byte a reg byte y
+Statement [190] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte a reg byte y
+Statement [193] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte y
+Removing always clobbered register reg byte y as potential for zp ZP_BYTE:68 [ print_str_lines::ch#0 ]
+Statement [199] (byte*~) print_char_cursor#65 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] ) always clobbers reg byte a
+Statement [202] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a
+Statement [203] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a
+Statement [205] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 print_cls::sc#0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#0 ] ) always clobbers reg byte a
+Statement [207] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
+Statement [209] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ) always clobbers reg byte a
+Statement [210] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] ) always clobbers reg byte a
Statement [5] *((const byte*) DTV_FEATURE#0) ← (const byte) DTV_FEATURE_ENABLE#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
-Statement [11] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [12] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [13] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [14] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [15] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [16] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [17] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [18] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [19] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [21] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] ) always clobbers reg byte a
-Statement [24] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [25] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) always clobbers reg byte a
-Statement [44] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto menu::@5 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ) always clobbers reg byte a
-Statement [49] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#3 ] ) always clobbers reg byte a
-Statement [50] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 ] ) always clobbers reg byte a
-Statement [52] 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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] ) always clobbers reg byte a
-Statement [54] 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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a
-Statement [55] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$6 ] ) always clobbers reg byte a reg byte y
-Statement [56] *((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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte y
-Statement [64] (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:46 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 key_down_debounce#23 form_control::$13 ] ) always clobbers reg byte a reg byte y
-Statement [65] *((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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] ) always clobbers reg byte y
-Statement [71] 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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] ) always clobbers reg byte a
-Statement [77] 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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] ) always clobbers reg byte a
-Statement [91] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) always clobbers reg byte x
-Statement [92] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) always clobbers reg byte a reg byte y
-Statement [93] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) always clobbers reg byte a reg byte y
-Statement [94] *((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:46 [ form_field_idx#14 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) always clobbers reg byte a reg byte y
-Statement [95] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) always clobbers reg byte a reg byte x
-Statement [96] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) always clobbers reg byte a reg byte y
-Statement [97] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) always clobbers reg byte a reg byte y
-Statement [98] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$7 ] ) always clobbers reg byte a reg byte y
-Statement [99] *((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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte y
-Statement [102] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] ) always clobbers reg byte a
-Statement [103] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] ) always clobbers reg byte a
-Statement [108] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
-Statement [110] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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 ] ) always clobbers reg byte a
-Statement [111] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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::return#0 ] ) always clobbers reg byte a
-Statement [115] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] ) always clobbers reg byte a
-Statement [117] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ 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_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#0 ] ) always clobbers reg byte a
-Statement [123] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#2 ] ) always clobbers reg byte a
-Statement [124] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_render_values::field#0 ] ) always clobbers reg byte a
-Statement [125] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 ] ) always clobbers reg byte a reg byte y
-Statement [135] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::y#2 form_set_screen::line#1 ] ) always clobbers reg byte a
-Statement [140] (byte*~) print_char_cursor#63 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] ) always clobbers reg byte a
-Statement [142] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ) always clobbers reg byte a reg byte y
-Statement [145] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte a reg byte y
-Statement [148] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte y
-Statement [154] (byte*~) print_char_cursor#64 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] ) always clobbers reg byte a
-Statement [157] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a
-Statement [158] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a
-Statement [160] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 print_cls::sc#0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#0 ] ) always clobbers reg byte a
-Statement [162] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
-Statement [164] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ) always clobbers reg byte a
-Statement [165] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] ) always clobbers reg byte a
+Statement [11] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [12] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [13] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [14] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [15] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [16] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [17] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [18] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [19] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [21] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] ) always clobbers reg byte a
+Statement [24] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [25] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) always clobbers reg byte a
+Statement [44] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto menu::@5 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] ) always clobbers reg byte a
+Statement [49] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#3 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#3 ] ) always clobbers reg byte a
+Statement [50] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_control::field#0 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_control::field#0 ] ) always clobbers reg byte a
+Statement [52] if((signed byte) form_cursor_count#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@31 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ) always clobbers reg byte a
+Statement [54] 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 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a
+Statement [55] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$6 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$6 ] ) always clobbers reg byte a reg byte y
+Statement [56] *((byte*) form_control::field#0) ← (byte/word/dword~) form_control::$6 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte y
+Statement [64] (byte~) form_control::$12 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_control::$12 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_control::$12 ] ) always clobbers reg byte a reg byte y
+Statement [65] *((byte*) form_control::field#0) ← (byte~) form_control::$12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ) always clobbers reg byte y
+Statement [66] (byte~) form_control::$13 ← (byte) keyboard_modifiers#18 & (const byte) KEY_MODIFIER_SHIFT#0 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::$13 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::$13 ] ) always clobbers reg byte a
+Statement [69] if((byte) form_field_idx#40!=(const byte) form_fields_cnt#0) goto form_control::@32 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ) always clobbers reg byte a
+Statement [75] if((byte) form_field_idx#41!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@33 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ) always clobbers reg byte a
+Statement [78] (byte~) form_control::$24 ← (byte) keyboard_modifiers#18 & (const byte) KEY_MODIFIER_SHIFT#0 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::$24 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::$24 ] ) always clobbers reg byte a
+Statement [80] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte x
+Statement [81] 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::@12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y
+Statement [82] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y
+Statement [83] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y
+Statement [84] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a reg byte x
+Statement [85] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#14)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y
+Statement [86] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y
+Statement [87] (byte~) form_control::$7 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$7 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$7 ] ) always clobbers reg byte a reg byte y
+Statement [88] *((byte*) form_control::field#0) ← (byte~) form_control::$7 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte y
+Statement [90] if((byte) keyboard_events_size#17!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@1 [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] ) always clobbers reg byte a
+Statement [101] if((byte) keyboard_event_scan::row_scan#0==*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ) always clobbers reg byte a
+Statement [103] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$3 ] ) always clobbers reg byte a
+Statement [104] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$4 ] ) always clobbers reg byte a
+Statement [106] if((byte) keyboard_events_size#14==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) always clobbers reg byte a
+Statement [107] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::event_type#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::event_type#0 ] ) always clobbers reg byte a
+Statement [109] (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$12 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$12 ] ) always clobbers reg byte a
+Statement [110] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#14) ← (byte/word/dword~) keyboard_event_scan::$12 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) always clobbers reg byte y
+Statement [116] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ) always clobbers reg byte a
+Statement [131] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#15 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#17 keyboard_modifiers#3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#3 ] ) always clobbers reg byte a
+Statement [137] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#16 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#17 keyboard_modifiers#4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#4 ] ) always clobbers reg byte a
+Statement [143] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#17 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#17 keyboard_modifiers#5 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#5 ] ) always clobbers reg byte a
+Statement [146] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#14) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) always clobbers reg byte a reg byte y
+Statement [148] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#43 keyboard_event_scan::keycode#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#43 keyboard_event_scan::keycode#1 ] ) always clobbers reg byte a
+Statement [152] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) always clobbers reg byte a
+Statement [153] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#10 ] ) always clobbers reg byte a
+Statement [155] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] ) always clobbers reg byte a
+Statement [156] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a
+Statement [160] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] ) always clobbers reg byte a
+Statement [162] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#0 ] ) always clobbers reg byte a
+Statement [168] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#2 ] ) always clobbers reg byte a
+Statement [169] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_render_values::field#0 ] ) always clobbers reg byte a
+Statement [170] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 ] ) always clobbers reg byte a reg byte y
+Statement [180] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::y#2 form_set_screen::line#1 ] ) always clobbers reg byte a
+Statement [185] (byte*~) print_char_cursor#64 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] ) always clobbers reg byte a
+Statement [187] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ) always clobbers reg byte a reg byte y
+Statement [190] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte a reg byte y
+Statement [193] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) always clobbers reg byte y
+Statement [199] (byte*~) print_char_cursor#65 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] ) always clobbers reg byte a
+Statement [202] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a
+Statement [203] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) always clobbers reg byte a
+Statement [205] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 print_cls::sc#0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#0 ] ) always clobbers reg byte a
+Statement [207] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] ) always clobbers reg byte a reg byte y
+Statement [209] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ) always clobbers reg byte a
+Statement [210] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] ) always clobbers reg byte a
Potential registers 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:2 ,
-Potential registers zp ZP_BYTE:3 [ key_down_debounce#1 key_down_debounce#11 key_down_debounce#13 key_down_debounce#20 key_down_debounce#23 ] : zp ZP_BYTE:3 ,
-Potential registers 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:4 ,
-Potential registers zp ZP_BYTE:5 [ key_right_debounce#1 key_right_debounce#11 key_right_debounce#13 key_right_debounce#21 ] : zp ZP_BYTE:5 ,
-Potential registers zp ZP_BYTE:6 [ menu::i#2 menu::i#1 ] : zp ZP_BYTE:6 , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:7 [ keyboard_key_pressed::key#4 ] : zp ZP_BYTE:7 , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:8 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] : zp ZP_BYTE:8 , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:9 [ form_render_values::idx#2 form_render_values::idx#1 ] : zp ZP_BYTE:9 , reg byte x ,
-Potential registers zp ZP_WORD:10 [ form_set_screen::line#2 form_set_screen::line#1 ] : zp ZP_WORD:10 ,
-Potential registers zp ZP_BYTE:12 [ form_set_screen::y#2 form_set_screen::y#1 ] : zp ZP_BYTE:12 , reg byte x , reg byte y ,
-Potential registers zp ZP_WORD:13 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] : zp ZP_WORD:13 ,
-Potential registers zp ZP_WORD:15 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#63 print_char_cursor#64 print_char_cursor#38 print_char_cursor#1 ] : zp ZP_WORD:15 ,
-Potential registers zp ZP_WORD:17 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] : zp ZP_WORD:17 ,
-Potential registers zp ZP_WORD:19 [ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ] : zp ZP_WORD:19 ,
-Potential registers zp ZP_WORD:21 [ form_field_ptr::return#3 ] : zp ZP_WORD:21 ,
-Potential registers zp ZP_WORD:23 [ form_control::field#0 ] : zp ZP_WORD:23 ,
-Potential registers zp ZP_BYTE:25 [ form_control::$6 ] : zp ZP_BYTE:25 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:26 [ keyboard_key_pressed::return#2 ] : zp ZP_BYTE:26 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:27 [ form_control::key_down#0 ] : zp ZP_BYTE:27 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:28 [ form_control::$13 ] : zp ZP_BYTE:28 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:29 [ keyboard_key_pressed::return#4 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:30 [ form_control::$14 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:31 [ keyboard_key_pressed::return#3 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:32 [ form_control::key_right#0 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:33 [ keyboard_key_pressed::return#10 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:34 [ form_control::$28 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:3 [ keyboard_modifiers#20 keyboard_modifiers#10 keyboard_modifiers#18 keyboard_modifiers#17 keyboard_modifiers#4 keyboard_modifiers#16 keyboard_modifiers#3 keyboard_modifiers#15 keyboard_modifiers#5 ] : zp ZP_BYTE:3 ,
+Potential registers zp ZP_BYTE:4 [ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#30 form_field_idx#40 form_field_idx#41 ] : zp ZP_BYTE:4 ,
+Potential registers zp ZP_BYTE:5 [ menu::i#2 menu::i#1 ] : zp ZP_BYTE:5 , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:6 [ keyboard_event_get::return#2 keyboard_event_get::return#0 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:7 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] : zp ZP_BYTE:7 , reg byte x ,
+Potential registers zp ZP_BYTE:8 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] : zp ZP_BYTE:8 , reg byte x ,
+Potential registers zp ZP_BYTE:9 [ 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 ] : zp ZP_BYTE:9 , reg byte x ,
+Potential registers zp ZP_BYTE:10 [ keyboard_events_size#14 keyboard_events_size#43 keyboard_events_size#22 keyboard_events_size#24 keyboard_events_size#20 keyboard_events_size#4 keyboard_events_size#17 keyboard_events_size#44 keyboard_events_size#2 keyboard_events_size#1 ] : zp ZP_BYTE:10 ,
+Potential registers zp ZP_BYTE:11 [ keyboard_event_pressed::keycode#4 ] : zp ZP_BYTE:11 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:12 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] : zp ZP_BYTE:12 , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:13 [ form_render_values::idx#2 form_render_values::idx#1 ] : zp ZP_BYTE:13 , reg byte x ,
+Potential registers zp ZP_WORD:14 [ form_set_screen::line#2 form_set_screen::line#1 ] : zp ZP_WORD:14 ,
+Potential registers zp ZP_BYTE:16 [ form_set_screen::y#2 form_set_screen::y#1 ] : zp ZP_BYTE:16 , reg byte x , reg byte y ,
+Potential registers zp ZP_WORD:17 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] : zp ZP_WORD:17 ,
+Potential registers zp ZP_WORD:19 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#64 print_char_cursor#65 print_char_cursor#38 print_char_cursor#1 ] : zp ZP_WORD:19 ,
+Potential registers zp ZP_WORD:21 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] : zp ZP_WORD:21 ,
+Potential registers zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ] : zp ZP_WORD:23 ,
+Potential registers zp ZP_WORD:25 [ form_field_ptr::return#3 ] : zp ZP_WORD:25 ,
+Potential registers zp ZP_WORD:27 [ form_control::field#0 ] : zp ZP_WORD:27 ,
+Potential registers zp ZP_BYTE:29 [ form_control::$6 ] : zp ZP_BYTE:29 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:30 [ keyboard_event_get::return#3 ] : zp ZP_BYTE:30 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:31 [ form_control::key_event#0 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:32 [ form_control::$12 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:33 [ form_control::$13 ] : zp ZP_BYTE:33 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:34 [ form_control::$24 ] : zp ZP_BYTE:34 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:35 [ form_control::$7 ] : zp ZP_BYTE:35 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:36 [ keyboard_key_pressed::colidx#0 ] : zp ZP_BYTE:36 , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:37 [ keyboard_key_pressed::rowidx#0 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:38 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:38 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:39 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:39 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:40 [ keyboard_key_pressed::$2 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:41 [ keyboard_key_pressed::return#0 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:42 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:43 [ form_field_ptr::y#0 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_WORD:44 [ form_field_ptr::$2 ] : zp ZP_WORD:44 ,
-Potential registers zp ZP_BYTE:46 [ form_field_ptr::x#0 ] : zp ZP_BYTE:46 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_WORD:47 [ form_field_ptr::return#0 ] : zp ZP_WORD:47 ,
-Potential registers zp ZP_WORD:49 [ form_field_ptr::return#2 ] : zp ZP_WORD:49 ,
-Potential registers zp ZP_WORD:51 [ form_render_values::field#0 ] : zp ZP_WORD:51 ,
-Potential registers zp ZP_BYTE:53 [ form_set_screen::$0 ] : zp ZP_BYTE:53 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:54 [ form_set_screen::$1 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y ,
-Potential registers zp ZP_BYTE:55 [ print_str_lines::ch#0 ] : zp ZP_BYTE:55 , reg byte a , reg byte x ,
-Potential registers zp ZP_WORD:56 [ print_cls::$0 ] : zp ZP_WORD:56 ,
+Potential registers zp ZP_BYTE:36 [ keyboard_matrix_read::rowid#0 ] : zp ZP_BYTE:36 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:37 [ keyboard_matrix_read::return#2 ] : zp ZP_BYTE:37 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:38 [ keyboard_event_scan::row_scan#0 ] : zp ZP_BYTE:38 , reg byte x ,
+Potential registers zp ZP_BYTE:39 [ keyboard_event_scan::$3 ] : zp ZP_BYTE:39 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:40 [ keyboard_event_scan::$4 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:41 [ keyboard_event_scan::event_type#0 ] : zp ZP_BYTE:41 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:42 [ keyboard_event_scan::$12 ] : zp ZP_BYTE:42 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:43 [ keyboard_event_pressed::return#0 ] : zp ZP_BYTE:43 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:44 [ keyboard_event_scan::$16 ] : zp ZP_BYTE:44 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:45 [ keyboard_event_pressed::return#1 ] : zp ZP_BYTE:45 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:46 [ keyboard_event_scan::$20 ] : zp ZP_BYTE:46 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:47 [ keyboard_event_pressed::return#2 ] : zp ZP_BYTE:47 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:48 [ keyboard_event_scan::$24 ] : zp ZP_BYTE:48 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:49 [ keyboard_event_pressed::return#3 ] : zp ZP_BYTE:49 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:50 [ keyboard_event_scan::$28 ] : zp ZP_BYTE:50 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:51 [ keyboard_event_pressed::$0 ] : zp ZP_BYTE:51 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:52 [ keyboard_event_pressed::row_bits#0 ] : zp ZP_BYTE:52 , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:53 [ keyboard_event_pressed::$1 ] : zp ZP_BYTE:53 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:54 [ keyboard_event_pressed::return#10 ] : zp ZP_BYTE:54 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:55 [ keyboard_matrix_read::return#0 ] : zp ZP_BYTE:55 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:56 [ form_field_ptr::y#0 ] : zp ZP_BYTE:56 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_WORD:57 [ form_field_ptr::$2 ] : zp ZP_WORD:57 ,
+Potential registers zp ZP_BYTE:59 [ form_field_ptr::x#0 ] : zp ZP_BYTE:59 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_WORD:60 [ form_field_ptr::return#0 ] : zp ZP_WORD:60 ,
+Potential registers zp ZP_WORD:62 [ form_field_ptr::return#2 ] : zp ZP_WORD:62 ,
+Potential registers zp ZP_WORD:64 [ form_render_values::field#0 ] : zp ZP_WORD:64 ,
+Potential registers zp ZP_BYTE:66 [ form_set_screen::$0 ] : zp ZP_BYTE:66 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:67 [ form_set_screen::$1 ] : zp ZP_BYTE:67 , reg byte a , reg byte x , reg byte y ,
+Potential registers zp ZP_BYTE:68 [ print_str_lines::ch#0 ] : zp ZP_BYTE:68 , reg byte a , reg byte x ,
+Potential registers zp ZP_WORD:69 [ print_cls::$0 ] : zp ZP_WORD:69 ,
REGISTER UPLIFT SCOPES
-Uplift Scope [] 3,703: zp ZP_WORD:15 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#63 print_char_cursor#64 print_char_cursor#38 print_char_cursor#1 ] 2,659.38: zp ZP_WORD:17 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] 49.97: zp ZP_BYTE:2 [ form_cursor_count#1 form_cursor_count#13 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] 49.63: 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 ] 42.57: zp ZP_BYTE:3 [ key_down_debounce#1 key_down_debounce#11 key_down_debounce#13 key_down_debounce#20 key_down_debounce#23 ] 39.88: zp ZP_BYTE:5 [ key_right_debounce#1 key_right_debounce#11 key_right_debounce#13 key_right_debounce#21 ]
-Uplift Scope [print_str_lines] 1,939.17: zp ZP_WORD:13 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] 667.33: zp ZP_BYTE:55 [ print_str_lines::ch#0 ]
-Uplift Scope [form_set_screen] 218.83: zp ZP_BYTE:12 [ form_set_screen::y#2 form_set_screen::y#1 ] 202: zp ZP_BYTE:53 [ form_set_screen::$0 ] 202: zp ZP_BYTE:54 [ form_set_screen::$1 ] 148.13: zp ZP_WORD:10 [ form_set_screen::line#2 form_set_screen::line#1 ]
-Uplift Scope [form_field_ptr] 241.67: zp ZP_BYTE:8 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] 202: zp ZP_WORD:49 [ form_field_ptr::return#2 ] 26.25: zp ZP_WORD:47 [ form_field_ptr::return#0 ] 6: zp ZP_BYTE:43 [ form_field_ptr::y#0 ] 4: zp ZP_WORD:21 [ form_field_ptr::return#3 ] 4: zp ZP_BYTE:46 [ form_field_ptr::x#0 ] 1: zp ZP_WORD:44 [ form_field_ptr::$2 ]
-Uplift Scope [print_cls] 257.5: zp ZP_WORD:19 [ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ] 202: zp ZP_WORD:56 [ print_cls::$0 ]
-Uplift Scope [form_render_values] 218.83: zp ZP_BYTE:9 [ form_render_values::idx#2 form_render_values::idx#1 ] 202: zp ZP_WORD:51 [ form_render_values::field#0 ]
-Uplift Scope [menu] 353.5: zp ZP_BYTE:6 [ menu::i#2 menu::i#1 ]
-Uplift Scope [keyboard_key_pressed] 4: zp ZP_BYTE:26 [ keyboard_key_pressed::return#2 ] 4: zp ZP_BYTE:29 [ keyboard_key_pressed::return#4 ] 4: zp ZP_BYTE:31 [ keyboard_key_pressed::return#3 ] 4: zp ZP_BYTE:33 [ keyboard_key_pressed::return#10 ] 4: zp ZP_BYTE:37 [ keyboard_key_pressed::rowidx#0 ] 4: zp ZP_BYTE:40 [ keyboard_key_pressed::$2 ] 2: zp ZP_BYTE:7 [ keyboard_key_pressed::key#4 ] 1.67: zp ZP_BYTE:41 [ keyboard_key_pressed::return#0 ] 0.67: zp ZP_BYTE:36 [ keyboard_key_pressed::colidx#0 ]
-Uplift Scope [form_control] 4: zp ZP_BYTE:25 [ form_control::$6 ] 4: zp ZP_BYTE:28 [ form_control::$13 ] 4: zp ZP_BYTE:30 [ form_control::$14 ] 4: zp ZP_BYTE:34 [ form_control::$28 ] 4: zp ZP_BYTE:35 [ form_control::$7 ] 2.67: zp ZP_BYTE:27 [ form_control::key_down#0 ] 2.67: zp ZP_BYTE:32 [ form_control::key_right#0 ] 0.44: zp ZP_WORD:23 [ form_control::field#0 ]
-Uplift Scope [keyboard_matrix_read] 4: zp ZP_BYTE:38 [ keyboard_matrix_read::rowid#0 ] 4: zp ZP_BYTE:39 [ keyboard_matrix_read::return#2 ] 1.33: zp ZP_BYTE:42 [ keyboard_matrix_read::return#0 ]
+Uplift Scope [keyboard_event_scan] 20,002: zp ZP_BYTE:39 [ keyboard_event_scan::$3 ] 20,002: zp ZP_BYTE:40 [ keyboard_event_scan::$4 ] 20,002: zp ZP_BYTE:41 [ keyboard_event_scan::event_type#0 ] 20,002: zp ZP_BYTE:42 [ keyboard_event_scan::$12 ] 17,858.93: zp ZP_BYTE:8 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] 11,908.48: zp ZP_BYTE:9 [ 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 ] 2,101.74: zp ZP_BYTE:7 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] 1,278.06: zp ZP_BYTE:38 [ keyboard_event_scan::row_scan#0 ] 4: zp ZP_BYTE:44 [ keyboard_event_scan::$16 ] 4: zp ZP_BYTE:46 [ keyboard_event_scan::$20 ] 4: zp ZP_BYTE:48 [ keyboard_event_scan::$24 ] 4: zp ZP_BYTE:50 [ keyboard_event_scan::$28 ]
+Uplift Scope [] 58,841.83: zp ZP_BYTE:10 [ keyboard_events_size#14 keyboard_events_size#43 keyboard_events_size#22 keyboard_events_size#24 keyboard_events_size#20 keyboard_events_size#4 keyboard_events_size#17 keyboard_events_size#44 keyboard_events_size#2 keyboard_events_size#1 ] 3,703: zp ZP_WORD:19 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#64 print_char_cursor#65 print_char_cursor#38 print_char_cursor#1 ] 2,659.38: zp ZP_WORD:21 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] 49.71: zp ZP_BYTE:4 [ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#30 form_field_idx#40 form_field_idx#41 ] 49.34: zp ZP_BYTE:2 [ form_cursor_count#1 form_cursor_count#13 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ] 48.3: zp ZP_BYTE:3 [ keyboard_modifiers#20 keyboard_modifiers#10 keyboard_modifiers#18 keyboard_modifiers#17 keyboard_modifiers#4 keyboard_modifiers#16 keyboard_modifiers#3 keyboard_modifiers#15 keyboard_modifiers#5 ]
+Uplift Scope [keyboard_matrix_read] 2,002: zp ZP_BYTE:37 [ keyboard_matrix_read::return#2 ] 1,003: zp ZP_BYTE:36 [ keyboard_matrix_read::rowid#0 ] 334.33: zp ZP_BYTE:55 [ keyboard_matrix_read::return#0 ]
+Uplift Scope [print_str_lines] 1,939.17: zp ZP_WORD:17 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] 667.33: zp ZP_BYTE:68 [ print_str_lines::ch#0 ]
+Uplift Scope [form_set_screen] 218.83: zp ZP_BYTE:16 [ form_set_screen::y#2 form_set_screen::y#1 ] 202: zp ZP_BYTE:66 [ form_set_screen::$0 ] 202: zp ZP_BYTE:67 [ form_set_screen::$1 ] 148.13: zp ZP_WORD:14 [ form_set_screen::line#2 form_set_screen::line#1 ]
+Uplift Scope [form_field_ptr] 241.67: zp ZP_BYTE:12 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] 202: zp ZP_WORD:62 [ form_field_ptr::return#2 ] 26.25: zp ZP_WORD:60 [ form_field_ptr::return#0 ] 6: zp ZP_BYTE:56 [ form_field_ptr::y#0 ] 4: zp ZP_WORD:25 [ form_field_ptr::return#3 ] 4: zp ZP_BYTE:59 [ form_field_ptr::x#0 ] 1: zp ZP_WORD:57 [ form_field_ptr::$2 ]
+Uplift Scope [print_cls] 257.5: zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ] 202: zp ZP_WORD:69 [ print_cls::$0 ]
+Uplift Scope [form_render_values] 218.83: zp ZP_BYTE:13 [ form_render_values::idx#2 form_render_values::idx#1 ] 202: zp ZP_WORD:64 [ form_render_values::field#0 ]
+Uplift Scope [menu] 353.5: zp ZP_BYTE:5 [ menu::i#2 menu::i#1 ]
+Uplift Scope [keyboard_event_pressed] 4: zp ZP_BYTE:43 [ keyboard_event_pressed::return#0 ] 4: zp ZP_BYTE:45 [ keyboard_event_pressed::return#1 ] 4: zp ZP_BYTE:47 [ keyboard_event_pressed::return#2 ] 4: zp ZP_BYTE:49 [ keyboard_event_pressed::return#3 ] 4: zp ZP_BYTE:51 [ keyboard_event_pressed::$0 ] 4: zp ZP_BYTE:53 [ keyboard_event_pressed::$1 ] 2: zp ZP_BYTE:52 [ keyboard_event_pressed::row_bits#0 ] 1.67: zp ZP_BYTE:54 [ keyboard_event_pressed::return#10 ] 1.33: zp ZP_BYTE:11 [ keyboard_event_pressed::keycode#4 ]
+Uplift Scope [form_control] 4: zp ZP_BYTE:29 [ form_control::$6 ] 4: zp ZP_BYTE:32 [ form_control::$12 ] 4: zp ZP_BYTE:33 [ form_control::$13 ] 4: zp ZP_BYTE:34 [ form_control::$24 ] 4: zp ZP_BYTE:35 [ form_control::$7 ] 3: zp ZP_BYTE:31 [ form_control::key_event#0 ] 0.59: zp ZP_WORD:27 [ form_control::field#0 ]
+Uplift Scope [keyboard_event_get] 5.33: zp ZP_BYTE:6 [ keyboard_event_get::return#2 keyboard_event_get::return#0 ] 4: zp ZP_BYTE:30 [ keyboard_event_get::return#3 ]
Uplift Scope [print_ln]
Uplift Scope [print_set_screen]
Uplift Scope [main]
-Uplifting [] best 156326 combination zp ZP_WORD:15 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#63 print_char_cursor#64 print_char_cursor#38 print_char_cursor#1 ] zp ZP_WORD:17 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] 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: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:3 [ key_down_debounce#1 key_down_debounce#11 key_down_debounce#13 key_down_debounce#20 key_down_debounce#23 ] zp ZP_BYTE:5 [ key_right_debounce#1 key_right_debounce#11 key_right_debounce#13 key_right_debounce#21 ]
-Uplifting [print_str_lines] best 144326 combination zp ZP_WORD:13 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] reg byte a [ print_str_lines::ch#0 ]
-Uplifting [form_set_screen] best 141626 combination reg byte x [ form_set_screen::y#2 form_set_screen::y#1 ] reg byte a [ form_set_screen::$0 ] reg byte a [ form_set_screen::$1 ] zp ZP_WORD:10 [ form_set_screen::line#2 form_set_screen::line#1 ]
-Uplifting [form_field_ptr] best 141305 combination reg byte x [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] zp ZP_WORD:49 [ form_field_ptr::return#2 ] zp ZP_WORD:47 [ form_field_ptr::return#0 ] reg byte y [ form_field_ptr::y#0 ] zp ZP_WORD:21 [ form_field_ptr::return#3 ] reg byte a [ form_field_ptr::x#0 ] zp ZP_WORD:44 [ form_field_ptr::$2 ]
-Uplifting [print_cls] best 141305 combination zp ZP_WORD:19 [ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ] zp ZP_WORD:56 [ print_cls::$0 ]
-Uplifting [form_render_values] best 139805 combination reg byte x [ form_render_values::idx#2 form_render_values::idx#1 ] zp ZP_WORD:51 [ form_render_values::field#0 ]
-Uplifting [menu] best 138605 combination reg byte x [ menu::i#2 menu::i#1 ]
-Uplifting [keyboard_key_pressed] best 138581 combination reg byte a [ keyboard_key_pressed::return#2 ] reg byte a [ keyboard_key_pressed::return#4 ] reg byte a [ keyboard_key_pressed::return#3 ] reg byte a [ keyboard_key_pressed::return#10 ] zp ZP_BYTE:37 [ keyboard_key_pressed::rowidx#0 ] zp ZP_BYTE:40 [ keyboard_key_pressed::$2 ] zp ZP_BYTE:7 [ keyboard_key_pressed::key#4 ] zp ZP_BYTE:41 [ keyboard_key_pressed::return#0 ] zp ZP_BYTE:36 [ keyboard_key_pressed::colidx#0 ]
-Limited combination testing to 100 combinations of 147456 possible.
-Uplifting [form_control] best 138561 combination reg byte a [ form_control::$6 ] reg byte a [ form_control::$13 ] reg byte a [ form_control::$14 ] reg byte a [ form_control::$28 ] zp ZP_BYTE:35 [ form_control::$7 ] zp ZP_BYTE:27 [ form_control::key_down#0 ] zp ZP_BYTE:32 [ form_control::key_right#0 ] zp ZP_WORD:23 [ form_control::field#0 ]
-Limited combination testing to 100 combinations of 16384 possible.
-Uplifting [keyboard_matrix_read] best 138543 combination reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#2 ] reg byte a [ keyboard_matrix_read::return#0 ]
-Uplifting [print_ln] best 138543 combination
-Uplifting [print_set_screen] best 138543 combination
-Uplifting [main] best 138543 combination
+Uplifting [keyboard_event_scan] best 1506949 combination reg byte a [ keyboard_event_scan::$3 ] reg byte a [ keyboard_event_scan::$4 ] reg byte a [ keyboard_event_scan::event_type#0 ] reg byte a [ keyboard_event_scan::$12 ] zp ZP_BYTE:8 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ] zp ZP_BYTE:9 [ 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 ] zp ZP_BYTE:7 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] zp ZP_BYTE:38 [ keyboard_event_scan::row_scan#0 ] zp ZP_BYTE:44 [ keyboard_event_scan::$16 ] zp ZP_BYTE:46 [ keyboard_event_scan::$20 ] zp ZP_BYTE:48 [ keyboard_event_scan::$24 ] zp ZP_BYTE:50 [ keyboard_event_scan::$28 ]
+Limited combination testing to 100 combinations of 1048576 possible.
+Uplifting [] best 1506949 combination zp ZP_BYTE:10 [ keyboard_events_size#14 keyboard_events_size#43 keyboard_events_size#22 keyboard_events_size#24 keyboard_events_size#20 keyboard_events_size#4 keyboard_events_size#17 keyboard_events_size#44 keyboard_events_size#2 keyboard_events_size#1 ] zp ZP_WORD:19 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#64 print_char_cursor#65 print_char_cursor#38 print_char_cursor#1 ] zp ZP_WORD:21 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ] zp ZP_BYTE:4 [ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#30 form_field_idx#40 form_field_idx#41 ] 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 [ keyboard_modifiers#20 keyboard_modifiers#10 keyboard_modifiers#18 keyboard_modifiers#17 keyboard_modifiers#4 keyboard_modifiers#16 keyboard_modifiers#3 keyboard_modifiers#15 keyboard_modifiers#5 ]
+Uplifting [keyboard_matrix_read] best 1494943 combination reg byte a [ keyboard_matrix_read::return#2 ] reg byte x [ keyboard_matrix_read::rowid#0 ] reg byte a [ keyboard_matrix_read::return#0 ]
+Uplifting [print_str_lines] best 1482943 combination zp ZP_WORD:17 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] reg byte a [ print_str_lines::ch#0 ]
+Uplifting [form_set_screen] best 1480243 combination reg byte x [ form_set_screen::y#2 form_set_screen::y#1 ] reg byte a [ form_set_screen::$0 ] reg byte a [ form_set_screen::$1 ] zp ZP_WORD:14 [ form_set_screen::line#2 form_set_screen::line#1 ]
+Uplifting [form_field_ptr] best 1479922 combination reg byte x [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] zp ZP_WORD:62 [ form_field_ptr::return#2 ] zp ZP_WORD:60 [ form_field_ptr::return#0 ] reg byte y [ form_field_ptr::y#0 ] zp ZP_WORD:25 [ form_field_ptr::return#3 ] reg byte a [ form_field_ptr::x#0 ] zp ZP_WORD:57 [ form_field_ptr::$2 ]
+Uplifting [print_cls] best 1479922 combination zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ] zp ZP_WORD:69 [ print_cls::$0 ]
+Uplifting [form_render_values] best 1478422 combination reg byte x [ form_render_values::idx#2 form_render_values::idx#1 ] zp ZP_WORD:64 [ form_render_values::field#0 ]
+Uplifting [menu] best 1477222 combination reg byte x [ menu::i#2 menu::i#1 ]
+Uplifting [keyboard_event_pressed] best 1477198 combination reg byte a [ keyboard_event_pressed::return#0 ] reg byte a [ keyboard_event_pressed::return#1 ] reg byte a [ keyboard_event_pressed::return#2 ] reg byte a [ keyboard_event_pressed::return#3 ] zp ZP_BYTE:51 [ keyboard_event_pressed::$0 ] zp ZP_BYTE:53 [ keyboard_event_pressed::$1 ] zp ZP_BYTE:52 [ keyboard_event_pressed::row_bits#0 ] zp ZP_BYTE:54 [ keyboard_event_pressed::return#10 ] zp ZP_BYTE:11 [ keyboard_event_pressed::keycode#4 ]
+Limited combination testing to 100 combinations of 196608 possible.
+Uplifting [form_control] best 1477178 combination reg byte a [ form_control::$6 ] reg byte a [ form_control::$12 ] reg byte a [ form_control::$13 ] reg byte a [ form_control::$24 ] zp ZP_BYTE:35 [ form_control::$7 ] zp ZP_BYTE:31 [ form_control::key_event#0 ] zp ZP_WORD:27 [ form_control::field#0 ]
+Limited combination testing to 100 combinations of 4096 possible.
+Uplifting [keyboard_event_get] best 1477163 combination reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#0 ] reg byte a [ keyboard_event_get::return#3 ]
+Uplifting [print_ln] best 1477163 combination
+Uplifting [print_set_screen] best 1477163 combination
+Uplifting [main] best 1477163 combination
+Attempting to uplift remaining variables inzp ZP_BYTE:10 [ keyboard_events_size#14 keyboard_events_size#43 keyboard_events_size#22 keyboard_events_size#24 keyboard_events_size#20 keyboard_events_size#4 keyboard_events_size#17 keyboard_events_size#44 keyboard_events_size#2 keyboard_events_size#1 ]
+Uplifting [] best 1477163 combination zp ZP_BYTE:10 [ keyboard_events_size#14 keyboard_events_size#43 keyboard_events_size#22 keyboard_events_size#24 keyboard_events_size#20 keyboard_events_size#4 keyboard_events_size#17 keyboard_events_size#44 keyboard_events_size#2 keyboard_events_size#1 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:8 [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
+Uplifting [keyboard_event_scan] best 1327163 combination reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:9 [ 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 ]
+Uplifting [keyboard_event_scan] best 1327163 combination zp ZP_BYTE:9 [ 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 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:7 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
+Uplifting [keyboard_event_scan] best 1327163 combination zp ZP_BYTE:7 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:38 [ keyboard_event_scan::row_scan#0 ]
+Uplifting [keyboard_event_scan] best 1327163 combination zp ZP_BYTE:38 [ keyboard_event_scan::row_scan#0 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:4 [ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#30 form_field_idx#40 form_field_idx#41 ]
+Uplifting [] best 1327163 combination zp ZP_BYTE:4 [ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#30 form_field_idx#40 form_field_idx#41 ]
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ form_cursor_count#1 form_cursor_count#13 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ]
-Uplifting [] best 138543 combination zp ZP_BYTE:2 [ form_cursor_count#1 form_cursor_count#13 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ]
-Attempting to uplift remaining variables inzp 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 ]
-Uplifting [] best 138543 combination 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 ]
-Attempting to uplift remaining variables inzp ZP_BYTE:3 [ key_down_debounce#1 key_down_debounce#11 key_down_debounce#13 key_down_debounce#20 key_down_debounce#23 ]
-Uplifting [] best 138543 combination zp ZP_BYTE:3 [ key_down_debounce#1 key_down_debounce#11 key_down_debounce#13 key_down_debounce#20 key_down_debounce#23 ]
-Attempting to uplift remaining variables inzp ZP_BYTE:5 [ key_right_debounce#1 key_right_debounce#11 key_right_debounce#13 key_right_debounce#21 ]
-Uplifting [] best 138543 combination zp ZP_BYTE:5 [ key_right_debounce#1 key_right_debounce#11 key_right_debounce#13 key_right_debounce#21 ]
+Uplifting [] best 1327163 combination zp ZP_BYTE:2 [ form_cursor_count#1 form_cursor_count#13 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:3 [ keyboard_modifiers#20 keyboard_modifiers#10 keyboard_modifiers#18 keyboard_modifiers#17 keyboard_modifiers#4 keyboard_modifiers#16 keyboard_modifiers#3 keyboard_modifiers#15 keyboard_modifiers#5 ]
+Uplifting [] best 1327163 combination zp ZP_BYTE:3 [ keyboard_modifiers#20 keyboard_modifiers#10 keyboard_modifiers#18 keyboard_modifiers#17 keyboard_modifiers#4 keyboard_modifiers#16 keyboard_modifiers#3 keyboard_modifiers#15 keyboard_modifiers#5 ]
Attempting to uplift remaining variables inzp ZP_BYTE:35 [ form_control::$7 ]
-Uplifting [form_control] best 138537 combination reg byte a [ form_control::$7 ]
-Attempting to uplift remaining variables inzp ZP_BYTE:37 [ keyboard_key_pressed::rowidx#0 ]
-Uplifting [keyboard_key_pressed] best 138533 combination reg byte a [ keyboard_key_pressed::rowidx#0 ]
-Attempting to uplift remaining variables inzp ZP_BYTE:40 [ keyboard_key_pressed::$2 ]
-Uplifting [keyboard_key_pressed] best 138527 combination reg byte a [ keyboard_key_pressed::$2 ]
-Attempting to uplift remaining variables inzp ZP_BYTE:27 [ form_control::key_down#0 ]
-Uplifting [form_control] best 138517 combination reg byte a [ form_control::key_down#0 ]
-Attempting to uplift remaining variables inzp ZP_BYTE:32 [ form_control::key_right#0 ]
-Uplifting [form_control] best 138507 combination reg byte a [ form_control::key_right#0 ]
-Attempting to uplift remaining variables inzp ZP_BYTE:7 [ keyboard_key_pressed::key#4 ]
-Uplifting [keyboard_key_pressed] best 138493 combination reg byte x [ keyboard_key_pressed::key#4 ]
-Attempting to uplift remaining variables inzp ZP_BYTE:41 [ keyboard_key_pressed::return#0 ]
-Uplifting [keyboard_key_pressed] best 138478 combination reg byte a [ keyboard_key_pressed::return#0 ]
-Attempting to uplift remaining variables inzp ZP_BYTE:36 [ keyboard_key_pressed::colidx#0 ]
-Uplifting [keyboard_key_pressed] best 138474 combination reg byte y [ keyboard_key_pressed::colidx#0 ]
-Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ form_field_ptr::return#3 ] ] with [ zp ZP_WORD:23 [ form_control::field#0 ] ] - score: 1
-Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ form_field_ptr::return#3 form_control::field#0 ] ] with [ zp ZP_WORD:47 [ form_field_ptr::return#0 ] ] - score: 1
-Coalescing zero page register with common assignment [ zp ZP_WORD:49 [ form_field_ptr::return#2 ] ] with [ zp ZP_WORD:51 [ form_render_values::field#0 ] ] - score: 1
-Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ form_field_ptr::return#3 form_control::field#0 form_field_ptr::return#0 ] ] with [ zp ZP_WORD:44 [ form_field_ptr::$2 ] ] - score: 1
-Coalescing zero page register with common assignment [ zp ZP_WORD:21 [ form_field_ptr::return#3 form_control::field#0 form_field_ptr::return#0 form_field_ptr::$2 ] ] with [ zp ZP_WORD:49 [ form_field_ptr::return#2 form_render_values::field#0 ] ] - score: 1
-Coalescing zero page register [ zp ZP_WORD:10 [ form_set_screen::line#2 form_set_screen::line#1 ] ] with [ zp ZP_WORD:13 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] ]
-Coalescing zero page register [ zp ZP_WORD:10 [ 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 ] ] with [ zp ZP_WORD:19 [ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ] ]
-Coalescing zero page register [ zp ZP_WORD:10 [ 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 ] ] with [ zp ZP_WORD:21 [ 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 ] ]
-Coalescing zero page register [ zp ZP_WORD:15 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#63 print_char_cursor#64 print_char_cursor#38 print_char_cursor#1 ] ] with [ zp ZP_WORD:56 [ print_cls::$0 ] ]
-Allocated (was zp ZP_WORD:10) zp ZP_WORD:6 [ 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 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 ]
-Allocated (was zp ZP_WORD:15) zp ZP_WORD:8 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#63 print_char_cursor#64 print_char_cursor#38 print_char_cursor#1 print_cls::$0 ]
-Allocated (was zp ZP_WORD:17) zp ZP_WORD:10 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ]
+Uplifting [form_control] best 1327157 combination reg byte a [ form_control::$7 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:44 [ keyboard_event_scan::$16 ]
+Uplifting [keyboard_event_scan] best 1327153 combination reg byte a [ keyboard_event_scan::$16 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:46 [ keyboard_event_scan::$20 ]
+Uplifting [keyboard_event_scan] best 1327149 combination reg byte a [ keyboard_event_scan::$20 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:48 [ keyboard_event_scan::$24 ]
+Uplifting [keyboard_event_scan] best 1327145 combination reg byte a [ keyboard_event_scan::$24 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:50 [ keyboard_event_scan::$28 ]
+Uplifting [keyboard_event_scan] best 1327141 combination reg byte a [ keyboard_event_scan::$28 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:51 [ keyboard_event_pressed::$0 ]
+Uplifting [keyboard_event_pressed] best 1327137 combination reg byte a [ keyboard_event_pressed::$0 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:53 [ keyboard_event_pressed::$1 ]
+Uplifting [keyboard_event_pressed] best 1327133 combination reg byte a [ keyboard_event_pressed::$1 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:31 [ form_control::key_event#0 ]
+Uplifting [form_control] best 1327124 combination reg byte a [ form_control::key_event#0 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:52 [ keyboard_event_pressed::row_bits#0 ]
+Uplifting [keyboard_event_pressed] best 1327120 combination reg byte y [ keyboard_event_pressed::row_bits#0 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:54 [ keyboard_event_pressed::return#10 ]
+Uplifting [keyboard_event_pressed] best 1327105 combination reg byte a [ keyboard_event_pressed::return#10 ]
+Attempting to uplift remaining variables inzp ZP_BYTE:11 [ keyboard_event_pressed::keycode#4 ]
+Uplifting [keyboard_event_pressed] best 1327105 combination zp ZP_BYTE:11 [ keyboard_event_pressed::keycode#4 ]
+Coalescing zero page register with common assignment [ zp ZP_WORD:25 [ form_field_ptr::return#3 ] ] with [ zp ZP_WORD:27 [ form_control::field#0 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:25 [ form_field_ptr::return#3 form_control::field#0 ] ] with [ zp ZP_WORD:60 [ form_field_ptr::return#0 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:62 [ form_field_ptr::return#2 ] ] with [ zp ZP_WORD:64 [ form_render_values::field#0 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:25 [ form_field_ptr::return#3 form_control::field#0 form_field_ptr::return#0 ] ] with [ zp ZP_WORD:57 [ form_field_ptr::$2 ] ] - score: 1
+Coalescing zero page register with common assignment [ zp ZP_WORD:25 [ form_field_ptr::return#3 form_control::field#0 form_field_ptr::return#0 form_field_ptr::$2 ] ] with [ zp ZP_WORD:62 [ form_field_ptr::return#2 form_render_values::field#0 ] ] - score: 1
+Coalescing zero page register [ zp ZP_BYTE:3 [ keyboard_modifiers#20 keyboard_modifiers#10 keyboard_modifiers#18 keyboard_modifiers#17 keyboard_modifiers#4 keyboard_modifiers#16 keyboard_modifiers#3 keyboard_modifiers#15 keyboard_modifiers#5 ] ] with [ zp ZP_BYTE:7 [ keyboard_event_scan::row#2 keyboard_event_scan::row#1 ] ]
+Coalescing zero page register [ zp ZP_BYTE:9 [ 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 ] ] with [ zp ZP_BYTE:11 [ keyboard_event_pressed::keycode#4 ] ]
+Coalescing zero page register [ zp ZP_WORD:14 [ form_set_screen::line#2 form_set_screen::line#1 ] ] with [ zp ZP_WORD:17 [ print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ] ]
+Coalescing zero page register [ zp ZP_WORD:14 [ 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 ] ] with [ zp ZP_WORD:23 [ print_cls::sc#2 print_cls::sc#0 print_cls::sc#1 ] ]
+Coalescing zero page register [ zp ZP_WORD:14 [ 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 ] ] with [ zp ZP_WORD:25 [ 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 ] ]
+Coalescing zero page register [ zp ZP_WORD:19 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#64 print_char_cursor#65 print_char_cursor#38 print_char_cursor#1 ] ] with [ zp ZP_WORD:69 [ print_cls::$0 ] ]
+Allocated (was zp ZP_BYTE:9) 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::keycode#4 ]
+Allocated (was zp ZP_BYTE:10) zp ZP_BYTE:6 [ keyboard_events_size#14 keyboard_events_size#43 keyboard_events_size#22 keyboard_events_size#24 keyboard_events_size#20 keyboard_events_size#4 keyboard_events_size#17 keyboard_events_size#44 keyboard_events_size#2 keyboard_events_size#1 ]
+Allocated (was zp ZP_WORD:14) 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 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 ]
+Allocated (was zp ZP_WORD:19) zp ZP_WORD:9 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#64 print_char_cursor#65 print_char_cursor#38 print_char_cursor#1 print_cls::$0 ]
+Allocated (was zp ZP_WORD:21) zp ZP_WORD:11 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ]
+Allocated (was zp ZP_BYTE:38) zp ZP_BYTE:13 [ keyboard_event_scan::row_scan#0 ]
ASSEMBLER BEFORE OPTIMIZATION
//SEG0 Basic Upstart
@@ -8060,26 +9706,34 @@ ASSEMBLER BEFORE OPTIMIZATION
.label DTV_GRAPHICS_VIC_BANK = $d03d
.const KEY_CRSR_RIGHT = 2
.const KEY_CRSR_DOWN = 7
+ .const KEY_LSHIFT = $f
.const KEY_RSHIFT = $34
+ .const KEY_CTRL = $3a
+ .const KEY_COMMODORE = $3d
+ .const KEY_MODIFIER_LSHIFT = 1
+ .const KEY_MODIFIER_RSHIFT = 2
+ .const KEY_MODIFIER_CTRL = 4
+ .const KEY_MODIFIER_COMMODORE = 8
.const form_fields_cnt = $23
.const FORM_CURSOR_BLINK = $28
- .label print_char_cursor = 8
- .label print_line_cursor = $a
+ .const KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT
+ .label print_char_cursor = 9
+ .label print_line_cursor = $b
+ .label keyboard_events_size = 6
+ .label keyboard_modifiers = 3
.label form_cursor_count = 2
- .label key_down_debounce = 3
.label form_field_idx = 4
- .label key_right_debounce = 5
//SEG2 @begin
bbegin:
-//SEG3 [1] phi from @begin to @25 [phi:@begin->@25]
-b25_from_bbegin:
- jmp b25
-//SEG4 @25
-b25:
+//SEG3 [1] phi from @begin to @28 [phi:@begin->@28]
+b28_from_bbegin:
+ jmp b28
+//SEG4 @28
+b28:
//SEG5 [2] call main param-assignment [ ] ( )
jsr main
-//SEG6 [3] phi from @25 to @end [phi:@25->@end]
-bend_from_b25:
+//SEG6 [3] phi from @28 to @end [phi:@28->@end]
+bend_from_b28:
jmp bend
//SEG7 @end
bend:
@@ -8092,22 +9746,22 @@ main: {
sta DTV_FEATURE
//SEG11 [6] phi from main to main::@1 [phi:main->main::@1]
b1_from_main:
- //SEG12 [6] phi (byte) key_right_debounce#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
- lda #0
- sta key_right_debounce
- //SEG13 [6] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1
+ //SEG12 [6] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
lda #0
sta form_field_idx
- //SEG14 [6] phi (byte) key_down_debounce#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1
+ //SEG13 [6] phi (byte) keyboard_modifiers#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1
lda #0
- sta key_down_debounce
+ sta keyboard_modifiers
+ //SEG14 [6] phi (byte) keyboard_events_size#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1
+ lda #0
+ sta keyboard_events_size
//SEG15 [6] phi (signed byte) form_cursor_count#1 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#3] -- vbsz1=vbuc1
lda #FORM_CURSOR_BLINK/2
sta form_cursor_count
jmp b1
//SEG16 main::@1
b1:
- //SEG17 [7] if(true) goto main::@2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- true_then_la1
+ //SEG17 [7] if(true) goto main::@2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- true_then_la1
jmp b2_from_b1
jmp breturn
//SEG18 main::@return
@@ -8119,13 +9773,13 @@ main: {
jmp b2
//SEG21 main::@2
b2:
- //SEG22 [10] call menu param-assignment [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
+ //SEG22 [10] call menu param-assignment [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
jsr menu
//SEG23 [6] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
b1_from_b2:
- //SEG24 [6] phi (byte) key_right_debounce#1 = (byte) key_right_debounce#11 [phi:main::@2->main::@1#0] -- register_copy
- //SEG25 [6] phi (byte) form_field_idx#1 = (byte) form_field_idx#14 [phi:main::@2->main::@1#1] -- register_copy
- //SEG26 [6] phi (byte) key_down_debounce#1 = (byte) key_down_debounce#11 [phi:main::@2->main::@1#2] -- register_copy
+ //SEG24 [6] phi (byte) form_field_idx#1 = (byte) form_field_idx#14 [phi:main::@2->main::@1#0] -- register_copy
+ //SEG25 [6] phi (byte) keyboard_modifiers#20 = (byte) keyboard_modifiers#10 [phi:main::@2->main::@1#1] -- register_copy
+ //SEG26 [6] phi (byte) keyboard_events_size#22 = (byte) keyboard_events_size#24 [phi:main::@2->main::@1#2] -- register_copy
//SEG27 [6] phi (signed byte) form_cursor_count#1 = (signed byte) form_cursor_count#13 [phi:main::@2->main::@1#3] -- register_copy
jmp b1
}
@@ -8133,31 +9787,31 @@ main: {
menu: {
.label SCREEN = $8000
.label CHARSET = $9800
- //SEG29 [11] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG29 [11] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #($ffffffff&CHARSET)/$10000
sta DTV_GRAPHICS_VIC_BANK
- //SEG30 [12] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG30 [12] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #DTV_COLOR_BANK_DEFAULT/$400
sta DTV_COLOR_BANK_LO
- //SEG31 [13] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG31 [13] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #0
sta DTV_COLOR_BANK_HI
- //SEG32 [14] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG32 [14] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #0
sta DTV_CONTROL
- //SEG33 [15] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG33 [15] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #3
sta CIA2_PORT_A_DDR
- //SEG34 [16] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG34 [16] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #3^CHARSET/$4000
sta CIA2_PORT_A
- //SEG35 [17] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG35 [17] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #VIC_DEN|VIC_RSEL|3
sta VIC_CONTROL
- //SEG36 [18] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG36 [18] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #VIC_CSEL
sta VIC_CONTROL2
- //SEG37 [19] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG37 [19] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400
sta VIC_MEMORY
//SEG38 [20] phi from menu to menu::@1 [phi:menu->menu::@1]
@@ -8171,27 +9825,27 @@ menu: {
jmp b1
//SEG42 menu::@1
b1:
- //SEG43 [21] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
+ //SEG43 [21] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
lda DTV_PALETTE_DEFAULT,x
sta DTV_PALETTE,x
- //SEG44 [22] (byte) menu::i#1 ← ++ (byte) menu::i#2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ) -- vbuxx=_inc_vbuxx
+ //SEG44 [22] (byte) menu::i#1 ← ++ (byte) menu::i#2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ) -- vbuxx=_inc_vbuxx
inx
- //SEG45 [23] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1
+ //SEG45 [23] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1
cpx #$10
bne b1_from_b1
jmp b8
//SEG46 menu::@8
b8:
- //SEG47 [24] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG47 [24] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #0
sta BGCOL
- //SEG48 [25] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG48 [25] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #0
sta BORDERCOL
- //SEG49 [26] call print_set_screen param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
- //SEG50 [167] phi from menu::@8 to print_set_screen [phi:menu::@8->print_set_screen]
+ //SEG49 [26] call print_set_screen param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
+ //SEG50 [212] phi from menu::@8 to print_set_screen [phi:menu::@8->print_set_screen]
print_set_screen_from_b8:
- //SEG51 [167] phi (byte*) print_set_screen::screen#2 = (const byte*) COLS#0 [phi:menu::@8->print_set_screen#0] -- pbuz1=pbuc1
+ //SEG51 [212] phi (byte*) print_set_screen::screen#2 = (const byte*) COLS#0 [phi:menu::@8->print_set_screen#0] -- pbuz1=pbuc1
lda #COLS
@@ -8202,17 +9856,17 @@ menu: {
jmp b15
//SEG53 menu::@15
b15:
- //SEG54 [28] call print_cls param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ //SEG54 [28] call print_cls param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
jsr print_cls
//SEG55 [29] phi from menu::@15 to menu::@16 [phi:menu::@15->menu::@16]
b16_from_b15:
jmp b16
//SEG56 menu::@16
b16:
- //SEG57 [30] call print_str_lines param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- //SEG58 [139] phi from menu::@16 to print_str_lines [phi:menu::@16->print_str_lines]
+ //SEG57 [30] call print_str_lines param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ //SEG58 [184] phi from menu::@16 to print_str_lines [phi:menu::@16->print_str_lines]
print_str_lines_from_b16:
- //SEG59 [139] phi (byte*) print_str_lines::str#5 = (const string) MENU_COLS#0 [phi:menu::@16->print_str_lines#0] -- pbuz1=pbuc1
+ //SEG59 [184] phi (byte*) print_str_lines::str#5 = (const string) MENU_COLS#0 [phi:menu::@16->print_str_lines#0] -- pbuz1=pbuc1
lda #MENU_COLS
@@ -8223,10 +9877,10 @@ menu: {
jmp b17
//SEG61 menu::@17
b17:
- //SEG62 [32] call print_set_screen param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
- //SEG63 [167] phi from menu::@17 to print_set_screen [phi:menu::@17->print_set_screen]
+ //SEG62 [32] call print_set_screen param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
+ //SEG63 [212] phi from menu::@17 to print_set_screen [phi:menu::@17->print_set_screen]
print_set_screen_from_b17:
- //SEG64 [167] phi (byte*) print_set_screen::screen#2 = (const byte*) menu::SCREEN#0 [phi:menu::@17->print_set_screen#0] -- pbuz1=pbuc1
+ //SEG64 [212] phi (byte*) print_set_screen::screen#2 = (const byte*) menu::SCREEN#0 [phi:menu::@17->print_set_screen#0] -- pbuz1=pbuc1
lda #SCREEN
@@ -8237,17 +9891,17 @@ menu: {
jmp b18
//SEG66 menu::@18
b18:
- //SEG67 [34] call print_cls param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ //SEG67 [34] call print_cls param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
jsr print_cls
//SEG68 [35] phi from menu::@18 to menu::@19 [phi:menu::@18->menu::@19]
b19_from_b18:
jmp b19
//SEG69 menu::@19
b19:
- //SEG70 [36] call print_str_lines param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- //SEG71 [139] phi from menu::@19 to print_str_lines [phi:menu::@19->print_str_lines]
+ //SEG70 [36] call print_str_lines param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ //SEG71 [184] phi from menu::@19 to print_str_lines [phi:menu::@19->print_str_lines]
print_str_lines_from_b19:
- //SEG72 [139] phi (byte*) print_str_lines::str#5 = (const string) MENU_TEXT#0 [phi:menu::@19->print_str_lines#0] -- pbuz1=pbuc1
+ //SEG72 [184] phi (byte*) print_str_lines::str#5 = (const string) MENU_TEXT#0 [phi:menu::@19->print_str_lines#0] -- pbuz1=pbuc1
lda #MENU_TEXT
@@ -8258,8 +9912,8 @@ menu: {
jmp b20
//SEG74 menu::@20
b20:
- //SEG75 [38] call form_set_screen param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- //SEG76 [129] phi from menu::@20 to form_set_screen [phi:menu::@20->form_set_screen]
+ //SEG75 [38] call form_set_screen param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ //SEG76 [174] phi from menu::@20 to form_set_screen [phi:menu::@20->form_set_screen]
form_set_screen_from_b20:
jsr form_set_screen
//SEG77 [39] phi from menu::@20 to menu::@21 [phi:menu::@20->menu::@21]
@@ -8267,30 +9921,30 @@ menu: {
jmp b21
//SEG78 menu::@21
b21:
- //SEG79 [40] call form_render_values param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- //SEG80 [119] phi from menu::@21 to form_render_values [phi:menu::@21->form_render_values]
+ //SEG79 [40] call form_render_values param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ //SEG80 [164] phi from menu::@21 to form_render_values [phi:menu::@21->form_render_values]
form_render_values_from_b21:
jsr form_render_values
//SEG81 [41] phi from menu::@21 menu::@7 to menu::@2 [phi:menu::@21/menu::@7->menu::@2]
b2_from_b21:
b2_from_b7:
- //SEG82 [41] phi (byte) key_right_debounce#11 = (byte) key_right_debounce#1 [phi:menu::@21/menu::@7->menu::@2#0] -- register_copy
- //SEG83 [41] phi (byte) form_field_idx#14 = (byte) form_field_idx#1 [phi:menu::@21/menu::@7->menu::@2#1] -- register_copy
- //SEG84 [41] phi (byte) key_down_debounce#11 = (byte) key_down_debounce#1 [phi:menu::@21/menu::@7->menu::@2#2] -- register_copy
+ //SEG82 [41] phi (byte) form_field_idx#14 = (byte) form_field_idx#1 [phi:menu::@21/menu::@7->menu::@2#0] -- register_copy
+ //SEG83 [41] phi (byte) keyboard_modifiers#10 = (byte) keyboard_modifiers#20 [phi:menu::@21/menu::@7->menu::@2#1] -- register_copy
+ //SEG84 [41] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#22 [phi:menu::@21/menu::@7->menu::@2#2] -- register_copy
//SEG85 [41] phi (signed byte) form_cursor_count#13 = (signed byte) form_cursor_count#1 [phi:menu::@21/menu::@7->menu::@2#3] -- register_copy
jmp b2
//SEG86 menu::@2
b2:
- //SEG87 [42] if(true) goto menu::@5 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ) -- true_then_la1
+ //SEG87 [42] if(true) goto menu::@5 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ) -- true_then_la1
jmp b5
jmp breturn
//SEG88 menu::@return
breturn:
- //SEG89 [43] return [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
+ //SEG89 [43] return [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
rts
//SEG90 menu::@5
b5:
- //SEG91 [44] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto menu::@5 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
+ //SEG91 [44] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto menu::@5 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
lda RASTER
cmp #$ff
bne b5
@@ -8299,42 +9953,42 @@ menu: {
jmp b7
//SEG93 menu::@7
b7:
- //SEG94 [46] call form_control param-assignment [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
+ //SEG94 [46] call form_control param-assignment [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] ( main:2::menu:10 [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] )
jsr form_control
jmp b2_from_b7
}
//SEG95 form_control
form_control: {
- .label field = 6
- //SEG96 [47] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#1 ] ) -- vbuxx=vbuz1
+ .label field = 7
+ //SEG96 [47] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#14 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#1 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#1 ] ) -- vbuxx=vbuz1
ldx form_field_idx
- //SEG97 [48] 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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#0 ] )
- //SEG98 [113] phi from form_control to form_field_ptr [phi:form_control->form_field_ptr]
+ //SEG97 [48] call form_field_ptr param-assignment [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] )
+ //SEG98 [158] phi from form_control to form_field_ptr [phi:form_control->form_field_ptr]
form_field_ptr_from_form_control:
- //SEG99 [113] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#1 [phi:form_control->form_field_ptr#0] -- register_copy
+ //SEG99 [158] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#1 [phi:form_control->form_field_ptr#0] -- register_copy
jsr form_field_ptr
- //SEG100 [49] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#3 ] )
- // (byte*) form_field_ptr::return#3 = (byte*) form_field_ptr::return#0 // register copy zp ZP_WORD:6
- jmp b32
- //SEG101 form_control::@32
- b32:
- //SEG102 [50] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 ] )
- // (byte*) form_control::field#0 = (byte*) form_field_ptr::return#3 // register copy zp ZP_WORD:6
- //SEG103 [51] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] ) -- vbsz1=_dec_vbsz1
+ //SEG100 [49] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#3 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#3 ] )
+ // (byte*) form_field_ptr::return#3 = (byte*) form_field_ptr::return#0 // register copy zp ZP_WORD:7
+ jmp b28
+ //SEG101 form_control::@28
+ b28:
+ //SEG102 [50] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_control::field#0 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_control::field#0 ] )
+ // (byte*) form_control::field#0 = (byte*) form_field_ptr::return#3 // register copy zp ZP_WORD:7
+ //SEG103 [51] (signed byte) form_cursor_count#5 ← -- (signed byte) form_cursor_count#13 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ) -- vbsz1=_dec_vbsz1
dec form_cursor_count
- //SEG104 [52] 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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] ) -- vbsz1_ge_0_then_la1
+ //SEG104 [52] if((signed byte) form_cursor_count#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@31 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ) -- vbsz1_ge_0_then_la1
lda form_cursor_count
cmp #0
- bpl b37_from_b32
- //SEG105 [53] phi from form_control::@32 to form_control::@1 [phi:form_control::@32->form_control::@1]
- b1_from_b32:
- //SEG106 [53] phi (signed byte) form_cursor_count#15 = (const signed byte) FORM_CURSOR_BLINK#0 [phi:form_control::@32->form_control::@1#0] -- vbsz1=vbsc1
+ bpl b31_from_b28
+ //SEG105 [53] phi from form_control::@28 to form_control::@1 [phi:form_control::@28->form_control::@1]
+ b1_from_b28:
+ //SEG106 [53] phi (signed byte) form_cursor_count#15 = (const signed byte) FORM_CURSOR_BLINK#0 [phi:form_control::@28->form_control::@1#0] -- vbsz1=vbsc1
lda #FORM_CURSOR_BLINK
sta form_cursor_count
jmp b1
//SEG107 form_control::@1
b1:
- //SEG108 [54] 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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ) -- vbsz1_ge_vbuc1_then_la1
+ //SEG108 [54] 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 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ) -- vbsz1_ge_vbuc1_then_la1
lda form_cursor_count
sec
sbc #FORM_CURSOR_BLINK/2
@@ -8342,323 +9996,570 @@ form_control: {
eor #$80
!:
bpl b2
- jmp b17
- //SEG109 form_control::@17
- b17:
- //SEG110 [55] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$6 ] ) -- vbuaa=_deref_pbuz1_bor_vbuc1
+ jmp b15
+ //SEG109 form_control::@15
+ b15:
+ //SEG110 [55] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$6 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$6 ] ) -- vbuaa=_deref_pbuz1_bor_vbuc1
lda #$80
ldy #0
ora (field),y
- //SEG111 [56] *((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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ) -- _deref_pbuz1=vbuaa
+ //SEG111 [56] *((byte*) form_control::field#0) ← (byte/word/dword~) form_control::$6 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ) -- _deref_pbuz1=vbuaa
ldy #0
sta (field),y
- //SEG112 [57] phi from form_control::@17 form_control::@2 to form_control::@3 [phi:form_control::@17/form_control::@2->form_control::@3]
- b3_from_b17:
+ //SEG112 [57] phi from form_control::@15 form_control::@2 to form_control::@3 [phi:form_control::@15/form_control::@2->form_control::@3]
+ b3_from_b15:
b3_from_b2:
jmp b3
//SEG113 form_control::@3
b3:
- //SEG114 [58] 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:46 [ 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 ] )
- //SEG115 [101] phi from form_control::@3 to keyboard_key_pressed [phi:form_control::@3->keyboard_key_pressed]
- keyboard_key_pressed_from_b3:
- //SEG116 [101] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_CRSR_DOWN#0 [phi:form_control::@3->keyboard_key_pressed#0] -- vbuxx=vbuc1
- ldx #KEY_CRSR_DOWN
- jsr keyboard_key_pressed
- //SEG117 [59] (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:46 [ 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 ] )
- // (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#0 // register copy reg byte a
- jmp b33
- //SEG118 form_control::@33
- b33:
- //SEG119 [60] (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:46 [ 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 ] )
- // (byte) form_control::key_down#0 = (byte) keyboard_key_pressed::return#2 // register copy reg byte a
- //SEG120 [61] 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:46 [ 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 ] ) -- vbuaa_eq_vbuz1_then_la1
- cmp key_down_debounce
- beq b4_from_b33
- jmp b19
- //SEG121 form_control::@19
- b19:
- //SEG122 [62] (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:46 [ 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 ] ) -- vbuz1=vbuaa
- sta key_down_debounce
- //SEG123 [63] 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:46 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#23 ] ) -- vbuaa_eq_0_then_la1
- cmp #0
- beq b4_from_b19
- jmp b20
- //SEG124 form_control::@20
- b20:
- //SEG125 [64] (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:46 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 key_down_debounce#23 form_control::$13 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1
+ //SEG114 [58] call keyboard_event_scan param-assignment [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] )
+ //SEG115 [95] phi from form_control::@3 to keyboard_event_scan [phi:form_control::@3->keyboard_event_scan]
+ keyboard_event_scan_from_b3:
+ jsr keyboard_event_scan
+ //SEG116 [59] phi from form_control::@3 to form_control::@29 [phi:form_control::@3->form_control::@29]
+ b29_from_b3:
+ jmp b29
+ //SEG117 form_control::@29
+ b29:
+ //SEG118 [60] call keyboard_event_get param-assignment [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#2 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#2 ] )
+ jsr keyboard_event_get
+ //SEG119 [61] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#3 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#3 ] )
+ // (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#2 // register copy reg byte a
+ jmp b30
+ //SEG120 form_control::@30
+ b30:
+ //SEG121 [62] (byte) form_control::key_event#0 ← (byte) keyboard_event_get::return#3 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] )
+ // (byte) form_control::key_event#0 = (byte) keyboard_event_get::return#3 // register copy reg byte a
+ //SEG122 [63] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_DOWN#0) goto form_control::@4 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] ) -- vbuaa_neq_vbuc1_then_la1
+ cmp #KEY_CRSR_DOWN
+ bne b4
+ jmp b17
+ //SEG123 form_control::@17
+ b17:
+ //SEG124 [64] (byte~) form_control::$12 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_control::$12 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_control::$12 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1
lda #$7f
ldy #0
and (field),y
- //SEG126 [65] *((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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] ) -- _deref_pbuz1=vbuaa
+ //SEG125 [65] *((byte*) form_control::field#0) ← (byte~) form_control::$12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ) -- _deref_pbuz1=vbuaa
ldy #0
sta (field),y
- //SEG127 [66] 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:46 [ form_field_idx#14 key_right_debounce#11 keyboard_key_pressed::return#0 key_down_debounce#23 ] )
- //SEG128 [101] phi from form_control::@20 to keyboard_key_pressed [phi:form_control::@20->keyboard_key_pressed]
- keyboard_key_pressed_from_b20:
- //SEG129 [101] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_RSHIFT#0 [phi:form_control::@20->keyboard_key_pressed#0] -- vbuxx=vbuc1
- ldx #KEY_RSHIFT
- jsr keyboard_key_pressed
- //SEG130 [67] (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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#4 ] )
- // (byte) keyboard_key_pressed::return#4 = (byte) keyboard_key_pressed::return#0 // register copy reg byte a
- jmp b35
- //SEG131 form_control::@35
- b35:
- //SEG132 [68] (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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 form_control::$14 ] )
- // (byte~) form_control::$14 = (byte) keyboard_key_pressed::return#4 // register copy reg byte a
- //SEG133 [69] 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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] ) -- vbuaa_neq_0_then_la1
+ //SEG126 [66] (byte~) form_control::$13 ← (byte) keyboard_modifiers#18 & (const byte) KEY_MODIFIER_SHIFT#0 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::$13 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::$13 ] ) -- vbuaa=vbuz1_band_vbuc1
+ lda #KEY_MODIFIER_SHIFT
+ and keyboard_modifiers
+ //SEG127 [67] if((byte~) form_control::$13!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@5 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ) -- vbuaa_neq_0_then_la1
cmp #0
- bne b6
- jmp b21
- //SEG134 form_control::@21
- b21:
- //SEG135 [70] (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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] ) -- vbuz1=_inc_vbuz1
+ bne b5
+ jmp b18
+ //SEG128 form_control::@18
+ b18:
+ //SEG129 [68] (byte) form_field_idx#40 ← ++ (byte) form_field_idx#14 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ) -- vbuz1=_inc_vbuz1
inc form_field_idx
- //SEG136 [71] 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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] ) -- vbuz1_neq_vbuc1_then_la1
+ //SEG130 [69] if((byte) form_field_idx#40!=(const byte) form_fields_cnt#0) goto form_control::@32 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ) -- vbuz1_neq_vbuc1_then_la1
lda form_field_idx
cmp #form_fields_cnt
- bne b38_from_b21
- //SEG137 [72] phi from form_control::@21 to form_control::@8 [phi:form_control::@21->form_control::@8]
- b8_from_b21:
- //SEG138 [72] phi (byte) form_field_idx#32 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@21->form_control::@8#0] -- vbuz1=vbuc1
+ bne b32_from_b18
+ //SEG131 [70] phi from form_control::@18 to form_control::@7 [phi:form_control::@18->form_control::@7]
+ b7_from_b18:
+ //SEG132 [70] phi (byte) form_field_idx#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@18->form_control::@7#0] -- vbuz1=vbuc1
lda #0
sta form_field_idx
- jmp b8
- //SEG139 form_control::@8
- b8:
- //SEG140 [73] phi from form_control::@8 to form_control::@return [phi:form_control::@8->form_control::@return]
- breturn_from_b8:
- //SEG141 [73] phi (byte) key_right_debounce#13 = (byte) key_right_debounce#11 [phi:form_control::@8->form_control::@return#0] -- register_copy
- //SEG142 [73] phi (byte) form_field_idx#18 = (byte) form_field_idx#32 [phi:form_control::@8->form_control::@return#1] -- register_copy
- //SEG143 [73] phi (byte) key_down_debounce#13 = (byte) key_down_debounce#23 [phi:form_control::@8->form_control::@return#2] -- register_copy
- //SEG144 [73] phi (signed byte) form_cursor_count#16 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:form_control::@8->form_control::@return#3] -- vbsz1=vbuc1
+ jmp b7
+ //SEG133 form_control::@7
+ b7:
+ //SEG134 [71] phi from form_control::@7 to form_control::@return [phi:form_control::@7->form_control::@return]
+ breturn_from_b7:
+ //SEG135 [71] phi (byte) form_field_idx#18 = (byte) form_field_idx#30 [phi:form_control::@7->form_control::@return#0] -- register_copy
+ //SEG136 [71] phi (signed byte) form_cursor_count#16 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:form_control::@7->form_control::@return#1] -- vbsz1=vbuc1
lda #FORM_CURSOR_BLINK/2
sta form_cursor_count
jmp breturn
- //SEG145 [73] phi from form_control::@14 form_control::@26 form_control::@34 to form_control::@return [phi:form_control::@14/form_control::@26/form_control::@34->form_control::@return]
- breturn_from_b14:
- breturn_from_b26:
- breturn_from_b34:
- //SEG146 [73] phi (byte) key_right_debounce#13 = (byte) key_right_debounce#21 [phi:form_control::@14/form_control::@26/form_control::@34->form_control::@return#0] -- register_copy
- //SEG147 [73] phi (byte) form_field_idx#18 = (byte) form_field_idx#14 [phi:form_control::@14/form_control::@26/form_control::@34->form_control::@return#1] -- register_copy
- //SEG148 [73] phi (byte) key_down_debounce#13 = (byte) key_down_debounce#20 [phi:form_control::@14/form_control::@26/form_control::@34->form_control::@return#2] -- register_copy
- //SEG149 [73] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@14/form_control::@26/form_control::@34->form_control::@return#3] -- register_copy
+ //SEG137 [71] phi from form_control::@12 form_control::@4 to form_control::@return [phi:form_control::@12/form_control::@4->form_control::@return]
+ breturn_from_b12:
+ breturn_from_b4:
+ //SEG138 [71] phi (byte) form_field_idx#18 = (byte) form_field_idx#14 [phi:form_control::@12/form_control::@4->form_control::@return#0] -- register_copy
+ //SEG139 [71] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@12/form_control::@4->form_control::@return#1] -- register_copy
jmp breturn
- //SEG150 form_control::@return
+ //SEG140 form_control::@return
breturn:
- //SEG151 [74] return [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
+ //SEG141 [72] return [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] )
rts
- //SEG152 [75] phi from form_control::@21 to form_control::@38 [phi:form_control::@21->form_control::@38]
- b38_from_b21:
- jmp b38
- //SEG153 form_control::@38
- b38:
- //SEG154 [72] phi from form_control::@38 form_control::@39 to form_control::@8 [phi:form_control::@38/form_control::@39->form_control::@8]
- b8_from_b38:
- b8_from_b39:
- //SEG155 [72] phi (byte) form_field_idx#32 = (byte) form_field_idx#41 [phi:form_control::@38/form_control::@39->form_control::@8#0] -- register_copy
- jmp b8
- //SEG156 form_control::@6
- b6:
- //SEG157 [76] (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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] ) -- vbuz1=_dec_vbuz1
+ //SEG142 [73] phi from form_control::@18 to form_control::@32 [phi:form_control::@18->form_control::@32]
+ b32_from_b18:
+ jmp b32
+ //SEG143 form_control::@32
+ b32:
+ //SEG144 [70] phi from form_control::@32 form_control::@33 to form_control::@7 [phi:form_control::@32/form_control::@33->form_control::@7]
+ b7_from_b32:
+ b7_from_b33:
+ //SEG145 [70] phi (byte) form_field_idx#30 = (byte) form_field_idx#40 [phi:form_control::@32/form_control::@33->form_control::@7#0] -- register_copy
+ jmp b7
+ //SEG146 form_control::@5
+ b5:
+ //SEG147 [74] (byte) form_field_idx#41 ← -- (byte) form_field_idx#14 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ) -- vbuz1=_dec_vbuz1
dec form_field_idx
- //SEG158 [77] 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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] ) -- vbuz1_neq_vbuc1_then_la1
+ //SEG148 [75] if((byte) form_field_idx#41!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@33 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ) -- vbuz1_neq_vbuc1_then_la1
lda form_field_idx
cmp #$ff
- bne b39_from_b6
- //SEG159 [72] phi from form_control::@6 to form_control::@8 [phi:form_control::@6->form_control::@8]
- b8_from_b6:
- //SEG160 [72] phi (byte) form_field_idx#32 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@6->form_control::@8#0] -- vbuz1=vbuc1
+ bne b33_from_b5
+ //SEG149 [70] phi from form_control::@5 to form_control::@7 [phi:form_control::@5->form_control::@7]
+ b7_from_b5:
+ //SEG150 [70] phi (byte) form_field_idx#30 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@5->form_control::@7#0] -- vbuz1=vbuc1
lda #form_fields_cnt-1
sta form_field_idx
- jmp b8
- //SEG161 [78] phi from form_control::@6 to form_control::@39 [phi:form_control::@6->form_control::@39]
- b39_from_b6:
- jmp b39
- //SEG162 form_control::@39
- b39:
- jmp b8_from_b39
- //SEG163 [79] phi from form_control::@19 form_control::@33 to form_control::@4 [phi:form_control::@19/form_control::@33->form_control::@4]
- b4_from_b19:
- b4_from_b33:
- //SEG164 [79] phi (byte) key_down_debounce#20 = (byte) key_down_debounce#23 [phi:form_control::@19/form_control::@33->form_control::@4#0] -- register_copy
- jmp b4
- //SEG165 form_control::@4
+ jmp b7
+ //SEG151 [76] phi from form_control::@5 to form_control::@33 [phi:form_control::@5->form_control::@33]
+ b33_from_b5:
+ jmp b33
+ //SEG152 form_control::@33
+ b33:
+ jmp b7_from_b33
+ //SEG153 form_control::@4
b4:
- //SEG166 [80] 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:46 [ 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 ] )
- //SEG167 [101] phi from form_control::@4 to keyboard_key_pressed [phi:form_control::@4->keyboard_key_pressed]
- keyboard_key_pressed_from_b4:
- //SEG168 [101] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_CRSR_RIGHT#0 [phi:form_control::@4->keyboard_key_pressed#0] -- vbuxx=vbuc1
- ldx #KEY_CRSR_RIGHT
- jsr keyboard_key_pressed
- //SEG169 [81] (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:46 [ 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 ] )
- // (byte) keyboard_key_pressed::return#3 = (byte) keyboard_key_pressed::return#0 // register copy reg byte a
- jmp b34
- //SEG170 form_control::@34
- b34:
- //SEG171 [82] (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:46 [ 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 ] )
- // (byte) form_control::key_right#0 = (byte) keyboard_key_pressed::return#3 // register copy reg byte a
- //SEG172 [83] 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:46 [ 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 ] ) -- vbuaa_eq_vbuz1_then_la1
- cmp key_right_debounce
- beq breturn_from_b34
- jmp b26
- //SEG173 form_control::@26
- b26:
- //SEG174 [84] (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:46 [ 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 ] ) -- vbuz1=vbuaa
- sta key_right_debounce
- //SEG175 [85] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- vbuaa_eq_0_then_la1
+ //SEG154 [77] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_RIGHT#0) goto form_control::@return [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- vbuaa_neq_vbuc1_then_la1
+ cmp #KEY_CRSR_RIGHT
+ bne breturn_from_b4
+ jmp b23
+ //SEG155 form_control::@23
+ b23:
+ //SEG156 [78] (byte~) form_control::$24 ← (byte) keyboard_modifiers#18 & (const byte) KEY_MODIFIER_SHIFT#0 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::$24 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::$24 ] ) -- vbuaa=vbuz1_band_vbuc1
+ lda #KEY_MODIFIER_SHIFT
+ and keyboard_modifiers
+ //SEG157 [79] if((byte~) form_control::$24!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@10 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- vbuaa_neq_0_then_la1
cmp #0
- beq breturn_from_b26
- //SEG176 [86] phi from form_control::@26 to form_control::@27 [phi:form_control::@26->form_control::@27]
- b27_from_b26:
- jmp b27
- //SEG177 form_control::@27
- b27:
- //SEG178 [87] 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:46 [ 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 ] )
- //SEG179 [101] phi from form_control::@27 to keyboard_key_pressed [phi:form_control::@27->keyboard_key_pressed]
- keyboard_key_pressed_from_b27:
- //SEG180 [101] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_RSHIFT#0 [phi:form_control::@27->keyboard_key_pressed#0] -- vbuxx=vbuc1
- ldx #KEY_RSHIFT
- jsr keyboard_key_pressed
- //SEG181 [88] (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:46 [ 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 ] )
- // (byte) keyboard_key_pressed::return#10 = (byte) keyboard_key_pressed::return#0 // register copy reg byte a
- jmp b36
- //SEG182 form_control::@36
- b36:
- //SEG183 [89] (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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::$28 ] )
- // (byte~) form_control::$28 = (byte) keyboard_key_pressed::return#10 // register copy reg byte a
- //SEG184 [90] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- vbuaa_neq_0_then_la1
- cmp #0
- bne b12
- jmp b28
- //SEG185 form_control::@28
- b28:
- //SEG186 [91] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
+ bne b10
+ jmp b24
+ //SEG158 form_control::@24
+ b24:
+ //SEG159 [80] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
ldx form_field_idx
inc form_fields_val,x
- //SEG187 [92] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1_le_pbuc2_derefidx_vbuz1_then_la1
+ //SEG160 [81] 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::@12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1_le_pbuc2_derefidx_vbuz1_then_la1
ldy form_field_idx
lda form_fields_val,y
cmp form_fields_max,y
- bcc b14
- beq b14
- jmp b29
- //SEG188 form_control::@29
- b29:
- //SEG189 [93] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1=vbuc2
+ bcc b12
+ beq b12
+ jmp b25
+ //SEG161 form_control::@25
+ b25:
+ //SEG162 [82] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1=vbuc2
ldy form_field_idx
lda #0
sta form_fields_val,y
- jmp b14
- //SEG190 form_control::@14
- b14:
- //SEG191 [94] *((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:46 [ form_field_idx#14 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2
+ jmp b12
+ //SEG163 form_control::@12
+ b12:
+ //SEG164 [83] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_cursor_count#15 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2
ldy form_field_idx
lda form_fields_val,y
tay
lda print_hextab,y
ldy #0
sta (field),y
- jmp breturn_from_b14
- //SEG192 form_control::@12
- b12:
- //SEG193 [95] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1=_dec_pbuc1_derefidx_vbuz1
+ jmp breturn_from_b12
+ //SEG165 form_control::@10
+ b10:
+ //SEG166 [84] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1=_dec_pbuc1_derefidx_vbuz1
ldx form_field_idx
lda form_fields_val,x
sec
sbc #1
ldx form_field_idx
sta form_fields_val,x
- //SEG194 [96] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
+ //SEG167 [85] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#14)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
ldy form_field_idx
lda form_fields_val,y
cmp #$ff
- bne b14
- jmp b31
- //SEG195 form_control::@31
- b31:
- //SEG196 [97] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
+ bne b12
+ jmp b27
+ //SEG168 form_control::@27
+ b27:
+ //SEG169 [86] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
ldy form_field_idx
lda form_fields_max,y
sta form_fields_val,y
- jmp b14
- //SEG197 form_control::@2
+ jmp b12
+ //SEG170 form_control::@2
b2:
- //SEG198 [98] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$7 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1
+ //SEG171 [87] (byte~) form_control::$7 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$7 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$7 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1
lda #$7f
ldy #0
and (field),y
- //SEG199 [99] *((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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ) -- _deref_pbuz1=vbuaa
+ //SEG172 [88] *((byte*) form_control::field#0) ← (byte~) form_control::$7 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ) -- _deref_pbuz1=vbuaa
ldy #0
sta (field),y
jmp b3_from_b2
- //SEG200 [100] phi from form_control::@32 to form_control::@37 [phi:form_control::@32->form_control::@37]
- b37_from_b32:
- jmp b37
- //SEG201 form_control::@37
- b37:
- //SEG202 [53] phi from form_control::@37 to form_control::@1 [phi:form_control::@37->form_control::@1]
- b1_from_b37:
- //SEG203 [53] phi (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#5 [phi:form_control::@37->form_control::@1#0] -- register_copy
+ //SEG173 [89] phi from form_control::@28 to form_control::@31 [phi:form_control::@28->form_control::@31]
+ b31_from_b28:
+ jmp b31
+ //SEG174 form_control::@31
+ b31:
+ //SEG175 [53] phi from form_control::@31 to form_control::@1 [phi:form_control::@31->form_control::@1]
+ b1_from_b31:
+ //SEG176 [53] phi (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#5 [phi:form_control::@31->form_control::@1#0] -- register_copy
jmp b1
}
-//SEG204 keyboard_key_pressed
-keyboard_key_pressed: {
- //SEG205 [102] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] ) -- vbuyy=vbuxx_band_vbuc1
- txa
- and #7
- tay
- //SEG206 [103] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] ) -- vbuaa=vbuxx_ror_3
- txa
- lsr
- lsr
- lsr
- //SEG207 [104] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] ) -- vbuxx=vbuaa
- tax
- //SEG208 [105] call keyboard_matrix_read param-assignment [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ 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::return#0 ] )
- jsr keyboard_matrix_read
- //SEG209 [106] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#2 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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::return#2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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::return#2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ 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::return#2 ] )
- // (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#0 // register copy reg byte a
- jmp b2
- //SEG210 keyboard_key_pressed::@2
- b2:
- //SEG211 [107] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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::$2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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::$2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ 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::$2 ] )
- // (byte~) keyboard_key_pressed::$2 = (byte) keyboard_matrix_read::return#2 // register copy reg byte a
- //SEG212 [108] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy
- and keyboard_matrix_col_bitmask,y
+//SEG177 keyboard_event_get
+keyboard_event_get: {
+ //SEG178 [90] if((byte) keyboard_events_size#17!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@1 [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] ) -- vbuz1_neq_0_then_la1
+ lda keyboard_events_size
+ bne b1
+ //SEG179 [91] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return]
+ breturn_from_keyboard_event_get:
+ //SEG180 [91] phi (byte) keyboard_events_size#20 = (byte) keyboard_events_size#17 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy
+ //SEG181 [91] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1
+ lda #$ff
jmp breturn
- //SEG213 keyboard_key_pressed::@return
+ //SEG182 keyboard_event_get::@return
breturn:
- //SEG214 [109] return [ keyboard_key_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::return#0 ] )
+ //SEG183 [92] return [ keyboard_events_size#20 keyboard_event_get::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#20 keyboard_event_get::return#2 ] )
+ rts
+ //SEG184 keyboard_event_get::@1
+ b1:
+ //SEG185 [93] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#17 [ keyboard_events_size#4 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#4 ] ) -- vbuz1=_dec_vbuz1
+ dec keyboard_events_size
+ //SEG186 [94] (byte) keyboard_event_get::return#0 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_event_get::return#0 keyboard_events_size#4 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#0 keyboard_events_size#4 ] ) -- vbuaa=pbuc1_derefidx_vbuz1
+ ldy keyboard_events_size
+ lda keyboard_events,y
+ //SEG187 [91] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return]
+ breturn_from_b1:
+ //SEG188 [91] phi (byte) keyboard_events_size#20 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy
+ //SEG189 [91] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#0 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy
+ jmp breturn
+}
+//SEG190 keyboard_event_scan
+keyboard_event_scan: {
+ .label row_scan = $d
+ .label keycode = 5
+ .label row = 3
+ //SEG191 [96] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1]
+ b1_from_keyboard_event_scan:
+ //SEG192 [96] phi (byte) keyboard_events_size#43 = (byte) keyboard_events_size#24 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy
+ //SEG193 [96] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1
+ lda #0
+ sta keycode
+ //SEG194 [96] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1
+ lda #0
+ sta row
+ jmp b1
+ //SEG195 [96] phi from keyboard_event_scan::@8 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@1]
+ b1_from_b8:
+ //SEG196 [96] phi (byte) keyboard_events_size#43 = (byte) keyboard_events_size#17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@1#0] -- register_copy
+ //SEG197 [96] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@8->keyboard_event_scan::@1#1] -- register_copy
+ //SEG198 [96] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@1#2] -- register_copy
+ jmp b1
+ //SEG199 keyboard_event_scan::@1
+ b1:
+ //SEG200 [97] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::rowid#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::rowid#0 ] ) -- vbuxx=vbuz1
+ ldx row
+ //SEG201 [98] call keyboard_matrix_read param-assignment [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] )
+ jsr keyboard_matrix_read
+ //SEG202 [99] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#2 ] )
+ // (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#0 // register copy reg byte a
+ jmp b25
+ //SEG203 keyboard_event_scan::@25
+ b25:
+ //SEG204 [100] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ) -- vbuz1=vbuaa
+ sta row_scan
+ //SEG205 [101] if((byte) keyboard_event_scan::row_scan#0==*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ) -- vbuz1_eq_pbuc1_derefidx_vbuz2_then_la1
+ ldy row
+ lda keyboard_scan_values,y
+ cmp row_scan
+ beq b2
+ //SEG206 [102] phi from keyboard_event_scan::@25 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@25->keyboard_event_scan::@3]
+ b3_from_b25:
+ //SEG207 [102] phi (byte) keyboard_events_size#14 = (byte) keyboard_events_size#43 [phi:keyboard_event_scan::@25->keyboard_event_scan::@3#0] -- register_copy
+ //SEG208 [102] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@3#1] -- register_copy
+ //SEG209 [102] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@3#2] -- vbuxx=vbuc1
+ ldx #0
+ jmp b3
+ //SEG210 [102] phi from keyboard_event_scan::@4 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@4->keyboard_event_scan::@3]
+ b3_from_b4:
+ //SEG211 [102] phi (byte) keyboard_events_size#14 = (byte) keyboard_events_size#44 [phi:keyboard_event_scan::@4->keyboard_event_scan::@3#0] -- register_copy
+ //SEG212 [102] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@4->keyboard_event_scan::@3#1] -- register_copy
+ //SEG213 [102] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@4->keyboard_event_scan::@3#2] -- register_copy
+ jmp b3
+ //SEG214 keyboard_event_scan::@3
+ b3:
+ //SEG215 [103] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$3 ] ) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2
+ lda row_scan
+ ldy row
+ eor keyboard_scan_values,y
+ //SEG216 [104] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$4 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx
+ and keyboard_matrix_col_bitmask,x
+ //SEG217 [105] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) -- vbuaa_eq_0_then_la1
+ cmp #0
+ beq b4_from_b3
+ jmp b14
+ //SEG218 keyboard_event_scan::@14
+ b14:
+ //SEG219 [106] if((byte) keyboard_events_size#14==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) -- vbuz1_eq_vbuc1_then_la1
+ lda keyboard_events_size
+ cmp #8
+ beq b4_from_b14
+ jmp b15
+ //SEG220 keyboard_event_scan::@15
+ b15:
+ //SEG221 [107] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::event_type#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::event_type#0 ] ) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx
+ lda keyboard_matrix_col_bitmask,x
+ and row_scan
+ //SEG222 [108] if((byte) keyboard_event_scan::event_type#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@6 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) -- vbuaa_neq_0_then_la1
+ cmp #0
+ bne b6
+ jmp b16
+ //SEG223 keyboard_event_scan::@16
+ b16:
+ //SEG224 [109] (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$12 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$12 ] ) -- vbuaa=vbuz1_bor_vbuc1
+ lda #$40
+ ora keycode
+ //SEG225 [110] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#14) ← (byte/word/dword~) keyboard_event_scan::$12 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) -- pbuc1_derefidx_vbuz1=vbuaa
+ ldy keyboard_events_size
+ sta keyboard_events,y
+ //SEG226 [111] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#14 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#2 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#2 ] ) -- vbuz1=_inc_vbuz1
+ inc keyboard_events_size
+ //SEG227 [112] phi from keyboard_event_scan::@14 keyboard_event_scan::@16 keyboard_event_scan::@3 keyboard_event_scan::@6 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@14/keyboard_event_scan::@16/keyboard_event_scan::@3/keyboard_event_scan::@6->keyboard_event_scan::@4]
+ b4_from_b14:
+ b4_from_b16:
+ b4_from_b3:
+ b4_from_b6:
+ //SEG228 [112] phi (byte) keyboard_events_size#44 = (byte) keyboard_events_size#14 [phi:keyboard_event_scan::@14/keyboard_event_scan::@16/keyboard_event_scan::@3/keyboard_event_scan::@6->keyboard_event_scan::@4#0] -- register_copy
+ jmp b4
+ //SEG229 keyboard_event_scan::@4
+ b4:
+ //SEG230 [113] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ) -- vbuz1=_inc_vbuz1
+ inc keycode
+ //SEG231 [114] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ) -- vbuxx=_inc_vbuxx
+ inx
+ //SEG232 [115] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@3 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ) -- vbuxx_neq_vbuc1_then_la1
+ cpx #8
+ bne b3_from_b4
+ jmp b18
+ //SEG233 keyboard_event_scan::@18
+ b18:
+ //SEG234 [116] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ) -- pbuc1_derefidx_vbuz1=vbuz2
+ lda row_scan
+ ldy row
+ sta keyboard_scan_values,y
+ //SEG235 [117] phi from keyboard_event_scan::@18 keyboard_event_scan::@2 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@18/keyboard_event_scan::@2->keyboard_event_scan::@8]
+ b8_from_b18:
+ b8_from_b2:
+ //SEG236 [117] phi (byte) keyboard_events_size#17 = (byte) keyboard_events_size#44 [phi:keyboard_event_scan::@18/keyboard_event_scan::@2->keyboard_event_scan::@8#0] -- register_copy
+ //SEG237 [117] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@18/keyboard_event_scan::@2->keyboard_event_scan::@8#1] -- register_copy
+ jmp b8
+ //SEG238 keyboard_event_scan::@8
+ b8:
+ //SEG239 [118] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 [ keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ) -- vbuz1=_inc_vbuz1
+ inc row
+ //SEG240 [119] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 [ keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ) -- vbuz1_neq_vbuc1_then_la1
+ lda row
+ cmp #8
+ bne b1_from_b8
+ //SEG241 [120] phi from keyboard_event_scan::@8 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@8->keyboard_event_scan::@20]
+ b20_from_b8:
+ jmp b20
+ //SEG242 keyboard_event_scan::@20
+ b20:
+ //SEG243 [121] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] )
+ //SEG244 [149] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed]
+ keyboard_event_pressed_from_b20:
+ //SEG245 [149] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1
+ lda #KEY_LSHIFT
+ sta keyboard_event_pressed.keycode
+ jsr keyboard_event_pressed
+ //SEG246 [122] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_event_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#0 ] )
+ // (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a
+ jmp b26
+ //SEG247 keyboard_event_scan::@26
+ b26:
+ //SEG248 [123] (byte~) keyboard_event_scan::$16 ← (byte) keyboard_event_pressed::return#0 [ keyboard_events_size#17 keyboard_event_scan::$16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::$16 ] )
+ // (byte~) keyboard_event_scan::$16 = (byte) keyboard_event_pressed::return#0 // register copy reg byte a
+ //SEG249 [124] if((byte~) keyboard_event_scan::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] ) -- vbuaa_eq_0_then_la1
+ cmp #0
+ beq b9_from_b26
+ //SEG250 [125] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21]
+ b21_from_b26:
+ jmp b21
+ //SEG251 keyboard_event_scan::@21
+ b21:
+ //SEG252 [126] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9]
+ b9_from_b21:
+ //SEG253 [126] phi (byte) keyboard_modifiers#15 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuz1=vbuc1
+ lda #0|KEY_MODIFIER_LSHIFT
+ sta keyboard_modifiers
+ jmp b9
+ //SEG254 [126] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9]
+ b9_from_b26:
+ //SEG255 [126] phi (byte) keyboard_modifiers#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuz1=vbuc1
+ lda #0
+ sta keyboard_modifiers
+ jmp b9
+ //SEG256 keyboard_event_scan::@9
+ b9:
+ //SEG257 [127] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#15 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#15 ] )
+ //SEG258 [149] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed]
+ keyboard_event_pressed_from_b9:
+ //SEG259 [149] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1
+ lda #KEY_RSHIFT
+ sta keyboard_event_pressed.keycode
+ jsr keyboard_event_pressed
+ //SEG260 [128] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#1 ] )
+ // (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a
+ jmp b27
+ //SEG261 keyboard_event_scan::@27
+ b27:
+ //SEG262 [129] (byte~) keyboard_event_scan::$20 ← (byte) keyboard_event_pressed::return#1 [ keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_scan::$20 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_scan::$20 ] )
+ // (byte~) keyboard_event_scan::$20 = (byte) keyboard_event_pressed::return#1 // register copy reg byte a
+ //SEG263 [130] if((byte~) keyboard_event_scan::$20==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 [ keyboard_events_size#17 keyboard_modifiers#15 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 ] ) -- vbuaa_eq_0_then_la1
+ cmp #0
+ beq b10_from_b27
+ jmp b22
+ //SEG264 keyboard_event_scan::@22
+ b22:
+ //SEG265 [131] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#15 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#17 keyboard_modifiers#3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#3 ] ) -- vbuz1=vbuz1_bor_vbuc1
+ lda #KEY_MODIFIER_RSHIFT
+ ora keyboard_modifiers
+ sta keyboard_modifiers
+ //SEG266 [132] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10]
+ b10_from_b22:
+ b10_from_b27:
+ //SEG267 [132] phi (byte) keyboard_modifiers#16 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy
+ jmp b10
+ //SEG268 keyboard_event_scan::@10
+ b10:
+ //SEG269 [133] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#16 ] )
+ //SEG270 [149] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed]
+ keyboard_event_pressed_from_b10:
+ //SEG271 [149] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1
+ lda #KEY_CTRL
+ sta keyboard_event_pressed.keycode
+ jsr keyboard_event_pressed
+ //SEG272 [134] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#2 ] )
+ // (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a
+ jmp b28
+ //SEG273 keyboard_event_scan::@28
+ b28:
+ //SEG274 [135] (byte~) keyboard_event_scan::$24 ← (byte) keyboard_event_pressed::return#2 [ keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_scan::$24 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_scan::$24 ] )
+ // (byte~) keyboard_event_scan::$24 = (byte) keyboard_event_pressed::return#2 // register copy reg byte a
+ //SEG275 [136] if((byte~) keyboard_event_scan::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 [ keyboard_events_size#17 keyboard_modifiers#16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 ] ) -- vbuaa_eq_0_then_la1
+ cmp #0
+ beq b11_from_b28
+ jmp b23
+ //SEG276 keyboard_event_scan::@23
+ b23:
+ //SEG277 [137] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#16 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#17 keyboard_modifiers#4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#4 ] ) -- vbuz1=vbuz1_bor_vbuc1
+ lda #KEY_MODIFIER_CTRL
+ ora keyboard_modifiers
+ sta keyboard_modifiers
+ //SEG278 [138] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11]
+ b11_from_b23:
+ b11_from_b28:
+ //SEG279 [138] phi (byte) keyboard_modifiers#17 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy
+ jmp b11
+ //SEG280 keyboard_event_scan::@11
+ b11:
+ //SEG281 [139] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#17 ] )
+ //SEG282 [149] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed]
+ keyboard_event_pressed_from_b11:
+ //SEG283 [149] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1
+ lda #KEY_COMMODORE
+ sta keyboard_event_pressed.keycode
+ jsr keyboard_event_pressed
+ //SEG284 [140] (byte) keyboard_event_pressed::return#3 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#3 ] )
+ // (byte) keyboard_event_pressed::return#3 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a
+ jmp b29
+ //SEG285 keyboard_event_scan::@29
+ b29:
+ //SEG286 [141] (byte~) keyboard_event_scan::$28 ← (byte) keyboard_event_pressed::return#3 [ keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_scan::$28 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_scan::$28 ] )
+ // (byte~) keyboard_event_scan::$28 = (byte) keyboard_event_pressed::return#3 // register copy reg byte a
+ //SEG287 [142] if((byte~) keyboard_event_scan::$28==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return [ keyboard_events_size#17 keyboard_modifiers#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 ] ) -- vbuaa_eq_0_then_la1
+ cmp #0
+ beq breturn_from_b29
+ jmp b24
+ //SEG288 keyboard_event_scan::@24
+ b24:
+ //SEG289 [143] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#17 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#17 keyboard_modifiers#5 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#5 ] ) -- vbuz1=vbuz1_bor_vbuc1
+ lda #KEY_MODIFIER_COMMODORE
+ ora keyboard_modifiers
+ sta keyboard_modifiers
+ //SEG290 [144] phi from keyboard_event_scan::@24 keyboard_event_scan::@29 to keyboard_event_scan::@return [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return]
+ breturn_from_b24:
+ breturn_from_b29:
+ //SEG291 [144] phi (byte) keyboard_modifiers#18 = (byte) keyboard_modifiers#5 [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return#0] -- register_copy
+ jmp breturn
+ //SEG292 keyboard_event_scan::@return
+ breturn:
+ //SEG293 [145] return [ keyboard_modifiers#18 keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_modifiers#18 keyboard_events_size#17 ] )
+ rts
+ //SEG294 keyboard_event_scan::@6
+ b6:
+ //SEG295 [146] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#14) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) -- pbuc1_derefidx_vbuz1=vbuz2
+ lda keycode
+ ldy keyboard_events_size
+ sta keyboard_events,y
+ //SEG296 [147] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#14 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#1 ] ) -- vbuz1=_inc_vbuz1
+ inc keyboard_events_size
+ jmp b4_from_b6
+ //SEG297 keyboard_event_scan::@2
+ b2:
+ //SEG298 [148] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#43 keyboard_event_scan::keycode#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#43 keyboard_event_scan::keycode#1 ] ) -- vbuz1=vbuz1_plus_vbuc1
+ lda #8
+ clc
+ adc keycode
+ sta keycode
+ jmp b8_from_b2
+}
+//SEG299 keyboard_event_pressed
+keyboard_event_pressed: {
+ .label keycode = 5
+ //SEG300 [150] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ) -- vbuaa=vbuz1_ror_3
+ lda keycode
+ lsr
+ lsr
+ lsr
+ //SEG301 [151] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] ) -- vbuyy=pbuc1_derefidx_vbuaa
+ tax
+ ldy keyboard_scan_values,x
+ //SEG302 [152] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) -- vbuaa=vbuz1_band_vbuc1
+ lda #7
+ and keycode
+ //SEG303 [153] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#10 ] ) -- vbuaa=vbuyy_band_pbuc1_derefidx_vbuaa
+ tax
+ tya
+ and keyboard_matrix_col_bitmask,x
+ jmp breturn
+ //SEG304 keyboard_event_pressed::@return
+ breturn:
+ //SEG305 [154] return [ keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#10 ] )
rts
}
-//SEG215 keyboard_matrix_read
+//SEG306 keyboard_matrix_read
keyboard_matrix_read: {
- //SEG216 [110] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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 ] ) -- _deref_pbuc1=pbuc2_derefidx_vbuxx
+ //SEG307 [155] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] ) -- _deref_pbuc1=pbuc2_derefidx_vbuxx
lda keyboard_matrix_row_bitmask,x
sta CIA1_PORT_A
- //SEG217 [111] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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::return#0 ] ) -- vbuaa=_bnot__deref_pbuc1
+ //SEG308 [156] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] ) -- vbuaa=_bnot__deref_pbuc1
lda CIA1_PORT_B
eor #$ff
jmp breturn
- //SEG218 keyboard_matrix_read::@return
+ //SEG309 keyboard_matrix_read::@return
breturn:
- //SEG219 [112] return [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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::return#0 ] )
+ //SEG310 [157] return [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] )
rts
}
-//SEG220 form_field_ptr
+//SEG311 form_field_ptr
form_field_ptr: {
- .label return = 6
- .label _2 = 6
- //SEG221 [114] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ) -- vbuyy=pbuc1_derefidx_vbuxx
+ .label return = 7
+ .label _2 = 7
+ //SEG312 [159] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ) -- vbuyy=pbuc1_derefidx_vbuxx
ldy form_fields_y,x
- //SEG222 [115] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] ) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy
+ //SEG313 [160] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] ) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy
lda form_line_hi,y
sta _2+1
lda form_line_lo,y
sta _2
- //SEG223 [116] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::$2 form_field_ptr::x#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::$2 form_field_ptr::x#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::$2 form_field_ptr::x#0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx
+ //SEG314 [161] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::$2 form_field_ptr::x#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::$2 form_field_ptr::x#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::$2 form_field_ptr::x#0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx
lda form_fields_x,x
- //SEG224 [117] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ 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_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#0 ] ) -- pbuz1=pbuz1_plus_vbuaa
+ //SEG315 [162] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#0 ] ) -- pbuz1=pbuz1_plus_vbuaa
clc
adc return
sta return
@@ -8666,85 +10567,85 @@ form_field_ptr: {
adc return+1
sta return+1
jmp breturn
- //SEG225 form_field_ptr::@return
+ //SEG316 form_field_ptr::@return
breturn:
- //SEG226 [118] return [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ 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_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#0 ] )
+ //SEG317 [163] return [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#0 ] )
rts
}
-//SEG227 form_render_values
+//SEG318 form_render_values
form_render_values: {
- .label field = 6
- //SEG228 [120] phi from form_render_values to form_render_values::@1 [phi:form_render_values->form_render_values::@1]
+ .label field = 7
+ //SEG319 [165] phi from form_render_values to form_render_values::@1 [phi:form_render_values->form_render_values::@1]
b1_from_form_render_values:
- //SEG229 [120] phi (byte) form_render_values::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_render_values->form_render_values::@1#0] -- vbuxx=vbuc1
+ //SEG320 [165] phi (byte) form_render_values::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_render_values->form_render_values::@1#0] -- vbuxx=vbuc1
ldx #0
jmp b1
- //SEG230 [120] phi from form_render_values::@3 to form_render_values::@1 [phi:form_render_values::@3->form_render_values::@1]
+ //SEG321 [165] phi from form_render_values::@3 to form_render_values::@1 [phi:form_render_values::@3->form_render_values::@1]
b1_from_b3:
- //SEG231 [120] phi (byte) form_render_values::idx#2 = (byte) form_render_values::idx#1 [phi:form_render_values::@3->form_render_values::@1#0] -- register_copy
+ //SEG322 [165] phi (byte) form_render_values::idx#2 = (byte) form_render_values::idx#1 [phi:form_render_values::@3->form_render_values::@1#0] -- register_copy
jmp b1
- //SEG232 form_render_values::@1
+ //SEG323 form_render_values::@1
b1:
- //SEG233 [121] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 [ form_field_ptr::field_idx#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_field_ptr::field_idx#0 form_render_values::idx#2 ] )
+ //SEG324 [166] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 [ form_field_ptr::field_idx#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_field_ptr::field_idx#0 form_render_values::idx#2 ] )
// (byte) form_field_ptr::field_idx#0 = (byte) form_render_values::idx#2 // register copy reg byte x
- //SEG234 [122] call form_field_ptr param-assignment [ form_field_ptr::return#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_field_ptr::return#0 form_render_values::idx#2 ] )
- //SEG235 [113] phi from form_render_values::@1 to form_field_ptr [phi:form_render_values::@1->form_field_ptr]
+ //SEG325 [167] call form_field_ptr param-assignment [ form_field_ptr::return#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_field_ptr::return#0 form_render_values::idx#2 ] )
+ //SEG326 [158] phi from form_render_values::@1 to form_field_ptr [phi:form_render_values::@1->form_field_ptr]
form_field_ptr_from_b1:
- //SEG236 [113] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#0 [phi:form_render_values::@1->form_field_ptr#0] -- register_copy
+ //SEG327 [158] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#0 [phi:form_render_values::@1->form_field_ptr#0] -- register_copy
jsr form_field_ptr
- //SEG237 [123] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#2 ] )
- // (byte*) form_field_ptr::return#2 = (byte*) form_field_ptr::return#0 // register copy zp ZP_WORD:6
+ //SEG328 [168] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#2 ] )
+ // (byte*) form_field_ptr::return#2 = (byte*) form_field_ptr::return#0 // register copy zp ZP_WORD:7
jmp b3
- //SEG238 form_render_values::@3
+ //SEG329 form_render_values::@3
b3:
- //SEG239 [124] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_render_values::field#0 ] )
- // (byte*) form_render_values::field#0 = (byte*) form_field_ptr::return#2 // register copy zp ZP_WORD:6
- //SEG240 [125] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuxx
+ //SEG330 [169] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_render_values::field#0 ] )
+ // (byte*) form_render_values::field#0 = (byte*) form_field_ptr::return#2 // register copy zp ZP_WORD:7
+ //SEG331 [170] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuxx
lda form_fields_val,x
tay
lda print_hextab,y
ldy #0
sta (field),y
- //SEG241 [126] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#1 ] ) -- vbuxx=_inc_vbuxx
+ //SEG332 [171] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#1 ] ) -- vbuxx=_inc_vbuxx
inx
- //SEG242 [127] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#1 ] ) -- vbuxx_lt_vbuc1_then_la1
+ //SEG333 [172] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#1 ] ) -- vbuxx_lt_vbuc1_then_la1
cpx #form_fields_cnt
bcc b1_from_b3
jmp breturn
- //SEG243 form_render_values::@return
+ //SEG334 form_render_values::@return
breturn:
- //SEG244 [128] return [ ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ //SEG335 [173] return [ ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
rts
}
-//SEG245 form_set_screen
+//SEG336 form_set_screen
form_set_screen: {
- .label line = 6
- //SEG246 [130] phi from form_set_screen to form_set_screen::@1 [phi:form_set_screen->form_set_screen::@1]
+ .label line = 7
+ //SEG337 [175] phi from form_set_screen to form_set_screen::@1 [phi:form_set_screen->form_set_screen::@1]
b1_from_form_set_screen:
- //SEG247 [130] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuxx=vbuc1
+ //SEG338 [175] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuxx=vbuc1
ldx #0
- //SEG248 [130] phi (byte*) form_set_screen::line#2 = (const byte*) menu::SCREEN#0 [phi:form_set_screen->form_set_screen::@1#1] -- pbuz1=pbuc1
+ //SEG339 [175] phi (byte*) form_set_screen::line#2 = (const byte*) menu::SCREEN#0 [phi:form_set_screen->form_set_screen::@1#1] -- pbuz1=pbuc1
lda #menu.SCREEN
sta line+1
jmp b1
- //SEG249 [130] phi from form_set_screen::@1 to form_set_screen::@1 [phi:form_set_screen::@1->form_set_screen::@1]
+ //SEG340 [175] phi from form_set_screen::@1 to form_set_screen::@1 [phi:form_set_screen::@1->form_set_screen::@1]
b1_from_b1:
- //SEG250 [130] phi (byte) form_set_screen::y#2 = (byte) form_set_screen::y#1 [phi:form_set_screen::@1->form_set_screen::@1#0] -- register_copy
- //SEG251 [130] phi (byte*) form_set_screen::line#2 = (byte*) form_set_screen::line#1 [phi:form_set_screen::@1->form_set_screen::@1#1] -- register_copy
+ //SEG341 [175] phi (byte) form_set_screen::y#2 = (byte) form_set_screen::y#1 [phi:form_set_screen::@1->form_set_screen::@1#0] -- register_copy
+ //SEG342 [175] phi (byte*) form_set_screen::line#2 = (byte*) form_set_screen::line#1 [phi:form_set_screen::@1->form_set_screen::@1#1] -- register_copy
jmp b1
- //SEG252 form_set_screen::@1
+ //SEG343 form_set_screen::@1
b1:
- //SEG253 [131] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ) -- vbuaa=_lo_pbuz1
+ //SEG344 [176] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ) -- vbuaa=_lo_pbuz1
lda line
- //SEG254 [132] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa
+ //SEG345 [177] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa
sta form_line_lo,x
- //SEG255 [133] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ) -- vbuaa=_hi_pbuz1
+ //SEG346 [178] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ) -- vbuaa=_hi_pbuz1
lda line+1
- //SEG256 [134] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa
+ //SEG347 [179] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa
sta form_line_hi,x
- //SEG257 [135] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::y#2 form_set_screen::line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1
+ //SEG348 [180] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::y#2 form_set_screen::line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1
lda line
clc
adc #$28
@@ -8752,110 +10653,110 @@ form_set_screen: {
bcc !+
inc line+1
!:
- //SEG258 [136] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#1 form_set_screen::y#1 ] ) -- vbuxx=_inc_vbuxx
+ //SEG349 [181] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#1 form_set_screen::y#1 ] ) -- vbuxx=_inc_vbuxx
inx
- //SEG259 [137] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#1 form_set_screen::y#1 ] ) -- vbuxx_neq_vbuc1_then_la1
+ //SEG350 [182] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#1 form_set_screen::y#1 ] ) -- vbuxx_neq_vbuc1_then_la1
cpx #$19
bne b1_from_b1
jmp breturn
- //SEG260 form_set_screen::@return
+ //SEG351 form_set_screen::@return
breturn:
- //SEG261 [138] return [ ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ //SEG352 [183] return [ ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
rts
}
-//SEG262 print_str_lines
+//SEG353 print_str_lines
print_str_lines: {
- .label str = 6
- //SEG263 [140] (byte*~) print_char_cursor#63 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] ) -- pbuz1=pbuz2
+ .label str = 7
+ //SEG354 [185] (byte*~) print_char_cursor#64 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] ) -- pbuz1=pbuz2
lda print_set_screen.screen
sta print_char_cursor
lda print_set_screen.screen+1
sta print_char_cursor+1
- //SEG264 [141] phi from print_str_lines print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1]
+ //SEG355 [186] phi from print_str_lines print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1]
b1_from_print_str_lines:
b1_from_b9:
- //SEG265 [141] phi (byte*) print_line_cursor#2 = (byte*) print_set_screen::screen#2 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#0] -- register_copy
- //SEG266 [141] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#63 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#1] -- register_copy
- //SEG267 [141] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#5 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#2] -- register_copy
+ //SEG356 [186] phi (byte*) print_line_cursor#2 = (byte*) print_set_screen::screen#2 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#0] -- register_copy
+ //SEG357 [186] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#64 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#1] -- register_copy
+ //SEG358 [186] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#5 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#2] -- register_copy
jmp b1
- //SEG268 print_str_lines::@1
+ //SEG359 print_str_lines::@1
b1:
- //SEG269 [142] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1
+ //SEG360 [187] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1
ldy #0
lda (str),y
cmp #'@'
bne b4_from_b1
jmp breturn
- //SEG270 print_str_lines::@return
+ //SEG361 print_str_lines::@return
breturn:
- //SEG271 [143] return [ ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ //SEG362 [188] return [ ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
rts
- //SEG272 [144] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4]
+ //SEG363 [189] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4]
b4_from_b1:
b4_from_b5:
- //SEG273 [144] phi (byte*) print_char_cursor#20 = (byte*) print_char_cursor#22 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy
- //SEG274 [144] phi (byte*) print_str_lines::str#4 = (byte*) print_str_lines::str#3 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy
+ //SEG364 [189] phi (byte*) print_char_cursor#20 = (byte*) print_char_cursor#22 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy
+ //SEG365 [189] phi (byte*) print_str_lines::str#4 = (byte*) print_str_lines::str#3 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy
jmp b4
- //SEG275 print_str_lines::@4
+ //SEG366 print_str_lines::@4
b4:
- //SEG276 [145] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ) -- vbuaa=_deref_pbuz1
+ //SEG367 [190] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ) -- vbuaa=_deref_pbuz1
ldy #0
lda (str),y
- //SEG277 [146] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- pbuz1=_inc_pbuz1
+ //SEG368 [191] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- pbuz1=_inc_pbuz1
inc str
bne !+
inc str+1
!:
- //SEG278 [147] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- vbuaa_eq_vbuc1_then_la1
+ //SEG369 [192] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- vbuaa_eq_vbuc1_then_la1
cmp #'@'
beq b5_from_b4
jmp b8
- //SEG279 print_str_lines::@8
+ //SEG370 print_str_lines::@8
b8:
- //SEG280 [148] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- _deref_pbuz1=vbuaa
+ //SEG371 [193] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- _deref_pbuz1=vbuaa
ldy #0
sta (print_char_cursor),y
- //SEG281 [149] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 [ print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ) -- pbuz1=_inc_pbuz1
+ //SEG372 [194] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 [ print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ) -- pbuz1=_inc_pbuz1
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
- //SEG282 [150] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5]
+ //SEG373 [195] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5]
b5_from_b4:
b5_from_b8:
- //SEG283 [150] phi (byte*) print_char_cursor#38 = (byte*) print_char_cursor#20 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy
+ //SEG374 [195] phi (byte*) print_char_cursor#38 = (byte*) print_char_cursor#20 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy
jmp b5
- //SEG284 print_str_lines::@5
+ //SEG375 print_str_lines::@5
b5:
- //SEG285 [151] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ) -- vbuaa_neq_vbuc1_then_la1
+ //SEG376 [196] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ) -- vbuaa_neq_vbuc1_then_la1
cmp #'@'
bne b4_from_b5
- //SEG286 [152] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9]
+ //SEG377 [197] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9]
b9_from_b5:
jmp b9
- //SEG287 print_str_lines::@9
+ //SEG378 print_str_lines::@9
b9:
- //SEG288 [153] call print_ln param-assignment [ print_str_lines::str#0 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] )
- //SEG289 [155] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln]
+ //SEG379 [198] call print_ln param-assignment [ print_str_lines::str#0 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] )
+ //SEG380 [200] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln]
print_ln_from_b9:
jsr print_ln
- //SEG290 [154] (byte*~) print_char_cursor#64 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] ) -- pbuz1=pbuz2
+ //SEG381 [199] (byte*~) print_char_cursor#65 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] ) -- pbuz1=pbuz2
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
jmp b1_from_b9
}
-//SEG291 print_ln
+//SEG382 print_ln
print_ln: {
- //SEG292 [156] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
+ //SEG383 [201] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
b1_from_print_ln:
b1_from_b1:
- //SEG293 [156] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#2 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy
+ //SEG384 [201] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#2 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy
jmp b1
- //SEG294 print_ln::@1
+ //SEG385 print_ln::@1
b1:
- //SEG295 [157] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) -- pbuz1=pbuz1_plus_vbuc1
+ //SEG386 [202] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) -- pbuz1=pbuz1_plus_vbuc1
lda print_line_cursor
clc
adc #$28
@@ -8863,7 +10764,7 @@ print_ln: {
bcc !+
inc print_line_cursor+1
!:
- //SEG296 [158] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) -- pbuz1_lt_pbuz2_then_la1
+ //SEG387 [203] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) -- pbuz1_lt_pbuz2_then_la1
lda print_line_cursor+1
cmp print_char_cursor+1
bcc b1_from_b1
@@ -8873,37 +10774,37 @@ print_ln: {
bcc b1_from_b1
!:
jmp breturn
- //SEG297 print_ln::@return
+ //SEG388 print_ln::@return
breturn:
- //SEG298 [159] return [ print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] )
+ //SEG389 [204] return [ print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] )
rts
}
-//SEG299 print_cls
+//SEG390 print_cls
print_cls: {
- .label _0 = 8
- .label sc = 6
- //SEG300 [160] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 print_cls::sc#0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#0 ] ) -- pbuz1=pbuz2
+ .label _0 = 9
+ .label sc = 7
+ //SEG391 [205] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 print_cls::sc#0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#0 ] ) -- pbuz1=pbuz2
lda print_set_screen.screen
sta sc
lda print_set_screen.screen+1
sta sc+1
- //SEG301 [161] phi from print_cls print_cls::@1 to print_cls::@1 [phi:print_cls/print_cls::@1->print_cls::@1]
+ //SEG392 [206] phi from print_cls print_cls::@1 to print_cls::@1 [phi:print_cls/print_cls::@1->print_cls::@1]
b1_from_print_cls:
b1_from_b1:
- //SEG302 [161] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#0 [phi:print_cls/print_cls::@1->print_cls::@1#0] -- register_copy
+ //SEG393 [206] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#0 [phi:print_cls/print_cls::@1->print_cls::@1#0] -- register_copy
jmp b1
- //SEG303 print_cls::@1
+ //SEG394 print_cls::@1
b1:
- //SEG304 [162] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
+ //SEG395 [207] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
lda #' '
ldy #0
sta (sc),y
- //SEG305 [163] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
+ //SEG396 [208] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
inc sc
bne !+
inc sc+1
!:
- //SEG306 [164] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ) -- pbuz1=pbuz2_plus_vwuc1
+ //SEG397 [209] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ) -- pbuz1=pbuz2_plus_vwuc1
lda print_set_screen.screen
clc
adc #<$3e8
@@ -8911,7 +10812,7 @@ print_cls: {
lda print_set_screen.screen+1
adc #>$3e8
sta _0+1
- //SEG307 [165] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] ) -- pbuz1_neq_pbuz2_then_la1
+ //SEG398 [210] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] ) -- pbuz1_neq_pbuz2_then_la1
lda sc+1
cmp _0+1
bne b1_from_b1
@@ -8919,24 +10820,26 @@ print_cls: {
cmp _0
bne b1_from_b1
jmp breturn
- //SEG308 print_cls::@return
+ //SEG399 print_cls::@return
breturn:
- //SEG309 [166] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ //SEG400 [211] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
rts
}
-//SEG310 print_set_screen
+//SEG401 print_set_screen
print_set_screen: {
- .label screen = $a
+ .label screen = $b
jmp breturn
- //SEG311 print_set_screen::@return
+ //SEG402 print_set_screen::@return
breturn:
- //SEG312 [168] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_set_screen:26 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] main:2::menu:10::print_set_screen:32 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ //SEG403 [213] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_set_screen:26 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] main:2::menu:10::print_set_screen:32 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
rts
}
DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a
print_hextab: .text "0123456789abcdef"
keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f
keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80
+ keyboard_events: .fill 8, 0
+ keyboard_scan_values: .fill 8, 0
form_line_lo: .fill $19, 0
form_line_hi: .fill $19, 0
form_fields_x: .byte $16, 7, 7, 7, 7, 7, 7, 7, $11, $11, $11, $10, $11, $10, $11, $10, $11, $1b, $1a, $1b, $1a, $1b, $1a, $1b, $26, $26, $26, $25, $26, $25, $26, $25, $26, $25, $26
@@ -8947,7 +10850,7 @@ print_set_screen: {
MENU_TEXT: .text " DTV GfxExplorer MODE 0 8bpp pixel cell @"+" CONTROL PLANE A PLANE B VIC II @"+" bmm 0 patt p0 patt p0 screen s0 @"+" mcm 0 start 00 start 00 gfx g0 @"+" ecm 0 step 00 step 00 colors c0 @"+" hicol 0 mod 00 mod 00 bgcol0 00 @"+" line 0 bgcol1 00 @"+" colof 0 borof 0 bgcol2 00 @"+" chunk 0 overs 0 bgcol3 00 @"+"@"
ASSEMBLER OPTIMIZATIONS
-Removing instruction jmp b25
+Removing instruction jmp b28
Removing instruction jmp bend
Removing instruction jmp b1
Removing instruction jmp breturn
@@ -8964,30 +10867,47 @@ Removing instruction jmp b21
Removing instruction jmp b2
Removing instruction jmp breturn
Removing instruction jmp b7
-Removing instruction jmp b32
-Removing instruction jmp b1
-Removing instruction jmp b17
-Removing instruction jmp b3
-Removing instruction jmp b33
-Removing instruction jmp b19
-Removing instruction jmp b20
-Removing instruction jmp b35
-Removing instruction jmp b21
-Removing instruction jmp b8
-Removing instruction jmp breturn
-Removing instruction jmp b38
-Removing instruction jmp b39
-Removing instruction jmp b4
-Removing instruction jmp b34
-Removing instruction jmp b26
-Removing instruction jmp b27
-Removing instruction jmp b36
Removing instruction jmp b28
+Removing instruction jmp b1
+Removing instruction jmp b15
+Removing instruction jmp b3
Removing instruction jmp b29
-Removing instruction jmp b14
+Removing instruction jmp b30
+Removing instruction jmp b17
+Removing instruction jmp b18
+Removing instruction jmp b7
+Removing instruction jmp breturn
+Removing instruction jmp b32
+Removing instruction jmp b33
+Removing instruction jmp b23
+Removing instruction jmp b24
+Removing instruction jmp b25
+Removing instruction jmp b12
+Removing instruction jmp b27
Removing instruction jmp b31
-Removing instruction jmp b37
-Removing instruction jmp b2
+Removing instruction jmp breturn
+Removing instruction jmp b1
+Removing instruction jmp b25
+Removing instruction jmp b3
+Removing instruction jmp b14
+Removing instruction jmp b15
+Removing instruction jmp b16
+Removing instruction jmp b4
+Removing instruction jmp b18
+Removing instruction jmp b8
+Removing instruction jmp b20
+Removing instruction jmp b26
+Removing instruction jmp b21
+Removing instruction jmp b9
+Removing instruction jmp b27
+Removing instruction jmp b22
+Removing instruction jmp b10
+Removing instruction jmp b28
+Removing instruction jmp b23
+Removing instruction jmp b11
+Removing instruction jmp b29
+Removing instruction jmp b24
+Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp breturn
Removing instruction jmp breturn
@@ -9016,20 +10936,27 @@ Removing instruction ldy #0
Removing instruction ldy #0
Removing instruction ldx form_field_idx
Removing instruction ldy #0
+Removing instruction lda #0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b2_from_b1 with b2
Replacing label b1_from_b1 with b1
Replacing label b2_from_b7 with b2
-Replacing label b37_from_b32 with b37
-Replacing label b4_from_b33 with b4
-Replacing label b4_from_b19 with b4
-Replacing label b38_from_b21 with b38
-Replacing label b39_from_b6 with b39
-Replacing label b8_from_b39 with b38
-Replacing label breturn_from_b34 with breturn
-Replacing label breturn_from_b26 with breturn
-Replacing label breturn_from_b14 with breturn
+Replacing label b31_from_b28 with b31
+Replacing label b32_from_b18 with b32
+Replacing label b33_from_b5 with b33
+Replacing label b7_from_b33 with b32
+Replacing label breturn_from_b4 with breturn
+Replacing label breturn_from_b12 with breturn
Replacing label b3_from_b2 with b3
+Replacing label b4_from_b3 with b4
+Replacing label b4_from_b14 with b4
+Replacing label b3_from_b4 with b3
+Replacing label b1_from_b8 with b1
+Replacing label b10_from_b27 with b10
+Replacing label b11_from_b28 with b11
+Replacing label breturn_from_b29 with breturn
+Replacing label b4_from_b6 with b4
+Replacing label b8_from_b2 with b8
Replacing label b1_from_b3 with b1
Replacing label b1_from_b1 with b1
Replacing label b4_from_b1 with b4
@@ -9041,8 +10968,8 @@ Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Removing instruction bbegin:
-Removing instruction b25_from_bbegin:
-Removing instruction bend_from_b25:
+Removing instruction b28_from_bbegin:
+Removing instruction bend_from_b28:
Removing instruction b2_from_b1:
Removing instruction b1_from_b1:
Removing instruction b15_from_b8:
@@ -9060,24 +10987,40 @@ Removing instruction form_render_values_from_b21:
Removing instruction b2_from_b21:
Removing instruction b2_from_b7:
Removing instruction b7_from_b5:
-Removing instruction b3_from_b17:
+Removing instruction b3_from_b15:
Removing instruction b3_from_b2:
-Removing instruction keyboard_key_pressed_from_b3:
-Removing instruction breturn_from_b8:
-Removing instruction breturn_from_b14:
-Removing instruction breturn_from_b26:
-Removing instruction breturn_from_b34:
-Removing instruction b38_from_b21:
-Removing instruction b8_from_b38:
-Removing instruction b8_from_b39:
-Removing instruction b39_from_b6:
-Removing instruction b4_from_b19:
-Removing instruction b4_from_b33:
-Removing instruction keyboard_key_pressed_from_b4:
-Removing instruction b27_from_b26:
-Removing instruction keyboard_key_pressed_from_b27:
-Removing instruction b37_from_b32:
-Removing instruction b1_from_b37:
+Removing instruction keyboard_event_scan_from_b3:
+Removing instruction b29_from_b3:
+Removing instruction breturn_from_b7:
+Removing instruction breturn_from_b12:
+Removing instruction breturn_from_b4:
+Removing instruction b32_from_b18:
+Removing instruction b7_from_b32:
+Removing instruction b7_from_b33:
+Removing instruction b33_from_b5:
+Removing instruction b31_from_b28:
+Removing instruction b1_from_b31:
+Removing instruction b1_from_b8:
+Removing instruction b3_from_b4:
+Removing instruction b4_from_b14:
+Removing instruction b4_from_b16:
+Removing instruction b4_from_b3:
+Removing instruction b4_from_b6:
+Removing instruction b8_from_b18:
+Removing instruction b8_from_b2:
+Removing instruction b20_from_b8:
+Removing instruction keyboard_event_pressed_from_b20:
+Removing instruction b21_from_b26:
+Removing instruction b9_from_b21:
+Removing instruction keyboard_event_pressed_from_b9:
+Removing instruction b10_from_b22:
+Removing instruction b10_from_b27:
+Removing instruction keyboard_event_pressed_from_b10:
+Removing instruction b11_from_b23:
+Removing instruction b11_from_b28:
+Removing instruction keyboard_event_pressed_from_b11:
+Removing instruction breturn_from_b24:
+Removing instruction breturn_from_b29:
Removing instruction b1_from_b3:
Removing instruction b1_from_b1:
Removing instruction b1_from_print_str_lines:
@@ -9093,7 +11036,7 @@ Removing instruction b1_from_b1:
Removing instruction b1_from_print_cls:
Removing instruction b1_from_b1:
Succesful ASM optimization Pass5RedundantLabelElimination
-Removing instruction b25:
+Removing instruction b28:
Removing instruction bend:
Removing instruction b1_from_main:
Removing instruction breturn:
@@ -9111,25 +11054,37 @@ Removing instruction b21:
Removing instruction breturn:
Removing instruction b7:
Removing instruction form_field_ptr_from_form_control:
-Removing instruction b32:
-Removing instruction b1_from_b32:
-Removing instruction b17:
-Removing instruction b33:
-Removing instruction b19:
-Removing instruction b20:
-Removing instruction keyboard_key_pressed_from_b20:
-Removing instruction b35:
-Removing instruction b21:
-Removing instruction b8_from_b21:
-Removing instruction b8_from_b6:
-Removing instruction b34:
-Removing instruction b26:
-Removing instruction b27:
-Removing instruction b36:
Removing instruction b28:
+Removing instruction b1_from_b28:
+Removing instruction b15:
Removing instruction b29:
-Removing instruction b31:
-Removing instruction b2:
+Removing instruction b30:
+Removing instruction b17:
+Removing instruction b18:
+Removing instruction b7_from_b18:
+Removing instruction b7_from_b5:
+Removing instruction b23:
+Removing instruction b24:
+Removing instruction b25:
+Removing instruction b27:
+Removing instruction breturn_from_keyboard_event_get:
+Removing instruction breturn_from_b1:
+Removing instruction b1_from_keyboard_event_scan:
+Removing instruction b25:
+Removing instruction b3_from_b25:
+Removing instruction b14:
+Removing instruction b15:
+Removing instruction b16:
+Removing instruction b18:
+Removing instruction b20:
+Removing instruction b26:
+Removing instruction b21:
+Removing instruction b27:
+Removing instruction b22:
+Removing instruction b28:
+Removing instruction b23:
+Removing instruction b29:
+Removing instruction b24:
Removing instruction breturn:
Removing instruction breturn:
Removing instruction breturn:
@@ -9148,43 +11103,49 @@ Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
Skipping double jump to b2 in jmp b1
Skipping double jump to b5 in jmp b2
-Skipping double jump to b1 in bpl b37
-Skipping double jump to b8 in bne b38
-Skipping double jump to b38 in bne b39
-Skipping double jump to b8 in jmp b38
+Skipping double jump to b1 in bpl b31
+Skipping double jump to b7 in bne b32
+Skipping double jump to b32 in bne b33
+Skipping double jump to b7 in jmp b32
Succesful ASM optimization Pass5DoubleJumpElimination
Removing unreachable instruction rts
Removing unreachable instruction rts
Succesful ASM optimization Pass5UnreachableCodeElimination
+Relabelling long label b9_from_b26 to b5
+Succesful ASM optimization Pass5RelabelLongLabels
Removing instruction jmp b2
Removing instruction jmp b1
Removing instruction jmp b5
Removing instruction jmp breturn
Removing instruction jmp b1
+Removing instruction jmp b3
+Removing instruction jmp b1
Removing instruction jmp b1
Succesful ASM optimization Pass5NextJumpElimination
+Replacing instruction lda #0 with TYA
Removing instruction ldy form_field_idx
Removing instruction ldy form_field_idx
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Removing instruction b1:
Removing instruction b2:
Succesful ASM optimization Pass5RedundantLabelElimination
-Removing instruction b39:
-Removing instruction b37:
+Removing instruction b33:
+Removing instruction b31:
Succesful ASM optimization Pass5UnusedLabelElimination
-Skipping double jump to b8 in bne b38
+Skipping double jump to b7 in bne b32
Succesful ASM optimization Pass5DoubleJumpElimination
-Removing unreachable instruction jmp b8
+Removing unreachable instruction jmp b7
Removing unreachable instruction jmp b1
Succesful ASM optimization Pass5UnreachableCodeElimination
-Removing instruction b38:
+Removing instruction b32:
Succesful ASM optimization Pass5UnusedLabelElimination
-Removing unreachable instruction jmp b8
+Removing unreachable instruction jmp b7
Succesful ASM optimization Pass5UnreachableCodeElimination
-Fixing long branch [129] bpl b2 to bmi
+Fixing long branch [137] bpl b2 to bmi
+Fixing long branch [246] beq b2 to bne
FINAL SYMBOL TABLE
-(label) @25
+(label) @28
(label) @begin
(label) @end
(byte*) BGCOL
@@ -9221,10 +11182,26 @@ FINAL SYMBOL TABLE
(const byte[16]) DTV_PALETTE_DEFAULT#0 DTV_PALETTE_DEFAULT = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 54, (byte/word/signed word/dword/signed dword) 190, (byte/signed byte/word/signed word/dword/signed dword) 88, (byte/word/signed word/dword/signed dword) 219, (byte/word/signed word/dword/signed dword) 134, (byte/word/signed word/dword/signed dword) 255, (byte/signed byte/word/signed word/dword/signed dword) 41, (byte/signed byte/word/signed word/dword/signed dword) 38, (byte/signed byte/word/signed word/dword/signed dword) 59, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 154, (byte/signed byte/word/signed word/dword/signed dword) 10 }
(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
+(byte) KEY_COMMODORE
+(const byte) KEY_COMMODORE#0 KEY_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 61
(byte) KEY_CRSR_DOWN
(const byte) KEY_CRSR_DOWN#0 KEY_CRSR_DOWN = (byte/signed byte/word/signed word/dword/signed dword) 7
(byte) KEY_CRSR_RIGHT
(const byte) KEY_CRSR_RIGHT#0 KEY_CRSR_RIGHT = (byte/signed byte/word/signed word/dword/signed dword) 2
+(byte) KEY_CTRL
+(const byte) KEY_CTRL#0 KEY_CTRL = (byte/signed byte/word/signed word/dword/signed dword) 58
+(byte) KEY_LSHIFT
+(const byte) KEY_LSHIFT#0 KEY_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 15
+(byte) KEY_MODIFIER_COMMODORE
+(const byte) KEY_MODIFIER_COMMODORE#0 KEY_MODIFIER_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 8
+(byte) KEY_MODIFIER_CTRL
+(const byte) KEY_MODIFIER_CTRL#0 KEY_MODIFIER_CTRL = (byte/signed byte/word/signed word/dword/signed dword) 4
+(byte) KEY_MODIFIER_LSHIFT
+(const byte) KEY_MODIFIER_LSHIFT#0 KEY_MODIFIER_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 1
+(byte) KEY_MODIFIER_RSHIFT
+(const byte) KEY_MODIFIER_RSHIFT#0 KEY_MODIFIER_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 2
+(byte) KEY_MODIFIER_SHIFT
+(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[]) MENU_COLS
@@ -9246,58 +11223,52 @@ FINAL SYMBOL TABLE
(byte) VIC_RSEL
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
(void()) form_control()
+(byte~) form_control::$12 reg byte a 4.0
(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~) form_control::$24 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::@10
(label) form_control::@12
-(label) form_control::@14
+(label) form_control::@15
(label) form_control::@17
-(label) form_control::@19
+(label) form_control::@18
(label) form_control::@2
-(label) form_control::@20
-(label) form_control::@21
-(label) form_control::@26
+(label) form_control::@23
+(label) form_control::@24
+(label) form_control::@25
(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::@5
+(label) form_control::@7
(label) form_control::@return
(byte*) form_control::field
-(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
-(byte) form_control::key_right#0 reg byte a 2.6666666666666665
+(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
(signed byte) form_cursor_count
(signed byte) form_cursor_count#1 form_cursor_count zp ZP_BYTE:2 0.3939393939393939
(signed byte) form_cursor_count#13 form_cursor_count zp ZP_BYTE:2 11.6
-(signed byte) form_cursor_count#15 form_cursor_count zp ZP_BYTE:2 0.3125
-(signed byte) form_cursor_count#16 form_cursor_count zp ZP_BYTE:2 35.66666666666666
+(signed byte) form_cursor_count#15 form_cursor_count zp ZP_BYTE:2 0.34782608695652173
+(signed byte) form_cursor_count#16 form_cursor_count zp ZP_BYTE:2 34.99999999999999
(signed byte) form_cursor_count#5 form_cursor_count zp ZP_BYTE:2 2.0
(byte) form_field_idx
(byte) form_field_idx#1 form_field_idx zp ZP_BYTE:4 0.3939393939393939
-(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#14 form_field_idx zp ZP_BYTE:4 3.6499999999999972
+(byte) form_field_idx#18 form_field_idx zp ZP_BYTE:4 35.66666666666666
+(byte) form_field_idx#30 form_field_idx zp ZP_BYTE:4 6.0
+(byte) form_field_idx#40 form_field_idx zp ZP_BYTE:4 2.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:6 1.0
+(word~) form_field_ptr::$2 $2 zp ZP_WORD:7 1.0
(label) form_field_ptr::@return
(byte*) form_field_ptr::field
(byte) form_field_ptr::field_idx
@@ -9306,9 +11277,9 @@ FINAL SYMBOL TABLE
(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: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::return#0 return zp ZP_WORD:7 26.25
+(byte*) form_field_ptr::return#2 return zp ZP_WORD:7 202.0
+(byte*) form_field_ptr::return#3 return zp ZP_WORD:7 4.0
(byte) form_field_ptr::x
(byte) form_field_ptr::x#0 reg byte a 4.0
(byte) form_field_ptr::y
@@ -9332,7 +11303,7 @@ FINAL SYMBOL TABLE
(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:6 202.0
+(byte*) form_render_values::field#0 field zp ZP_WORD:7 202.0
(byte) form_render_values::idx
(byte) form_render_values::idx#1 reg byte x 151.5
(byte) form_render_values::idx#2 reg byte x 67.33333333333333
@@ -9342,51 +11313,118 @@ FINAL SYMBOL TABLE
(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:6 67.33333333333333
-(byte*) form_set_screen::line#2 line zp ZP_WORD:6 80.8
+(byte*) form_set_screen::line#1 line zp ZP_WORD:7 67.33333333333333
+(byte*) form_set_screen::line#2 line zp ZP_WORD:7 80.8
(byte*) form_set_screen::screen
(byte) form_set_screen::y
(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.3939393939393939
-(byte) key_down_debounce#11 key_down_debounce zp ZP_BYTE:3 4.916666666666666
-(byte) key_down_debounce#13 key_down_debounce zp ZP_BYTE:3 36.33333333333332
-(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:5 0.3939393939393939
-(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 reg byte y 0.6666666666666666
-(byte) keyboard_key_pressed::key
-(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
-(byte) keyboard_key_pressed::return#2 reg byte a 4.0
-(byte) keyboard_key_pressed::return#3 reg byte a 4.0
-(byte) keyboard_key_pressed::return#4 reg byte a 4.0
-(byte) keyboard_key_pressed::rowidx
-(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(byte[]) keyboard_matrix_col_bitmask
-(const byte[]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+(byte()) keyboard_event_get()
+(label) keyboard_event_get::@1
+(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_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:5 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
+(byte) keyboard_event_pressed::return#10 reg byte a 1.6666666666666665
+(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 reg byte y 2.0
+(void()) keyboard_event_scan()
+(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 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
+(label) keyboard_event_scan::@14
+(label) keyboard_event_scan::@15
+(label) keyboard_event_scan::@16
+(label) keyboard_event_scan::@18
+(label) keyboard_event_scan::@2
+(label) keyboard_event_scan::@20
+(label) keyboard_event_scan::@21
+(label) keyboard_event_scan::@22
+(label) keyboard_event_scan::@23
+(label) keyboard_event_scan::@24
+(label) keyboard_event_scan::@25
+(label) keyboard_event_scan::@26
+(label) keyboard_event_scan::@27
+(label) keyboard_event_scan::@28
+(label) keyboard_event_scan::@29
+(label) keyboard_event_scan::@3
+(label) keyboard_event_scan::@4
+(label) keyboard_event_scan::@6
+(label) keyboard_event_scan::@8
+(label) keyboard_event_scan::@9
+(label) keyboard_event_scan::@return
+(byte) keyboard_event_scan::col
+(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 20002.0
+(byte) keyboard_event_scan::keycode
+(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:5 2002.0
+(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:5 3154.230769230769
+(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:5 500.5
+(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:5 1001.0
+(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:5 5250.75
+(byte) keyboard_event_scan::row
+(byte) keyboard_event_scan::row#1 row zp ZP_BYTE:3 1501.5
+(byte) keyboard_event_scan::row#2 row zp ZP_BYTE:3 600.24
+(byte) keyboard_event_scan::row_scan
+(byte) keyboard_event_scan::row_scan#0 row_scan zp ZP_BYTE:13 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 20002.0
+(byte) keyboard_events_size#14 keyboard_events_size zp ZP_BYTE:6 8100.9000000000015
+(byte) keyboard_events_size#17 keyboard_events_size zp ZP_BYTE:6 94.03125
+(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:6 20002.0
+(byte) keyboard_events_size#20 keyboard_events_size zp ZP_BYTE:6 3.5000000000000004
+(byte) keyboard_events_size#22 keyboard_events_size zp ZP_BYTE:6 0.3939393939393939
+(byte) keyboard_events_size#24 keyboard_events_size zp ZP_BYTE:6 5.523809523809524
+(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:6 3.0
+(byte) keyboard_events_size#43 keyboard_events_size zp ZP_BYTE:6 429.2857142857143
+(byte) keyboard_events_size#44 keyboard_events_size zp ZP_BYTE:6 10201.2
+(byte[8]) keyboard_matrix_col_bitmask
+(const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
(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 1.3333333333333333
-(byte) keyboard_matrix_read::return#2 reg byte a 4.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 4.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#10 keyboard_modifiers zp ZP_BYTE:3 28.5
+(byte) keyboard_modifiers#15 keyboard_modifiers zp ZP_BYTE:3 0.8
+(byte) keyboard_modifiers#16 keyboard_modifiers zp ZP_BYTE:3 1.6
+(byte) keyboard_modifiers#17 keyboard_modifiers zp ZP_BYTE:3 1.6
+(byte) keyboard_modifiers#18 keyboard_modifiers zp ZP_BYTE:3 3.40625
+(byte) keyboard_modifiers#20 keyboard_modifiers zp ZP_BYTE:3 0.3939393939393939
+(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#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::@2
@@ -9413,26 +11451,26 @@ FINAL SYMBOL TABLE
(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#20 print_char_cursor zp ZP_WORD:8 821.0
-(byte*) print_char_cursor#22 print_char_cursor zp ZP_WORD:8 102.0
-(byte*) print_char_cursor#38 print_char_cursor zp ZP_WORD:8 572.0
-(byte*~) print_char_cursor#63 print_char_cursor zp ZP_WORD:8 4.0
-(byte*~) print_char_cursor#64 print_char_cursor zp ZP_WORD:8 202.0
+(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:9 2002.0
+(byte*) print_char_cursor#20 print_char_cursor zp ZP_WORD:9 821.0
+(byte*) print_char_cursor#22 print_char_cursor zp ZP_WORD:9 102.0
+(byte*) print_char_cursor#38 print_char_cursor zp ZP_WORD:9 572.0
+(byte*~) print_char_cursor#64 print_char_cursor zp ZP_WORD:9 4.0
+(byte*~) print_char_cursor#65 print_char_cursor zp ZP_WORD:9 202.0
(void()) print_cls()
-(byte*~) print_cls::$0 $0 zp ZP_WORD:8 202.0
+(byte*~) print_cls::$0 $0 zp ZP_WORD:9 202.0
(label) print_cls::@1
(label) print_cls::@return
(byte*) print_cls::sc
-(byte*) print_cls::sc#0 sc zp ZP_WORD:6 4.0
-(byte*) print_cls::sc#1 sc zp ZP_WORD:6 101.0
-(byte*) print_cls::sc#2 sc zp ZP_WORD:6 152.5
+(byte*) print_cls::sc#0 sc zp ZP_WORD:7 4.0
+(byte*) print_cls::sc#1 sc zp ZP_WORD:7 101.0
+(byte*) print_cls::sc#2 sc zp ZP_WORD:7 152.5
(byte[]) print_hextab
(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef"
(byte*) print_line_cursor
-(byte*) print_line_cursor#2 print_line_cursor zp ZP_WORD:10 8.749999999999998
-(byte*) print_line_cursor#21 print_line_cursor zp ZP_WORD:10 2004.0
-(byte*) print_line_cursor#22 print_line_cursor zp ZP_WORD:10 641.0
+(byte*) print_line_cursor#2 print_line_cursor zp ZP_WORD:11 8.749999999999998
+(byte*) print_line_cursor#21 print_line_cursor zp ZP_WORD:11 2004.0
+(byte*) print_line_cursor#22 print_line_cursor zp ZP_WORD:11 641.0
(void()) print_ln()
(label) print_ln::@1
(label) print_ln::@return
@@ -9440,7 +11478,7 @@ FINAL SYMBOL TABLE
(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:10 5.631578947368421
+(byte*) print_set_screen::screen#2 screen zp ZP_WORD:11 5.631578947368421
(void()) print_str_lines((byte*) print_str_lines::str)
(label) print_str_lines::@1
(label) print_str_lines::@4
@@ -9451,40 +11489,51 @@ FINAL SYMBOL TABLE
(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:6 233.66666666666669
-(byte*) print_str_lines::str#3 str zp ZP_WORD:6 152.5
-(byte*) print_str_lines::str#4 str zp ZP_WORD:6 1552.0
-(byte*) print_str_lines::str#5 str zp ZP_WORD:6 1.0
+(byte*) print_str_lines::str#0 str zp ZP_WORD:7 233.66666666666669
+(byte*) print_str_lines::str#3 str zp ZP_WORD:7 152.5
+(byte*) print_str_lines::str#4 str zp ZP_WORD:7 1552.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#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 ]
-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 ]
+zp ZP_BYTE:3 [ keyboard_modifiers#20 keyboard_modifiers#10 keyboard_modifiers#18 keyboard_modifiers#17 keyboard_modifiers#4 keyboard_modifiers#16 keyboard_modifiers#3 keyboard_modifiers#15 keyboard_modifiers#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
+zp ZP_BYTE:4 [ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#30 form_field_idx#40 form_field_idx#41 ]
reg byte x [ menu::i#2 menu::i#1 ]
-reg byte x [ keyboard_key_pressed::key#4 ]
+reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#0 ]
+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::keycode#4 ]
+zp ZP_BYTE:6 [ keyboard_events_size#14 keyboard_events_size#43 keyboard_events_size#22 keyboard_events_size#24 keyboard_events_size#20 keyboard_events_size#4 keyboard_events_size#17 keyboard_events_size#44 keyboard_events_size#2 keyboard_events_size#1 ]
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:6 [ 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 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 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:8 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#63 print_char_cursor#64 print_char_cursor#38 print_char_cursor#1 print_cls::$0 ]
-zp ZP_WORD:10 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ]
+zp ZP_WORD:9 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#64 print_char_cursor#65 print_char_cursor#38 print_char_cursor#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 ]
reg byte a [ form_control::$6 ]
-reg byte a [ keyboard_key_pressed::return#2 ]
-reg byte a [ form_control::key_down#0 ]
+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 [ keyboard_key_pressed::return#4 ]
-reg byte a [ form_control::$14 ]
-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::$24 ]
reg byte a [ form_control::$7 ]
-reg byte y [ keyboard_key_pressed::colidx#0 ]
-reg byte a [ keyboard_key_pressed::rowidx#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 ]
+zp ZP_BYTE:13 [ keyboard_event_scan::row_scan#0 ]
+reg byte a [ keyboard_event_scan::$3 ]
+reg byte a [ keyboard_event_scan::$4 ]
+reg byte a [ keyboard_event_scan::event_type#0 ]
+reg byte a [ keyboard_event_scan::$12 ]
+reg byte a [ keyboard_event_pressed::return#0 ]
+reg byte a [ keyboard_event_scan::$16 ]
+reg byte a [ keyboard_event_pressed::return#1 ]
+reg byte a [ keyboard_event_scan::$20 ]
+reg byte a [ keyboard_event_pressed::return#2 ]
+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 y [ form_field_ptr::y#0 ]
reg byte a [ form_field_ptr::x#0 ]
@@ -9494,7 +11543,7 @@ reg byte a [ print_str_lines::ch#0 ]
FINAL ASSEMBLER
-Score: 114985
+Score: 1082592
//SEG0 Basic Upstart
.pc = $801 "Basic"
@@ -9525,21 +11574,29 @@ Score: 114985
.label DTV_GRAPHICS_VIC_BANK = $d03d
.const KEY_CRSR_RIGHT = 2
.const KEY_CRSR_DOWN = 7
+ .const KEY_LSHIFT = $f
.const KEY_RSHIFT = $34
+ .const KEY_CTRL = $3a
+ .const KEY_COMMODORE = $3d
+ .const KEY_MODIFIER_LSHIFT = 1
+ .const KEY_MODIFIER_RSHIFT = 2
+ .const KEY_MODIFIER_CTRL = 4
+ .const KEY_MODIFIER_COMMODORE = 8
.const form_fields_cnt = $23
.const FORM_CURSOR_BLINK = $28
- .label print_char_cursor = 8
- .label print_line_cursor = $a
+ .const KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT
+ .label print_char_cursor = 9
+ .label print_line_cursor = $b
+ .label keyboard_events_size = 6
+ .label keyboard_modifiers = 3
.label form_cursor_count = 2
- .label key_down_debounce = 3
.label form_field_idx = 4
- .label key_right_debounce = 5
//SEG2 @begin
-//SEG3 [1] phi from @begin to @25 [phi:@begin->@25]
-//SEG4 @25
+//SEG3 [1] phi from @begin to @28 [phi:@begin->@28]
+//SEG4 @28
//SEG5 [2] call main param-assignment [ ] ( )
jsr main
-//SEG6 [3] phi from @25 to @end [phi:@25->@end]
+//SEG6 [3] phi from @28 to @end [phi:@28->@end]
//SEG7 @end
//SEG8 main
main: {
@@ -9549,29 +11606,29 @@ main: {
lda #DTV_FEATURE_ENABLE
sta DTV_FEATURE
//SEG11 [6] phi from main to main::@1 [phi:main->main::@1]
- //SEG12 [6] phi (byte) key_right_debounce#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
+ //SEG12 [6] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
lda #0
- sta key_right_debounce
- //SEG13 [6] phi (byte) form_field_idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1
sta form_field_idx
- //SEG14 [6] phi (byte) key_down_debounce#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1
- sta key_down_debounce
+ //SEG13 [6] phi (byte) keyboard_modifiers#20 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1
+ sta keyboard_modifiers
+ //SEG14 [6] phi (byte) keyboard_events_size#22 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1
+ sta keyboard_events_size
//SEG15 [6] phi (signed byte) form_cursor_count#1 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#3] -- vbsz1=vbuc1
lda #FORM_CURSOR_BLINK/2
sta form_cursor_count
//SEG16 main::@1
- //SEG17 [7] if(true) goto main::@2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- true_then_la1
+ //SEG17 [7] if(true) goto main::@2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- true_then_la1
//SEG18 main::@return
//SEG19 [8] return [ ] ( main:2 [ ] )
//SEG20 [9] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
//SEG21 main::@2
b2:
- //SEG22 [10] call menu param-assignment [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
+ //SEG22 [10] call menu param-assignment [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
jsr menu
//SEG23 [6] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
- //SEG24 [6] phi (byte) key_right_debounce#1 = (byte) key_right_debounce#11 [phi:main::@2->main::@1#0] -- register_copy
- //SEG25 [6] phi (byte) form_field_idx#1 = (byte) form_field_idx#14 [phi:main::@2->main::@1#1] -- register_copy
- //SEG26 [6] phi (byte) key_down_debounce#1 = (byte) key_down_debounce#11 [phi:main::@2->main::@1#2] -- register_copy
+ //SEG24 [6] phi (byte) form_field_idx#1 = (byte) form_field_idx#14 [phi:main::@2->main::@1#0] -- register_copy
+ //SEG25 [6] phi (byte) keyboard_modifiers#20 = (byte) keyboard_modifiers#10 [phi:main::@2->main::@1#1] -- register_copy
+ //SEG26 [6] phi (byte) keyboard_events_size#22 = (byte) keyboard_events_size#24 [phi:main::@2->main::@1#2] -- register_copy
//SEG27 [6] phi (signed byte) form_cursor_count#1 = (signed byte) form_cursor_count#13 [phi:main::@2->main::@1#3] -- register_copy
jmp b2
}
@@ -9579,30 +11636,30 @@ main: {
menu: {
.label SCREEN = $8000
.label CHARSET = $9800
- //SEG29 [11] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG29 [11] *((const byte*) DTV_GRAPHICS_VIC_BANK#0) ← ((byte))((dword))(const byte*) menu::CHARSET#0/(dword/signed dword) 65536 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #($ffffffff&CHARSET)/$10000
sta DTV_GRAPHICS_VIC_BANK
- //SEG30 [12] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG30 [12] *((const byte*) DTV_COLOR_BANK_LO#0) ← <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #DTV_COLOR_BANK_DEFAULT/$400
sta DTV_COLOR_BANK_LO
- //SEG31 [13] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG31 [13] *((const byte*) DTV_COLOR_BANK_HI#0) ← >((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #0
sta DTV_COLOR_BANK_HI
- //SEG32 [14] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG32 [14] *((const byte*) DTV_CONTROL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
sta DTV_CONTROL
- //SEG33 [15] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG33 [15] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #3
sta CIA2_PORT_A_DDR
- //SEG34 [16] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG34 [16] *((const byte*) CIA2_PORT_A#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) menu::CHARSET#0/(word/signed word/dword/signed dword) 16384 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #3^CHARSET/$4000
sta CIA2_PORT_A
- //SEG35 [17] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG35 [17] *((const byte*) VIC_CONTROL#0) ← (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #VIC_DEN|VIC_RSEL|3
sta VIC_CONTROL
- //SEG36 [18] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG36 [18] *((const byte*) VIC_CONTROL2#0) ← (const byte) VIC_CSEL#0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #VIC_CSEL
sta VIC_CONTROL2
- //SEG37 [19] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG37 [19] *((const byte*) VIC_MEMORY#0) ← ((byte))((word))(const byte*) menu::SCREEN#0&(word/signed word/dword/signed dword) 16383/(byte/signed byte/word/signed word/dword/signed dword) 64|((word))(const byte*) menu::CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #(SCREEN&$3fff)/$40|(CHARSET&$3fff)/$400
sta VIC_MEMORY
//SEG38 [20] phi from menu to menu::@1 [phi:menu->menu::@1]
@@ -9612,23 +11669,23 @@ menu: {
//SEG41 [20] phi (byte) menu::i#2 = (byte) menu::i#1 [phi:menu::@1->menu::@1#0] -- register_copy
//SEG42 menu::@1
b1:
- //SEG43 [21] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
+ //SEG43 [21] *((const byte*) DTV_PALETTE#0 + (byte) menu::i#2) ← *((const byte[16]) DTV_PALETTE_DEFAULT#0 + (byte) menu::i#2) [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
lda DTV_PALETTE_DEFAULT,x
sta DTV_PALETTE,x
- //SEG44 [22] (byte) menu::i#1 ← ++ (byte) menu::i#2 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ) -- vbuxx=_inc_vbuxx
+ //SEG44 [22] (byte) menu::i#1 ← ++ (byte) menu::i#2 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ) -- vbuxx=_inc_vbuxx
inx
- //SEG45 [23] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 menu::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1
+ //SEG45 [23] if((byte) menu::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto menu::@1 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 menu::i#1 ] ) -- vbuxx_neq_vbuc1_then_la1
cpx #$10
bne b1
//SEG46 menu::@8
- //SEG47 [24] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG47 [24] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
lda #0
sta BGCOL
- //SEG48 [25] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ) -- _deref_pbuc1=vbuc2
+ //SEG48 [25] *((const byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ) -- _deref_pbuc1=vbuc2
sta BORDERCOL
- //SEG49 [26] call print_set_screen param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
- //SEG50 [167] phi from menu::@8 to print_set_screen [phi:menu::@8->print_set_screen]
- //SEG51 [167] phi (byte*) print_set_screen::screen#2 = (const byte*) COLS#0 [phi:menu::@8->print_set_screen#0] -- pbuz1=pbuc1
+ //SEG49 [26] call print_set_screen param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
+ //SEG50 [212] phi from menu::@8 to print_set_screen [phi:menu::@8->print_set_screen]
+ //SEG51 [212] phi (byte*) print_set_screen::screen#2 = (const byte*) COLS#0 [phi:menu::@8->print_set_screen#0] -- pbuz1=pbuc1
lda #COLS
@@ -9636,13 +11693,13 @@ menu: {
jsr print_set_screen
//SEG52 [27] phi from menu::@8 to menu::@15 [phi:menu::@8->menu::@15]
//SEG53 menu::@15
- //SEG54 [28] call print_cls param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ //SEG54 [28] call print_cls param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
jsr print_cls
//SEG55 [29] phi from menu::@15 to menu::@16 [phi:menu::@15->menu::@16]
//SEG56 menu::@16
- //SEG57 [30] call print_str_lines param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- //SEG58 [139] phi from menu::@16 to print_str_lines [phi:menu::@16->print_str_lines]
- //SEG59 [139] phi (byte*) print_str_lines::str#5 = (const string) MENU_COLS#0 [phi:menu::@16->print_str_lines#0] -- pbuz1=pbuc1
+ //SEG57 [30] call print_str_lines param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ //SEG58 [184] phi from menu::@16 to print_str_lines [phi:menu::@16->print_str_lines]
+ //SEG59 [184] phi (byte*) print_str_lines::str#5 = (const string) MENU_COLS#0 [phi:menu::@16->print_str_lines#0] -- pbuz1=pbuc1
lda #MENU_COLS
@@ -9650,9 +11707,9 @@ menu: {
jsr print_str_lines
//SEG60 [31] phi from menu::@16 to menu::@17 [phi:menu::@16->menu::@17]
//SEG61 menu::@17
- //SEG62 [32] call print_set_screen param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
- //SEG63 [167] phi from menu::@17 to print_set_screen [phi:menu::@17->print_set_screen]
- //SEG64 [167] phi (byte*) print_set_screen::screen#2 = (const byte*) menu::SCREEN#0 [phi:menu::@17->print_set_screen#0] -- pbuz1=pbuc1
+ //SEG62 [32] call print_set_screen param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
+ //SEG63 [212] phi from menu::@17 to print_set_screen [phi:menu::@17->print_set_screen]
+ //SEG64 [212] phi (byte*) print_set_screen::screen#2 = (const byte*) menu::SCREEN#0 [phi:menu::@17->print_set_screen#0] -- pbuz1=pbuc1
lda #SCREEN
@@ -9660,13 +11717,13 @@ menu: {
jsr print_set_screen
//SEG65 [33] phi from menu::@17 to menu::@18 [phi:menu::@17->menu::@18]
//SEG66 menu::@18
- //SEG67 [34] call print_cls param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ //SEG67 [34] call print_cls param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
jsr print_cls
//SEG68 [35] phi from menu::@18 to menu::@19 [phi:menu::@18->menu::@19]
//SEG69 menu::@19
- //SEG70 [36] call print_str_lines param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- //SEG71 [139] phi from menu::@19 to print_str_lines [phi:menu::@19->print_str_lines]
- //SEG72 [139] phi (byte*) print_str_lines::str#5 = (const string) MENU_TEXT#0 [phi:menu::@19->print_str_lines#0] -- pbuz1=pbuc1
+ //SEG70 [36] call print_str_lines param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ //SEG71 [184] phi from menu::@19 to print_str_lines [phi:menu::@19->print_str_lines]
+ //SEG72 [184] phi (byte*) print_str_lines::str#5 = (const string) MENU_TEXT#0 [phi:menu::@19->print_str_lines#0] -- pbuz1=pbuc1
lda #MENU_TEXT
@@ -9674,62 +11731,62 @@ menu: {
jsr print_str_lines
//SEG73 [37] phi from menu::@19 to menu::@20 [phi:menu::@19->menu::@20]
//SEG74 menu::@20
- //SEG75 [38] call form_set_screen param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- //SEG76 [129] phi from menu::@20 to form_set_screen [phi:menu::@20->form_set_screen]
+ //SEG75 [38] call form_set_screen param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ //SEG76 [174] phi from menu::@20 to form_set_screen [phi:menu::@20->form_set_screen]
jsr form_set_screen
//SEG77 [39] phi from menu::@20 to menu::@21 [phi:menu::@20->menu::@21]
//SEG78 menu::@21
- //SEG79 [40] call form_render_values param-assignment [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] ( main:2::menu:10 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
- //SEG80 [119] phi from menu::@21 to form_render_values [phi:menu::@21->form_render_values]
+ //SEG79 [40] call form_render_values param-assignment [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] ( main:2::menu:10 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
+ //SEG80 [164] phi from menu::@21 to form_render_values [phi:menu::@21->form_render_values]
jsr form_render_values
//SEG81 [41] phi from menu::@21 menu::@7 to menu::@2 [phi:menu::@21/menu::@7->menu::@2]
- //SEG82 [41] phi (byte) key_right_debounce#11 = (byte) key_right_debounce#1 [phi:menu::@21/menu::@7->menu::@2#0] -- register_copy
- //SEG83 [41] phi (byte) form_field_idx#14 = (byte) form_field_idx#1 [phi:menu::@21/menu::@7->menu::@2#1] -- register_copy
- //SEG84 [41] phi (byte) key_down_debounce#11 = (byte) key_down_debounce#1 [phi:menu::@21/menu::@7->menu::@2#2] -- register_copy
+ //SEG82 [41] phi (byte) form_field_idx#14 = (byte) form_field_idx#1 [phi:menu::@21/menu::@7->menu::@2#0] -- register_copy
+ //SEG83 [41] phi (byte) keyboard_modifiers#10 = (byte) keyboard_modifiers#20 [phi:menu::@21/menu::@7->menu::@2#1] -- register_copy
+ //SEG84 [41] phi (byte) keyboard_events_size#24 = (byte) keyboard_events_size#22 [phi:menu::@21/menu::@7->menu::@2#2] -- register_copy
//SEG85 [41] phi (signed byte) form_cursor_count#13 = (signed byte) form_cursor_count#1 [phi:menu::@21/menu::@7->menu::@2#3] -- register_copy
//SEG86 menu::@2
- //SEG87 [42] if(true) goto menu::@5 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ) -- true_then_la1
+ //SEG87 [42] if(true) goto menu::@5 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ) -- true_then_la1
//SEG88 menu::@return
- //SEG89 [43] return [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] )
+ //SEG89 [43] return [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 keyboard_modifiers#10 form_field_idx#14 ] )
//SEG90 menu::@5
b5:
- //SEG91 [44] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto menu::@5 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ( main:2::menu:10 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
+ //SEG91 [44] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto menu::@5 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] ( main:2::menu:10 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
lda RASTER
cmp #$ff
bne b5
//SEG92 [45] phi from menu::@5 to menu::@7 [phi:menu::@5->menu::@7]
//SEG93 menu::@7
- //SEG94 [46] call form_control param-assignment [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
+ //SEG94 [46] call form_control param-assignment [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] ( main:2::menu:10 [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] )
jsr form_control
jmp b5
}
//SEG95 form_control
form_control: {
- .label field = 6
- //SEG96 [47] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#1 ] ) -- vbuxx=vbuz1
+ .label field = 7
+ //SEG96 [47] (byte) form_field_ptr::field_idx#1 ← (byte) form_field_idx#14 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#1 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#1 ] ) -- vbuxx=vbuz1
ldx form_field_idx
- //SEG97 [48] 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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#0 ] )
- //SEG98 [113] phi from form_control to form_field_ptr [phi:form_control->form_field_ptr]
- //SEG99 [113] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#1 [phi:form_control->form_field_ptr#0] -- register_copy
+ //SEG97 [48] call form_field_ptr param-assignment [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] )
+ //SEG98 [158] phi from form_control to form_field_ptr [phi:form_control->form_field_ptr]
+ //SEG99 [158] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#1 [phi:form_control->form_field_ptr#0] -- register_copy
jsr form_field_ptr
- //SEG100 [49] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::return#3 ] )
- // (byte*) form_field_ptr::return#3 = (byte*) form_field_ptr::return#0 // register copy zp ZP_WORD:6
- //SEG101 form_control::@32
- //SEG102 [50] (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:46 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 ] )
- // (byte*) form_control::field#0 = (byte*) form_field_ptr::return#3 // register copy zp ZP_WORD:6
- //SEG103 [51] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] ) -- vbsz1=_dec_vbsz1
+ //SEG100 [49] (byte*) form_field_ptr::return#3 ← (byte*) form_field_ptr::return#0 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#3 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#3 ] )
+ // (byte*) form_field_ptr::return#3 = (byte*) form_field_ptr::return#0 // register copy zp ZP_WORD:7
+ //SEG101 form_control::@28
+ //SEG102 [50] (byte*) form_control::field#0 ← (byte*) form_field_ptr::return#3 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_control::field#0 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_control::field#0 ] )
+ // (byte*) form_control::field#0 = (byte*) form_field_ptr::return#3 // register copy zp ZP_WORD:7
+ //SEG103 [51] (signed byte) form_cursor_count#5 ← -- (signed byte) form_cursor_count#13 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ) -- vbsz1=_dec_vbsz1
dec form_cursor_count
- //SEG104 [52] 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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#5 ] ) -- vbsz1_ge_0_then_la1
+ //SEG104 [52] if((signed byte) form_cursor_count#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@31 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#5 ] ) -- vbsz1_ge_0_then_la1
lda form_cursor_count
cmp #0
bpl b1
- //SEG105 [53] phi from form_control::@32 to form_control::@1 [phi:form_control::@32->form_control::@1]
- //SEG106 [53] phi (signed byte) form_cursor_count#15 = (const signed byte) FORM_CURSOR_BLINK#0 [phi:form_control::@32->form_control::@1#0] -- vbsz1=vbsc1
+ //SEG105 [53] phi from form_control::@28 to form_control::@1 [phi:form_control::@28->form_control::@1]
+ //SEG106 [53] phi (signed byte) form_cursor_count#15 = (const signed byte) FORM_CURSOR_BLINK#0 [phi:form_control::@28->form_control::@1#0] -- vbsz1=vbsc1
lda #FORM_CURSOR_BLINK
sta form_cursor_count
//SEG107 form_control::@1
b1:
- //SEG108 [54] 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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ) -- vbsz1_ge_vbuc1_then_la1
+ //SEG108 [54] 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 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ) -- vbsz1_ge_vbuc1_then_la1
lda form_cursor_count
sec
sbc #FORM_CURSOR_BLINK/2
@@ -9739,158 +11796,117 @@ form_control: {
bmi !b2+
jmp b2
!b2:
- //SEG109 form_control::@17
- //SEG110 [55] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$6 ] ) -- vbuaa=_deref_pbuz1_bor_vbuc1
+ //SEG109 form_control::@15
+ //SEG110 [55] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$6 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$6 ] ) -- vbuaa=_deref_pbuz1_bor_vbuc1
lda #$80
ldy #0
ora (field),y
- //SEG111 [56] *((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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ) -- _deref_pbuz1=vbuaa
+ //SEG111 [56] *((byte*) form_control::field#0) ← (byte/word/dword~) form_control::$6 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ) -- _deref_pbuz1=vbuaa
sta (field),y
- //SEG112 [57] phi from form_control::@17 form_control::@2 to form_control::@3 [phi:form_control::@17/form_control::@2->form_control::@3]
+ //SEG112 [57] phi from form_control::@15 form_control::@2 to form_control::@3 [phi:form_control::@15/form_control::@2->form_control::@3]
//SEG113 form_control::@3
b3:
- //SEG114 [58] 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:46 [ 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 ] )
- //SEG115 [101] phi from form_control::@3 to keyboard_key_pressed [phi:form_control::@3->keyboard_key_pressed]
- //SEG116 [101] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_CRSR_DOWN#0 [phi:form_control::@3->keyboard_key_pressed#0] -- vbuxx=vbuc1
- ldx #KEY_CRSR_DOWN
- jsr keyboard_key_pressed
- //SEG117 [59] (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:46 [ 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 ] )
- // (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#0 // register copy reg byte a
- //SEG118 form_control::@33
- //SEG119 [60] (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:46 [ 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 ] )
- // (byte) form_control::key_down#0 = (byte) keyboard_key_pressed::return#2 // register copy reg byte a
- //SEG120 [61] 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:46 [ 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 ] ) -- vbuaa_eq_vbuz1_then_la1
- cmp key_down_debounce
- beq b4
- //SEG121 form_control::@19
- //SEG122 [62] (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:46 [ 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 ] ) -- vbuz1=vbuaa
- sta key_down_debounce
- //SEG123 [63] 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:46 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#23 ] ) -- vbuaa_eq_0_then_la1
- cmp #0
- beq b4
- //SEG124 form_control::@20
- //SEG125 [64] (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:46 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 key_down_debounce#23 form_control::$13 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1
+ //SEG114 [58] call keyboard_event_scan param-assignment [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] )
+ //SEG115 [95] phi from form_control::@3 to keyboard_event_scan [phi:form_control::@3->keyboard_event_scan]
+ jsr keyboard_event_scan
+ //SEG116 [59] phi from form_control::@3 to form_control::@29 [phi:form_control::@3->form_control::@29]
+ //SEG117 form_control::@29
+ //SEG118 [60] call keyboard_event_get param-assignment [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#2 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#2 ] )
+ jsr keyboard_event_get
+ //SEG119 [61] (byte) keyboard_event_get::return#3 ← (byte) keyboard_event_get::return#2 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#3 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#3 ] )
+ // (byte) keyboard_event_get::return#3 = (byte) keyboard_event_get::return#2 // register copy reg byte a
+ //SEG120 form_control::@30
+ //SEG121 [62] (byte) form_control::key_event#0 ← (byte) keyboard_event_get::return#3 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] )
+ // (byte) form_control::key_event#0 = (byte) keyboard_event_get::return#3 // register copy reg byte a
+ //SEG122 [63] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_DOWN#0) goto form_control::@4 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::key_event#0 ] ) -- vbuaa_neq_vbuc1_then_la1
+ cmp #KEY_CRSR_DOWN
+ bne b4
+ //SEG123 form_control::@17
+ //SEG124 [64] (byte~) form_control::$12 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_control::$12 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_control::$12 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1
lda #$7f
ldy #0
and (field),y
- //SEG126 [65] *((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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] ) -- _deref_pbuz1=vbuaa
+ //SEG125 [65] *((byte*) form_control::field#0) ← (byte~) form_control::$12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ) -- _deref_pbuz1=vbuaa
sta (field),y
- //SEG127 [66] 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:46 [ form_field_idx#14 key_right_debounce#11 keyboard_key_pressed::return#0 key_down_debounce#23 ] )
- //SEG128 [101] phi from form_control::@20 to keyboard_key_pressed [phi:form_control::@20->keyboard_key_pressed]
- //SEG129 [101] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_RSHIFT#0 [phi:form_control::@20->keyboard_key_pressed#0] -- vbuxx=vbuc1
- ldx #KEY_RSHIFT
- jsr keyboard_key_pressed
- //SEG130 [67] (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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#4 ] )
- // (byte) keyboard_key_pressed::return#4 = (byte) keyboard_key_pressed::return#0 // register copy reg byte a
- //SEG131 form_control::@35
- //SEG132 [68] (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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 form_control::$14 ] )
- // (byte~) form_control::$14 = (byte) keyboard_key_pressed::return#4 // register copy reg byte a
- //SEG133 [69] 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:46 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 ] ) -- vbuaa_neq_0_then_la1
+ //SEG126 [66] (byte~) form_control::$13 ← (byte) keyboard_modifiers#18 & (const byte) KEY_MODIFIER_SHIFT#0 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::$13 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::$13 ] ) -- vbuaa=vbuz1_band_vbuc1
+ lda #KEY_MODIFIER_SHIFT
+ and keyboard_modifiers
+ //SEG127 [67] if((byte~) form_control::$13!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@5 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 ] ) -- vbuaa_neq_0_then_la1
cmp #0
- bne b6
- //SEG134 form_control::@21
- //SEG135 [70] (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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] ) -- vbuz1=_inc_vbuz1
+ bne b5
+ //SEG128 form_control::@18
+ //SEG129 [68] (byte) form_field_idx#40 ← ++ (byte) form_field_idx#14 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ) -- vbuz1=_inc_vbuz1
inc form_field_idx
- //SEG136 [71] 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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#41 ] ) -- vbuz1_neq_vbuc1_then_la1
+ //SEG130 [69] if((byte) form_field_idx#40!=(const byte) form_fields_cnt#0) goto form_control::@32 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#40 ] ) -- vbuz1_neq_vbuc1_then_la1
lda form_field_idx
cmp #form_fields_cnt
- bne b8
- //SEG137 [72] phi from form_control::@21 to form_control::@8 [phi:form_control::@21->form_control::@8]
- //SEG138 [72] phi (byte) form_field_idx#32 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@21->form_control::@8#0] -- vbuz1=vbuc1
- lda #0
+ bne b7
+ //SEG131 [70] phi from form_control::@18 to form_control::@7 [phi:form_control::@18->form_control::@7]
+ //SEG132 [70] phi (byte) form_field_idx#30 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_control::@18->form_control::@7#0] -- vbuz1=vbuc1
+ tya
sta form_field_idx
- //SEG139 form_control::@8
- b8:
- //SEG140 [73] phi from form_control::@8 to form_control::@return [phi:form_control::@8->form_control::@return]
- //SEG141 [73] phi (byte) key_right_debounce#13 = (byte) key_right_debounce#11 [phi:form_control::@8->form_control::@return#0] -- register_copy
- //SEG142 [73] phi (byte) form_field_idx#18 = (byte) form_field_idx#32 [phi:form_control::@8->form_control::@return#1] -- register_copy
- //SEG143 [73] phi (byte) key_down_debounce#13 = (byte) key_down_debounce#23 [phi:form_control::@8->form_control::@return#2] -- register_copy
- //SEG144 [73] phi (signed byte) form_cursor_count#16 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:form_control::@8->form_control::@return#3] -- vbsz1=vbuc1
+ //SEG133 form_control::@7
+ b7:
+ //SEG134 [71] phi from form_control::@7 to form_control::@return [phi:form_control::@7->form_control::@return]
+ //SEG135 [71] phi (byte) form_field_idx#18 = (byte) form_field_idx#30 [phi:form_control::@7->form_control::@return#0] -- register_copy
+ //SEG136 [71] phi (signed byte) form_cursor_count#16 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:form_control::@7->form_control::@return#1] -- vbsz1=vbuc1
lda #FORM_CURSOR_BLINK/2
sta form_cursor_count
- //SEG145 [73] phi from form_control::@14 form_control::@26 form_control::@34 to form_control::@return [phi:form_control::@14/form_control::@26/form_control::@34->form_control::@return]
- //SEG146 [73] phi (byte) key_right_debounce#13 = (byte) key_right_debounce#21 [phi:form_control::@14/form_control::@26/form_control::@34->form_control::@return#0] -- register_copy
- //SEG147 [73] phi (byte) form_field_idx#18 = (byte) form_field_idx#14 [phi:form_control::@14/form_control::@26/form_control::@34->form_control::@return#1] -- register_copy
- //SEG148 [73] phi (byte) key_down_debounce#13 = (byte) key_down_debounce#20 [phi:form_control::@14/form_control::@26/form_control::@34->form_control::@return#2] -- register_copy
- //SEG149 [73] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@14/form_control::@26/form_control::@34->form_control::@return#3] -- register_copy
- //SEG150 form_control::@return
+ //SEG137 [71] phi from form_control::@12 form_control::@4 to form_control::@return [phi:form_control::@12/form_control::@4->form_control::@return]
+ //SEG138 [71] phi (byte) form_field_idx#18 = (byte) form_field_idx#14 [phi:form_control::@12/form_control::@4->form_control::@return#0] -- register_copy
+ //SEG139 [71] phi (signed byte) form_cursor_count#16 = (signed byte) form_cursor_count#15 [phi:form_control::@12/form_control::@4->form_control::@return#1] -- register_copy
+ //SEG140 form_control::@return
breturn:
- //SEG151 [74] return [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#16 key_down_debounce#13 form_field_idx#18 key_right_debounce#13 ] )
+ //SEG141 [72] return [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] ( main:2::menu:10::form_control:46 [ form_cursor_count#16 keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#18 ] )
rts
- //SEG152 [75] phi from form_control::@21 to form_control::@38 [phi:form_control::@21->form_control::@38]
- //SEG153 form_control::@38
- //SEG154 [72] phi from form_control::@38 form_control::@39 to form_control::@8 [phi:form_control::@38/form_control::@39->form_control::@8]
- //SEG155 [72] phi (byte) form_field_idx#32 = (byte) form_field_idx#41 [phi:form_control::@38/form_control::@39->form_control::@8#0] -- register_copy
- //SEG156 form_control::@6
- b6:
- //SEG157 [76] (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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] ) -- vbuz1=_dec_vbuz1
+ //SEG142 [73] phi from form_control::@18 to form_control::@32 [phi:form_control::@18->form_control::@32]
+ //SEG143 form_control::@32
+ //SEG144 [70] phi from form_control::@32 form_control::@33 to form_control::@7 [phi:form_control::@32/form_control::@33->form_control::@7]
+ //SEG145 [70] phi (byte) form_field_idx#30 = (byte) form_field_idx#40 [phi:form_control::@32/form_control::@33->form_control::@7#0] -- register_copy
+ //SEG146 form_control::@5
+ b5:
+ //SEG147 [74] (byte) form_field_idx#41 ← -- (byte) form_field_idx#14 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ) -- vbuz1=_dec_vbuz1
dec form_field_idx
- //SEG158 [77] 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:46 [ key_right_debounce#11 key_down_debounce#23 form_field_idx#42 ] ) -- vbuz1_neq_vbuc1_then_la1
+ //SEG148 [75] if((byte) form_field_idx#41!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@33 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#20 keyboard_modifiers#18 form_field_idx#41 ] ) -- vbuz1_neq_vbuc1_then_la1
lda form_field_idx
cmp #$ff
- bne b8
- //SEG159 [72] phi from form_control::@6 to form_control::@8 [phi:form_control::@6->form_control::@8]
- //SEG160 [72] phi (byte) form_field_idx#32 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@6->form_control::@8#0] -- vbuz1=vbuc1
+ bne b7
+ //SEG149 [70] phi from form_control::@5 to form_control::@7 [phi:form_control::@5->form_control::@7]
+ //SEG150 [70] phi (byte) form_field_idx#30 = (const byte) form_fields_cnt#0-(byte/signed byte/word/signed word/dword/signed dword) 1 [phi:form_control::@5->form_control::@7#0] -- vbuz1=vbuc1
lda #form_fields_cnt-1
sta form_field_idx
- jmp b8
- //SEG161 [78] phi from form_control::@6 to form_control::@39 [phi:form_control::@6->form_control::@39]
- //SEG162 form_control::@39
- //SEG163 [79] phi from form_control::@19 form_control::@33 to form_control::@4 [phi:form_control::@19/form_control::@33->form_control::@4]
- //SEG164 [79] phi (byte) key_down_debounce#20 = (byte) key_down_debounce#23 [phi:form_control::@19/form_control::@33->form_control::@4#0] -- register_copy
- //SEG165 form_control::@4
+ jmp b7
+ //SEG151 [76] phi from form_control::@5 to form_control::@33 [phi:form_control::@5->form_control::@33]
+ //SEG152 form_control::@33
+ //SEG153 form_control::@4
b4:
- //SEG166 [80] 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:46 [ 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 ] )
- //SEG167 [101] phi from form_control::@4 to keyboard_key_pressed [phi:form_control::@4->keyboard_key_pressed]
- //SEG168 [101] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_CRSR_RIGHT#0 [phi:form_control::@4->keyboard_key_pressed#0] -- vbuxx=vbuc1
- ldx #KEY_CRSR_RIGHT
- jsr keyboard_key_pressed
- //SEG169 [81] (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:46 [ 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 ] )
- // (byte) keyboard_key_pressed::return#3 = (byte) keyboard_key_pressed::return#0 // register copy reg byte a
- //SEG170 form_control::@34
- //SEG171 [82] (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:46 [ 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 ] )
- // (byte) form_control::key_right#0 = (byte) keyboard_key_pressed::return#3 // register copy reg byte a
- //SEG172 [83] 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:46 [ 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 ] ) -- vbuaa_eq_vbuz1_then_la1
- cmp key_right_debounce
- beq breturn
- //SEG173 form_control::@26
- //SEG174 [84] (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:46 [ 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 ] ) -- vbuz1=vbuaa
- sta key_right_debounce
- //SEG175 [85] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- vbuaa_eq_0_then_la1
+ //SEG154 [77] if((byte) form_control::key_event#0!=(const byte) KEY_CRSR_RIGHT#0) goto form_control::@return [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- vbuaa_neq_vbuc1_then_la1
+ cmp #KEY_CRSR_RIGHT
+ bne breturn
+ //SEG155 form_control::@23
+ //SEG156 [78] (byte~) form_control::$24 ← (byte) keyboard_modifiers#18 & (const byte) KEY_MODIFIER_SHIFT#0 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::$24 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 form_control::$24 ] ) -- vbuaa=vbuz1_band_vbuc1
+ lda #KEY_MODIFIER_SHIFT
+ and keyboard_modifiers
+ //SEG157 [79] if((byte~) form_control::$24!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto form_control::@10 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- vbuaa_neq_0_then_la1
cmp #0
- beq breturn
- //SEG176 [86] phi from form_control::@26 to form_control::@27 [phi:form_control::@26->form_control::@27]
- //SEG177 form_control::@27
- //SEG178 [87] 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:46 [ 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 ] )
- //SEG179 [101] phi from form_control::@27 to keyboard_key_pressed [phi:form_control::@27->keyboard_key_pressed]
- //SEG180 [101] phi (byte) keyboard_key_pressed::key#4 = (const byte) KEY_RSHIFT#0 [phi:form_control::@27->keyboard_key_pressed#0] -- vbuxx=vbuc1
- ldx #KEY_RSHIFT
- jsr keyboard_key_pressed
- //SEG181 [88] (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:46 [ 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 ] )
- // (byte) keyboard_key_pressed::return#10 = (byte) keyboard_key_pressed::return#0 // register copy reg byte a
- //SEG182 form_control::@36
- //SEG183 [89] (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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 form_control::$28 ] )
- // (byte~) form_control::$28 = (byte) keyboard_key_pressed::return#10 // register copy reg byte a
- //SEG184 [90] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- vbuaa_neq_0_then_la1
- cmp #0
- bne b12
- //SEG185 form_control::@28
- //SEG186 [91] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
+ bne b10
+ //SEG158 form_control::@24
+ //SEG159 [80] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
ldx form_field_idx
inc form_fields_val,x
- //SEG187 [92] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1_le_pbuc2_derefidx_vbuz1_then_la1
+ //SEG160 [81] 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::@12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1_le_pbuc2_derefidx_vbuz1_then_la1
ldy form_field_idx
lda form_fields_val,y
cmp form_fields_max,y
- bcc b14
- beq b14
- //SEG188 form_control::@29
- //SEG189 [93] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1=vbuc2
+ bcc b12
+ beq b12
+ //SEG161 form_control::@25
+ //SEG162 [82] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1=vbuc2
lda #0
sta form_fields_val,y
- //SEG190 form_control::@14
- b14:
- //SEG191 [94] *((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:46 [ form_field_idx#14 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2
+ //SEG163 form_control::@12
+ b12:
+ //SEG164 [83] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_cursor_count#15 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2
ldy form_field_idx
lda form_fields_val,y
tay
@@ -9898,161 +11914,403 @@ form_control: {
ldy #0
sta (field),y
jmp breturn
- //SEG192 form_control::@12
- b12:
- //SEG193 [95] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1=_dec_pbuc1_derefidx_vbuz1
+ //SEG165 form_control::@10
+ b10:
+ //SEG166 [84] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1=_dec_pbuc1_derefidx_vbuz1
ldx form_field_idx
lda form_fields_val,x
sec
sbc #1
sta form_fields_val,x
- //SEG194 [96] 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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
+ //SEG167 [85] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#14)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@12 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
ldy form_field_idx
lda form_fields_val,y
cmp #$ff
- bne b14
- //SEG195 form_control::@31
- //SEG196 [97] *((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:46 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
+ bne b12
+ //SEG168 form_control::@27
+ //SEG169 [86] *((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 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ form_field_idx#14 keyboard_events_size#20 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
lda form_fields_max,y
sta form_fields_val,y
- jmp b14
- //SEG197 form_control::@2
+ jmp b12
+ //SEG170 form_control::@2
b2:
- //SEG198 [98] (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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 form_control::$7 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1
+ //SEG171 [87] (byte~) form_control::$7 ← *((byte*) form_control::field#0) & (byte/signed byte/word/signed word/dword/signed dword) 127 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$7 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 form_control::$7 ] ) -- vbuaa=_deref_pbuz1_band_vbuc1
lda #$7f
ldy #0
and (field),y
- //SEG199 [99] *((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:46 [ key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 ] ) -- _deref_pbuz1=vbuaa
+ //SEG172 [88] *((byte*) form_control::field#0) ← (byte~) form_control::$7 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ( main:2::menu:10::form_control:46 [ keyboard_events_size#24 form_field_idx#14 form_control::field#0 form_cursor_count#15 ] ) -- _deref_pbuz1=vbuaa
sta (field),y
jmp b3
- //SEG200 [100] phi from form_control::@32 to form_control::@37 [phi:form_control::@32->form_control::@37]
- //SEG201 form_control::@37
- //SEG202 [53] phi from form_control::@37 to form_control::@1 [phi:form_control::@37->form_control::@1]
- //SEG203 [53] phi (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#5 [phi:form_control::@37->form_control::@1#0] -- register_copy
+ //SEG173 [89] phi from form_control::@28 to form_control::@31 [phi:form_control::@28->form_control::@31]
+ //SEG174 form_control::@31
+ //SEG175 [53] phi from form_control::@31 to form_control::@1 [phi:form_control::@31->form_control::@1]
+ //SEG176 [53] phi (signed byte) form_cursor_count#15 = (signed byte) form_cursor_count#5 [phi:form_control::@31->form_control::@1#0] -- register_copy
}
-//SEG204 keyboard_key_pressed
-keyboard_key_pressed: {
- //SEG205 [102] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] ) -- vbuyy=vbuxx_band_vbuc1
- txa
- and #7
- tay
- //SEG206 [103] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] ) -- vbuaa=vbuxx_ror_3
- txa
- lsr
- lsr
- lsr
- //SEG207 [104] (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:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ 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:46::keyboard_key_pressed:80 [ 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:46::keyboard_key_pressed:87 [ 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 ] ) -- vbuxx=vbuaa
- tax
- //SEG208 [105] call keyboard_matrix_read param-assignment [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ 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::return#0 ] )
+//SEG177 keyboard_event_get
+keyboard_event_get: {
+ //SEG178 [90] if((byte) keyboard_events_size#17!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_get::@1 [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] ) -- vbuz1_neq_0_then_la1
+ lda keyboard_events_size
+ bne b1
+ //SEG179 [91] phi from keyboard_event_get to keyboard_event_get::@return [phi:keyboard_event_get->keyboard_event_get::@return]
+ //SEG180 [91] phi (byte) keyboard_events_size#20 = (byte) keyboard_events_size#17 [phi:keyboard_event_get->keyboard_event_get::@return#0] -- register_copy
+ //SEG181 [91] phi (byte) keyboard_event_get::return#2 = (byte/word/signed word/dword/signed dword) 255 [phi:keyboard_event_get->keyboard_event_get::@return#1] -- vbuaa=vbuc1
+ lda #$ff
+ //SEG182 keyboard_event_get::@return
+ breturn:
+ //SEG183 [92] return [ keyboard_events_size#20 keyboard_event_get::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#20 keyboard_event_get::return#2 ] )
+ rts
+ //SEG184 keyboard_event_get::@1
+ b1:
+ //SEG185 [93] (byte) keyboard_events_size#4 ← -- (byte) keyboard_events_size#17 [ keyboard_events_size#4 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_events_size#4 ] ) -- vbuz1=_dec_vbuz1
+ dec keyboard_events_size
+ //SEG186 [94] (byte) keyboard_event_get::return#0 ← *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#4) [ keyboard_event_get::return#0 keyboard_events_size#4 ] ( main:2::menu:10::form_control:46::keyboard_event_get:60 [ form_field_idx#14 keyboard_modifiers#18 form_control::field#0 form_cursor_count#15 keyboard_event_get::return#0 keyboard_events_size#4 ] ) -- vbuaa=pbuc1_derefidx_vbuz1
+ ldy keyboard_events_size
+ lda keyboard_events,y
+ //SEG187 [91] phi from keyboard_event_get::@1 to keyboard_event_get::@return [phi:keyboard_event_get::@1->keyboard_event_get::@return]
+ //SEG188 [91] phi (byte) keyboard_events_size#20 = (byte) keyboard_events_size#4 [phi:keyboard_event_get::@1->keyboard_event_get::@return#0] -- register_copy
+ //SEG189 [91] phi (byte) keyboard_event_get::return#2 = (byte) keyboard_event_get::return#0 [phi:keyboard_event_get::@1->keyboard_event_get::@return#1] -- register_copy
+ jmp breturn
+}
+//SEG190 keyboard_event_scan
+keyboard_event_scan: {
+ .label row_scan = $d
+ .label keycode = 5
+ .label row = 3
+ //SEG191 [96] phi from keyboard_event_scan to keyboard_event_scan::@1 [phi:keyboard_event_scan->keyboard_event_scan::@1]
+ //SEG192 [96] phi (byte) keyboard_events_size#43 = (byte) keyboard_events_size#24 [phi:keyboard_event_scan->keyboard_event_scan::@1#0] -- register_copy
+ //SEG193 [96] phi (byte) keyboard_event_scan::keycode#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#1] -- vbuz1=vbuc1
+ lda #0
+ sta keycode
+ //SEG194 [96] phi (byte) keyboard_event_scan::row#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan->keyboard_event_scan::@1#2] -- vbuz1=vbuc1
+ sta row
+ //SEG195 [96] phi from keyboard_event_scan::@8 to keyboard_event_scan::@1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@1]
+ //SEG196 [96] phi (byte) keyboard_events_size#43 = (byte) keyboard_events_size#17 [phi:keyboard_event_scan::@8->keyboard_event_scan::@1#0] -- register_copy
+ //SEG197 [96] phi (byte) keyboard_event_scan::keycode#11 = (byte) keyboard_event_scan::keycode#14 [phi:keyboard_event_scan::@8->keyboard_event_scan::@1#1] -- register_copy
+ //SEG198 [96] phi (byte) keyboard_event_scan::row#2 = (byte) keyboard_event_scan::row#1 [phi:keyboard_event_scan::@8->keyboard_event_scan::@1#2] -- register_copy
+ //SEG199 keyboard_event_scan::@1
+ b1:
+ //SEG200 [97] (byte) keyboard_matrix_read::rowid#0 ← (byte) keyboard_event_scan::row#2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::rowid#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::rowid#0 ] ) -- vbuxx=vbuz1
+ ldx row
+ //SEG201 [98] call keyboard_matrix_read param-assignment [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] )
jsr keyboard_matrix_read
- //SEG209 [106] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#2 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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::return#2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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::return#2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ 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::return#2 ] )
+ //SEG202 [99] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#2 ] )
// (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::return#0 // register copy reg byte a
- //SEG210 keyboard_key_pressed::@2
- //SEG211 [107] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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::$2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ 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::$2 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ 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::$2 ] )
- // (byte~) keyboard_key_pressed::$2 = (byte) keyboard_matrix_read::return#2 // register copy reg byte a
- //SEG212 [108] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy
- and keyboard_matrix_col_bitmask,y
- //SEG213 keyboard_key_pressed::@return
- //SEG214 [109] return [ keyboard_key_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58 [ 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:46::keyboard_key_pressed:66 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80 [ form_field_idx#14 key_right_debounce#11 form_control::field#0 form_cursor_count#15 key_down_debounce#20 keyboard_key_pressed::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 key_down_debounce#20 key_right_debounce#21 keyboard_key_pressed::return#0 ] )
+ //SEG203 keyboard_event_scan::@25
+ //SEG204 [100] (byte) keyboard_event_scan::row_scan#0 ← (byte) keyboard_matrix_read::return#2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ) -- vbuz1=vbuaa
+ sta row_scan
+ //SEG205 [101] if((byte) keyboard_event_scan::row_scan#0==*((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2)) goto keyboard_event_scan::@2 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_event_scan::row_scan#0 ] ) -- vbuz1_eq_pbuc1_derefidx_vbuz2_then_la1
+ ldy row
+ lda keyboard_scan_values,y
+ cmp row_scan
+ bne !b2+
+ jmp b2
+ !b2:
+ //SEG206 [102] phi from keyboard_event_scan::@25 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@25->keyboard_event_scan::@3]
+ //SEG207 [102] phi (byte) keyboard_events_size#14 = (byte) keyboard_events_size#43 [phi:keyboard_event_scan::@25->keyboard_event_scan::@3#0] -- register_copy
+ //SEG208 [102] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#11 [phi:keyboard_event_scan::@25->keyboard_event_scan::@3#1] -- register_copy
+ //SEG209 [102] phi (byte) keyboard_event_scan::col#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@25->keyboard_event_scan::@3#2] -- vbuxx=vbuc1
+ ldx #0
+ //SEG210 [102] phi from keyboard_event_scan::@4 to keyboard_event_scan::@3 [phi:keyboard_event_scan::@4->keyboard_event_scan::@3]
+ //SEG211 [102] phi (byte) keyboard_events_size#14 = (byte) keyboard_events_size#44 [phi:keyboard_event_scan::@4->keyboard_event_scan::@3#0] -- register_copy
+ //SEG212 [102] phi (byte) keyboard_event_scan::keycode#10 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@4->keyboard_event_scan::@3#1] -- register_copy
+ //SEG213 [102] phi (byte) keyboard_event_scan::col#2 = (byte) keyboard_event_scan::col#1 [phi:keyboard_event_scan::@4->keyboard_event_scan::@3#2] -- register_copy
+ //SEG214 keyboard_event_scan::@3
+ b3:
+ //SEG215 [103] (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan#0 ^ *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$3 ] ) -- vbuaa=vbuz1_bxor_pbuc1_derefidx_vbuz2
+ lda row_scan
+ ldy row
+ eor keyboard_scan_values,y
+ //SEG216 [104] (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$4 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuxx
+ and keyboard_matrix_col_bitmask,x
+ //SEG217 [105] if((byte~) keyboard_event_scan::$4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) -- vbuaa_eq_0_then_la1
+ cmp #0
+ beq b4
+ //SEG218 keyboard_event_scan::@14
+ //SEG219 [106] if((byte) keyboard_events_size#14==(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@4 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) -- vbuz1_eq_vbuc1_then_la1
+ lda keyboard_events_size
+ cmp #8
+ beq b4
+ //SEG220 keyboard_event_scan::@15
+ //SEG221 [107] (byte) keyboard_event_scan::event_type#0 ← (byte) keyboard_event_scan::row_scan#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_event_scan::col#2) [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::event_type#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::event_type#0 ] ) -- vbuaa=vbuz1_band_pbuc1_derefidx_vbuxx
+ lda keyboard_matrix_col_bitmask,x
+ and row_scan
+ //SEG222 [108] if((byte) keyboard_event_scan::event_type#0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@6 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) -- vbuaa_neq_0_then_la1
+ cmp #0
+ bne b6
+ //SEG223 keyboard_event_scan::@16
+ //SEG224 [109] (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode#10 | (byte/signed byte/word/signed word/dword/signed dword) 64 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$12 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 keyboard_event_scan::$12 ] ) -- vbuaa=vbuz1_bor_vbuc1
+ lda #$40
+ ora keycode
+ //SEG225 [110] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#14) ← (byte/word/dword~) keyboard_event_scan::$12 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) -- pbuc1_derefidx_vbuz1=vbuaa
+ ldy keyboard_events_size
+ sta keyboard_events,y
+ //SEG226 [111] (byte) keyboard_events_size#2 ← ++ (byte) keyboard_events_size#14 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#2 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#2 ] ) -- vbuz1=_inc_vbuz1
+ inc keyboard_events_size
+ //SEG227 [112] phi from keyboard_event_scan::@14 keyboard_event_scan::@16 keyboard_event_scan::@3 keyboard_event_scan::@6 to keyboard_event_scan::@4 [phi:keyboard_event_scan::@14/keyboard_event_scan::@16/keyboard_event_scan::@3/keyboard_event_scan::@6->keyboard_event_scan::@4]
+ //SEG228 [112] phi (byte) keyboard_events_size#44 = (byte) keyboard_events_size#14 [phi:keyboard_event_scan::@14/keyboard_event_scan::@16/keyboard_event_scan::@3/keyboard_event_scan::@6->keyboard_event_scan::@4#0] -- register_copy
+ //SEG229 keyboard_event_scan::@4
+ b4:
+ //SEG230 [113] (byte) keyboard_event_scan::keycode#15 ← ++ (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ) -- vbuz1=_inc_vbuz1
+ inc keycode
+ //SEG231 [114] (byte) keyboard_event_scan::col#1 ← ++ (byte) keyboard_event_scan::col#2 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ) -- vbuxx=_inc_vbuxx
+ inx
+ //SEG232 [115] if((byte) keyboard_event_scan::col#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@3 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#1 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ) -- vbuxx_neq_vbuc1_then_la1
+ cpx #8
+ bne b3
+ //SEG233 keyboard_event_scan::@18
+ //SEG234 [116] *((const byte[8]) keyboard_scan_values#0 + (byte) keyboard_event_scan::row#2) ← (byte) keyboard_event_scan::row_scan#0 [ keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#15 keyboard_events_size#44 ] ) -- pbuc1_derefidx_vbuz1=vbuz2
+ lda row_scan
+ ldy row
+ sta keyboard_scan_values,y
+ //SEG235 [117] phi from keyboard_event_scan::@18 keyboard_event_scan::@2 to keyboard_event_scan::@8 [phi:keyboard_event_scan::@18/keyboard_event_scan::@2->keyboard_event_scan::@8]
+ //SEG236 [117] phi (byte) keyboard_events_size#17 = (byte) keyboard_events_size#44 [phi:keyboard_event_scan::@18/keyboard_event_scan::@2->keyboard_event_scan::@8#0] -- register_copy
+ //SEG237 [117] phi (byte) keyboard_event_scan::keycode#14 = (byte) keyboard_event_scan::keycode#15 [phi:keyboard_event_scan::@18/keyboard_event_scan::@2->keyboard_event_scan::@8#1] -- register_copy
+ //SEG238 keyboard_event_scan::@8
+ b8:
+ //SEG239 [118] (byte) keyboard_event_scan::row#1 ← ++ (byte) keyboard_event_scan::row#2 [ keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ) -- vbuz1=_inc_vbuz1
+ inc row
+ //SEG240 [119] if((byte) keyboard_event_scan::row#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto keyboard_event_scan::@1 [ keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::row#1 keyboard_event_scan::keycode#14 ] ) -- vbuz1_neq_vbuc1_then_la1
+ lda row
+ cmp #8
+ bne b1
+ //SEG241 [120] phi from keyboard_event_scan::@8 to keyboard_event_scan::@20 [phi:keyboard_event_scan::@8->keyboard_event_scan::@20]
+ //SEG242 keyboard_event_scan::@20
+ //SEG243 [121] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] )
+ //SEG244 [149] phi from keyboard_event_scan::@20 to keyboard_event_pressed [phi:keyboard_event_scan::@20->keyboard_event_pressed]
+ //SEG245 [149] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_LSHIFT#0 [phi:keyboard_event_scan::@20->keyboard_event_pressed#0] -- vbuz1=vbuc1
+ lda #KEY_LSHIFT
+ sta keyboard_event_pressed.keycode
+ jsr keyboard_event_pressed
+ //SEG246 [122] (byte) keyboard_event_pressed::return#0 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_event_pressed::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#0 ] )
+ // (byte) keyboard_event_pressed::return#0 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a
+ //SEG247 keyboard_event_scan::@26
+ //SEG248 [123] (byte~) keyboard_event_scan::$16 ← (byte) keyboard_event_pressed::return#0 [ keyboard_events_size#17 keyboard_event_scan::$16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_scan::$16 ] )
+ // (byte~) keyboard_event_scan::$16 = (byte) keyboard_event_pressed::return#0 // register copy reg byte a
+ //SEG249 [124] if((byte~) keyboard_event_scan::$16==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@9 [ keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 ] ) -- vbuaa_eq_0_then_la1
+ cmp #0
+ beq b5
+ //SEG250 [125] phi from keyboard_event_scan::@26 to keyboard_event_scan::@21 [phi:keyboard_event_scan::@26->keyboard_event_scan::@21]
+ //SEG251 keyboard_event_scan::@21
+ //SEG252 [126] phi from keyboard_event_scan::@21 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9]
+ //SEG253 [126] phi (byte) keyboard_modifiers#15 = (byte/signed byte/word/signed word/dword/signed dword) 0|(const byte) KEY_MODIFIER_LSHIFT#0 [phi:keyboard_event_scan::@21->keyboard_event_scan::@9#0] -- vbuz1=vbuc1
+ lda #0|KEY_MODIFIER_LSHIFT
+ sta keyboard_modifiers
+ jmp b9
+ //SEG254 [126] phi from keyboard_event_scan::@26 to keyboard_event_scan::@9 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9]
+ b5:
+ //SEG255 [126] phi (byte) keyboard_modifiers#15 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:keyboard_event_scan::@26->keyboard_event_scan::@9#0] -- vbuz1=vbuc1
+ lda #0
+ sta keyboard_modifiers
+ //SEG256 keyboard_event_scan::@9
+ b9:
+ //SEG257 [127] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#15 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#15 ] )
+ //SEG258 [149] phi from keyboard_event_scan::@9 to keyboard_event_pressed [phi:keyboard_event_scan::@9->keyboard_event_pressed]
+ //SEG259 [149] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_RSHIFT#0 [phi:keyboard_event_scan::@9->keyboard_event_pressed#0] -- vbuz1=vbuc1
+ lda #KEY_RSHIFT
+ sta keyboard_event_pressed.keycode
+ jsr keyboard_event_pressed
+ //SEG260 [128] (byte) keyboard_event_pressed::return#1 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#1 ] )
+ // (byte) keyboard_event_pressed::return#1 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a
+ //SEG261 keyboard_event_scan::@27
+ //SEG262 [129] (byte~) keyboard_event_scan::$20 ← (byte) keyboard_event_pressed::return#1 [ keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_scan::$20 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_scan::$20 ] )
+ // (byte~) keyboard_event_scan::$20 = (byte) keyboard_event_pressed::return#1 // register copy reg byte a
+ //SEG263 [130] if((byte~) keyboard_event_scan::$20==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@10 [ keyboard_events_size#17 keyboard_modifiers#15 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 ] ) -- vbuaa_eq_0_then_la1
+ cmp #0
+ beq b10
+ //SEG264 keyboard_event_scan::@22
+ //SEG265 [131] (byte) keyboard_modifiers#3 ← (byte) keyboard_modifiers#15 | (const byte) KEY_MODIFIER_RSHIFT#0 [ keyboard_events_size#17 keyboard_modifiers#3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#3 ] ) -- vbuz1=vbuz1_bor_vbuc1
+ lda #KEY_MODIFIER_RSHIFT
+ ora keyboard_modifiers
+ sta keyboard_modifiers
+ //SEG266 [132] phi from keyboard_event_scan::@22 keyboard_event_scan::@27 to keyboard_event_scan::@10 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10]
+ //SEG267 [132] phi (byte) keyboard_modifiers#16 = (byte) keyboard_modifiers#3 [phi:keyboard_event_scan::@22/keyboard_event_scan::@27->keyboard_event_scan::@10#0] -- register_copy
+ //SEG268 keyboard_event_scan::@10
+ b10:
+ //SEG269 [133] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#16 ] )
+ //SEG270 [149] phi from keyboard_event_scan::@10 to keyboard_event_pressed [phi:keyboard_event_scan::@10->keyboard_event_pressed]
+ //SEG271 [149] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_CTRL#0 [phi:keyboard_event_scan::@10->keyboard_event_pressed#0] -- vbuz1=vbuc1
+ lda #KEY_CTRL
+ sta keyboard_event_pressed.keycode
+ jsr keyboard_event_pressed
+ //SEG272 [134] (byte) keyboard_event_pressed::return#2 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#2 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#2 ] )
+ // (byte) keyboard_event_pressed::return#2 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a
+ //SEG273 keyboard_event_scan::@28
+ //SEG274 [135] (byte~) keyboard_event_scan::$24 ← (byte) keyboard_event_pressed::return#2 [ keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_scan::$24 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_scan::$24 ] )
+ // (byte~) keyboard_event_scan::$24 = (byte) keyboard_event_pressed::return#2 // register copy reg byte a
+ //SEG275 [136] if((byte~) keyboard_event_scan::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@11 [ keyboard_events_size#17 keyboard_modifiers#16 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 ] ) -- vbuaa_eq_0_then_la1
+ cmp #0
+ beq b11
+ //SEG276 keyboard_event_scan::@23
+ //SEG277 [137] (byte) keyboard_modifiers#4 ← (byte) keyboard_modifiers#16 | (const byte) KEY_MODIFIER_CTRL#0 [ keyboard_events_size#17 keyboard_modifiers#4 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#4 ] ) -- vbuz1=vbuz1_bor_vbuc1
+ lda #KEY_MODIFIER_CTRL
+ ora keyboard_modifiers
+ sta keyboard_modifiers
+ //SEG278 [138] phi from keyboard_event_scan::@23 keyboard_event_scan::@28 to keyboard_event_scan::@11 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11]
+ //SEG279 [138] phi (byte) keyboard_modifiers#17 = (byte) keyboard_modifiers#4 [phi:keyboard_event_scan::@23/keyboard_event_scan::@28->keyboard_event_scan::@11#0] -- register_copy
+ //SEG280 keyboard_event_scan::@11
+ b11:
+ //SEG281 [139] call keyboard_event_pressed param-assignment [ keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 keyboard_modifiers#17 ] )
+ //SEG282 [149] phi from keyboard_event_scan::@11 to keyboard_event_pressed [phi:keyboard_event_scan::@11->keyboard_event_pressed]
+ //SEG283 [149] phi (byte) keyboard_event_pressed::keycode#4 = (const byte) KEY_COMMODORE#0 [phi:keyboard_event_scan::@11->keyboard_event_pressed#0] -- vbuz1=vbuc1
+ lda #KEY_COMMODORE
+ sta keyboard_event_pressed.keycode
+ jsr keyboard_event_pressed
+ //SEG284 [140] (byte) keyboard_event_pressed::return#3 ← (byte) keyboard_event_pressed::return#10 [ keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#3 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#3 ] )
+ // (byte) keyboard_event_pressed::return#3 = (byte) keyboard_event_pressed::return#10 // register copy reg byte a
+ //SEG285 keyboard_event_scan::@29
+ //SEG286 [141] (byte~) keyboard_event_scan::$28 ← (byte) keyboard_event_pressed::return#3 [ keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_scan::$28 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_scan::$28 ] )
+ // (byte~) keyboard_event_scan::$28 = (byte) keyboard_event_pressed::return#3 // register copy reg byte a
+ //SEG287 [142] if((byte~) keyboard_event_scan::$28==(byte/signed byte/word/signed word/dword/signed dword) 0) goto keyboard_event_scan::@return [ keyboard_events_size#17 keyboard_modifiers#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 ] ) -- vbuaa_eq_0_then_la1
+ cmp #0
+ beq breturn
+ //SEG288 keyboard_event_scan::@24
+ //SEG289 [143] (byte) keyboard_modifiers#5 ← (byte) keyboard_modifiers#17 | (const byte) KEY_MODIFIER_COMMODORE#0 [ keyboard_events_size#17 keyboard_modifiers#5 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#5 ] ) -- vbuz1=vbuz1_bor_vbuc1
+ lda #KEY_MODIFIER_COMMODORE
+ ora keyboard_modifiers
+ sta keyboard_modifiers
+ //SEG290 [144] phi from keyboard_event_scan::@24 keyboard_event_scan::@29 to keyboard_event_scan::@return [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return]
+ //SEG291 [144] phi (byte) keyboard_modifiers#18 = (byte) keyboard_modifiers#5 [phi:keyboard_event_scan::@24/keyboard_event_scan::@29->keyboard_event_scan::@return#0] -- register_copy
+ //SEG292 keyboard_event_scan::@return
+ breturn:
+ //SEG293 [145] return [ keyboard_modifiers#18 keyboard_events_size#17 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_modifiers#18 keyboard_events_size#17 ] )
+ rts
+ //SEG294 keyboard_event_scan::@6
+ b6:
+ //SEG295 [146] *((const byte[8]) keyboard_events#0 + (byte) keyboard_events_size#14) ← (byte) keyboard_event_scan::keycode#10 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#14 ] ) -- pbuc1_derefidx_vbuz1=vbuz2
+ lda keycode
+ ldy keyboard_events_size
+ sta keyboard_events,y
+ //SEG296 [147] (byte) keyboard_events_size#1 ← ++ (byte) keyboard_events_size#14 [ keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::row_scan#0 keyboard_event_scan::col#2 keyboard_event_scan::keycode#10 keyboard_events_size#1 ] ) -- vbuz1=_inc_vbuz1
+ inc keyboard_events_size
+ jmp b4
+ //SEG297 keyboard_event_scan::@2
+ b2:
+ //SEG298 [148] (byte) keyboard_event_scan::keycode#1 ← (byte) keyboard_event_scan::keycode#11 + (byte/signed byte/word/signed word/dword/signed dword) 8 [ keyboard_event_scan::row#2 keyboard_events_size#43 keyboard_event_scan::keycode#1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_events_size#43 keyboard_event_scan::keycode#1 ] ) -- vbuz1=vbuz1_plus_vbuc1
+ lda #8
+ clc
+ adc keycode
+ sta keycode
+ jmp b8
+}
+//SEG299 keyboard_event_pressed
+keyboard_event_pressed: {
+ .label keycode = 5
+ //SEG300 [150] (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode#4 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::$0 ] ) -- vbuaa=vbuz1_ror_3
+ lda keycode
+ lsr
+ lsr
+ lsr
+ //SEG301 [151] (byte) keyboard_event_pressed::row_bits#0 ← *((const byte[8]) keyboard_scan_values#0 + (byte~) keyboard_event_pressed::$0) [ keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::keycode#4 keyboard_event_pressed::row_bits#0 ] ) -- vbuyy=pbuc1_derefidx_vbuaa
+ tax
+ ldy keyboard_scan_values,x
+ //SEG302 [152] (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode#4 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::row_bits#0 keyboard_event_pressed::$1 ] ) -- vbuaa=vbuz1_band_vbuc1
+ lda #7
+ and keycode
+ //SEG303 [153] (byte) keyboard_event_pressed::return#10 ← (byte) keyboard_event_pressed::row_bits#0 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte~) keyboard_event_pressed::$1) [ keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#10 ] ) -- vbuaa=vbuyy_band_pbuc1_derefidx_vbuaa
+ tax
+ tya
+ and keyboard_matrix_col_bitmask,x
+ //SEG304 keyboard_event_pressed::@return
+ //SEG305 [154] return [ keyboard_event_pressed::return#10 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:121 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:127 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#15 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:133 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#16 keyboard_event_pressed::return#10 ] main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_event_pressed:139 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_events_size#17 keyboard_modifiers#17 keyboard_event_pressed::return#10 ] )
rts
}
-//SEG215 keyboard_matrix_read
+//SEG306 keyboard_matrix_read
keyboard_matrix_read: {
- //SEG216 [110] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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 ] ) -- _deref_pbuc1=pbuc2_derefidx_vbuxx
+ //SEG307 [155] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 ] ) -- _deref_pbuc1=pbuc2_derefidx_vbuxx
lda keyboard_matrix_row_bitmask,x
sta CIA1_PORT_A
- //SEG217 [111] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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::return#0 ] ) -- vbuaa=_bnot__deref_pbuc1
+ //SEG308 [156] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] ) -- vbuaa=_bnot__deref_pbuc1
lda CIA1_PORT_B
eor #$ff
- //SEG218 keyboard_matrix_read::@return
- //SEG219 [112] return [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_key_pressed:58::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:66::keyboard_matrix_read:105 [ form_field_idx#14 key_right_debounce#11 key_down_debounce#23 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:80::keyboard_matrix_read:105 [ 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::return#0 ] main:2::menu:10::form_control:46::keyboard_key_pressed:87::keyboard_matrix_read:105 [ 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::return#0 ] )
+ //SEG309 keyboard_matrix_read::@return
+ //SEG310 [157] return [ keyboard_matrix_read::return#0 ] ( main:2::menu:10::form_control:46::keyboard_event_scan:58::keyboard_matrix_read:98 [ form_field_idx#14 form_control::field#0 form_cursor_count#15 keyboard_event_scan::row#2 keyboard_event_scan::keycode#11 keyboard_events_size#43 keyboard_matrix_read::return#0 ] )
rts
}
-//SEG220 form_field_ptr
+//SEG311 form_field_ptr
form_field_ptr: {
- .label return = 6
- .label _2 = 6
- //SEG221 [114] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ) -- vbuyy=pbuc1_derefidx_vbuxx
+ .label return = 7
+ .label _2 = 7
+ //SEG312 [159] (byte) form_field_ptr::y#0 ← *((const byte[]) form_fields_y#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::y#0 ] ) -- vbuyy=pbuc1_derefidx_vbuxx
ldy form_fields_y,x
- //SEG222 [115] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] ) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy
+ //SEG313 [160] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] ) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy
lda form_line_hi,y
sta _2+1
lda form_line_lo,y
sta _2
- //SEG223 [116] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::$2 form_field_ptr::x#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 key_down_debounce#11 form_field_idx#14 key_right_debounce#11 form_field_ptr::$2 form_field_ptr::x#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::$2 form_field_ptr::x#0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx
+ //SEG314 [161] (byte) form_field_ptr::x#0 ← *((const byte[]) form_fields_x#0 + (byte) form_field_ptr::field_idx#2) [ form_field_ptr::$2 form_field_ptr::x#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::$2 form_field_ptr::x#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::$2 form_field_ptr::x#0 ] ) -- vbuaa=pbuc1_derefidx_vbuxx
lda form_fields_x,x
- //SEG224 [117] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ 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_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#0 ] ) -- pbuz1=pbuz1_plus_vbuaa
+ //SEG315 [162] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#0 ] ) -- pbuz1=pbuz1_plus_vbuaa
clc
adc return
sta return
lda #0
adc return+1
sta return+1
- //SEG225 form_field_ptr::@return
- //SEG226 [118] return [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ 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_render_values:40::form_field_ptr:122 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#0 ] )
+ //SEG316 form_field_ptr::@return
+ //SEG317 [163] return [ form_field_ptr::return#0 ] ( main:2::menu:10::form_control:46::form_field_ptr:48 [ form_cursor_count#13 keyboard_events_size#24 form_field_idx#14 form_field_ptr::return#0 ] main:2::menu:10::form_render_values:40::form_field_ptr:167 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#0 ] )
rts
}
-//SEG227 form_render_values
+//SEG318 form_render_values
form_render_values: {
- .label field = 6
- //SEG228 [120] phi from form_render_values to form_render_values::@1 [phi:form_render_values->form_render_values::@1]
- //SEG229 [120] phi (byte) form_render_values::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_render_values->form_render_values::@1#0] -- vbuxx=vbuc1
+ .label field = 7
+ //SEG319 [165] phi from form_render_values to form_render_values::@1 [phi:form_render_values->form_render_values::@1]
+ //SEG320 [165] phi (byte) form_render_values::idx#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_render_values->form_render_values::@1#0] -- vbuxx=vbuc1
ldx #0
- //SEG230 [120] phi from form_render_values::@3 to form_render_values::@1 [phi:form_render_values::@3->form_render_values::@1]
- //SEG231 [120] phi (byte) form_render_values::idx#2 = (byte) form_render_values::idx#1 [phi:form_render_values::@3->form_render_values::@1#0] -- register_copy
- //SEG232 form_render_values::@1
+ //SEG321 [165] phi from form_render_values::@3 to form_render_values::@1 [phi:form_render_values::@3->form_render_values::@1]
+ //SEG322 [165] phi (byte) form_render_values::idx#2 = (byte) form_render_values::idx#1 [phi:form_render_values::@3->form_render_values::@1#0] -- register_copy
+ //SEG323 form_render_values::@1
b1:
- //SEG233 [121] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 [ form_field_ptr::field_idx#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_field_ptr::field_idx#0 form_render_values::idx#2 ] )
+ //SEG324 [166] (byte) form_field_ptr::field_idx#0 ← (byte) form_render_values::idx#2 [ form_field_ptr::field_idx#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_field_ptr::field_idx#0 form_render_values::idx#2 ] )
// (byte) form_field_ptr::field_idx#0 = (byte) form_render_values::idx#2 // register copy reg byte x
- //SEG234 [122] call form_field_ptr param-assignment [ form_field_ptr::return#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_field_ptr::return#0 form_render_values::idx#2 ] )
- //SEG235 [113] phi from form_render_values::@1 to form_field_ptr [phi:form_render_values::@1->form_field_ptr]
- //SEG236 [113] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#0 [phi:form_render_values::@1->form_field_ptr#0] -- register_copy
+ //SEG325 [167] call form_field_ptr param-assignment [ form_field_ptr::return#0 form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_field_ptr::return#0 form_render_values::idx#2 ] )
+ //SEG326 [158] phi from form_render_values::@1 to form_field_ptr [phi:form_render_values::@1->form_field_ptr]
+ //SEG327 [158] phi (byte) form_field_ptr::field_idx#2 = (byte) form_field_ptr::field_idx#0 [phi:form_render_values::@1->form_field_ptr#0] -- register_copy
jsr form_field_ptr
- //SEG237 [123] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_field_ptr::return#2 ] )
- // (byte*) form_field_ptr::return#2 = (byte*) form_field_ptr::return#0 // register copy zp ZP_WORD:6
- //SEG238 form_render_values::@3
- //SEG239 [124] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 form_render_values::field#0 ] )
- // (byte*) form_render_values::field#0 = (byte*) form_field_ptr::return#2 // register copy zp ZP_WORD:6
- //SEG240 [125] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuxx
+ //SEG328 [168] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#2 ] )
+ // (byte*) form_field_ptr::return#2 = (byte*) form_field_ptr::return#0 // register copy zp ZP_WORD:7
+ //SEG329 form_render_values::@3
+ //SEG330 [169] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 form_render_values::field#0 ] )
+ // (byte*) form_render_values::field#0 = (byte*) form_field_ptr::return#2 // register copy zp ZP_WORD:7
+ //SEG331 [170] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuxx
lda form_fields_val,x
tay
lda print_hextab,y
ldy #0
sta (field),y
- //SEG241 [126] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#1 ] ) -- vbuxx=_inc_vbuxx
+ //SEG332 [171] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#1 ] ) -- vbuxx=_inc_vbuxx
inx
- //SEG242 [127] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_render_values::idx#1 ] ) -- vbuxx_lt_vbuc1_then_la1
+ //SEG333 [172] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 [ form_render_values::idx#1 ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_render_values::idx#1 ] ) -- vbuxx_lt_vbuc1_then_la1
cpx #form_fields_cnt
bcc b1
- //SEG243 form_render_values::@return
- //SEG244 [128] return [ ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ //SEG334 form_render_values::@return
+ //SEG335 [173] return [ ] ( main:2::menu:10::form_render_values:40 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
rts
}
-//SEG245 form_set_screen
+//SEG336 form_set_screen
form_set_screen: {
- .label line = 6
- //SEG246 [130] phi from form_set_screen to form_set_screen::@1 [phi:form_set_screen->form_set_screen::@1]
- //SEG247 [130] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuxx=vbuc1
+ .label line = 7
+ //SEG337 [175] phi from form_set_screen to form_set_screen::@1 [phi:form_set_screen->form_set_screen::@1]
+ //SEG338 [175] phi (byte) form_set_screen::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:form_set_screen->form_set_screen::@1#0] -- vbuxx=vbuc1
ldx #0
- //SEG248 [130] phi (byte*) form_set_screen::line#2 = (const byte*) menu::SCREEN#0 [phi:form_set_screen->form_set_screen::@1#1] -- pbuz1=pbuc1
+ //SEG339 [175] phi (byte*) form_set_screen::line#2 = (const byte*) menu::SCREEN#0 [phi:form_set_screen->form_set_screen::@1#1] -- pbuz1=pbuc1
lda #menu.SCREEN
sta line+1
- //SEG249 [130] phi from form_set_screen::@1 to form_set_screen::@1 [phi:form_set_screen::@1->form_set_screen::@1]
- //SEG250 [130] phi (byte) form_set_screen::y#2 = (byte) form_set_screen::y#1 [phi:form_set_screen::@1->form_set_screen::@1#0] -- register_copy
- //SEG251 [130] phi (byte*) form_set_screen::line#2 = (byte*) form_set_screen::line#1 [phi:form_set_screen::@1->form_set_screen::@1#1] -- register_copy
- //SEG252 form_set_screen::@1
+ //SEG340 [175] phi from form_set_screen::@1 to form_set_screen::@1 [phi:form_set_screen::@1->form_set_screen::@1]
+ //SEG341 [175] phi (byte) form_set_screen::y#2 = (byte) form_set_screen::y#1 [phi:form_set_screen::@1->form_set_screen::@1#0] -- register_copy
+ //SEG342 [175] phi (byte*) form_set_screen::line#2 = (byte*) form_set_screen::line#1 [phi:form_set_screen::@1->form_set_screen::@1#1] -- register_copy
+ //SEG343 form_set_screen::@1
b1:
- //SEG253 [131] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ) -- vbuaa=_lo_pbuz1
+ //SEG344 [176] (byte~) form_set_screen::$0 ← < (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$0 ] ) -- vbuaa=_lo_pbuz1
lda line
- //SEG254 [132] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa
+ //SEG345 [177] *((const byte[25]) form_line_lo#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$0 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa
sta form_line_lo,x
- //SEG255 [133] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ) -- vbuaa=_hi_pbuz1
+ //SEG346 [178] (byte~) form_set_screen::$1 ← > (byte*) form_set_screen::line#2 [ form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 form_set_screen::$1 ] ) -- vbuaa=_hi_pbuz1
lda line+1
- //SEG256 [134] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#2 form_set_screen::y#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa
+ //SEG347 [179] *((const byte[25]) form_line_hi#0 + (byte) form_set_screen::y#2) ← (byte~) form_set_screen::$1 [ form_set_screen::line#2 form_set_screen::y#2 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#2 form_set_screen::y#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa
sta form_line_hi,x
- //SEG257 [135] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::y#2 form_set_screen::line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1
+ //SEG348 [180] (byte*) form_set_screen::line#1 ← (byte*) form_set_screen::line#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ form_set_screen::y#2 form_set_screen::line#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::y#2 form_set_screen::line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1
lda line
clc
adc #$28
@@ -10060,88 +12318,88 @@ form_set_screen: {
bcc !+
inc line+1
!:
- //SEG258 [136] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#1 form_set_screen::y#1 ] ) -- vbuxx=_inc_vbuxx
+ //SEG349 [181] (byte) form_set_screen::y#1 ← ++ (byte) form_set_screen::y#2 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#1 form_set_screen::y#1 ] ) -- vbuxx=_inc_vbuxx
inx
- //SEG259 [137] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 form_set_screen::line#1 form_set_screen::y#1 ] ) -- vbuxx_neq_vbuc1_then_la1
+ //SEG350 [182] if((byte) form_set_screen::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto form_set_screen::@1 [ form_set_screen::line#1 form_set_screen::y#1 ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 form_set_screen::line#1 form_set_screen::y#1 ] ) -- vbuxx_neq_vbuc1_then_la1
cpx #$19
bne b1
- //SEG260 form_set_screen::@return
- //SEG261 [138] return [ ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ //SEG351 form_set_screen::@return
+ //SEG352 [183] return [ ] ( main:2::menu:10::form_set_screen:38 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
rts
}
-//SEG262 print_str_lines
+//SEG353 print_str_lines
print_str_lines: {
- .label str = 6
- //SEG263 [140] (byte*~) print_char_cursor#63 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#5 print_char_cursor#63 print_set_screen::screen#2 ] ) -- pbuz1=pbuz2
+ .label str = 7
+ //SEG354 [185] (byte*~) print_char_cursor#64 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#5 print_char_cursor#64 print_set_screen::screen#2 ] ) -- pbuz1=pbuz2
lda print_set_screen.screen
sta print_char_cursor
lda print_set_screen.screen+1
sta print_char_cursor+1
- //SEG264 [141] phi from print_str_lines print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1]
- //SEG265 [141] phi (byte*) print_line_cursor#2 = (byte*) print_set_screen::screen#2 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#0] -- register_copy
- //SEG266 [141] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#63 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#1] -- register_copy
- //SEG267 [141] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#5 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#2] -- register_copy
- //SEG268 print_str_lines::@1
+ //SEG355 [186] phi from print_str_lines print_str_lines::@9 to print_str_lines::@1 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1]
+ //SEG356 [186] phi (byte*) print_line_cursor#2 = (byte*) print_set_screen::screen#2 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#0] -- register_copy
+ //SEG357 [186] phi (byte*) print_char_cursor#22 = (byte*~) print_char_cursor#64 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#1] -- register_copy
+ //SEG358 [186] phi (byte*) print_str_lines::str#3 = (byte*) print_str_lines::str#5 [phi:print_str_lines/print_str_lines::@9->print_str_lines::@1#2] -- register_copy
+ //SEG359 print_str_lines::@1
b1:
- //SEG269 [142] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1
+ //SEG360 [187] if(*((byte*) print_str_lines::str#3)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#3 print_char_cursor#22 print_line_cursor#2 ] ) -- _deref_pbuz1_neq_vbuc1_then_la1
ldy #0
lda (str),y
cmp #'@'
bne b4
- //SEG270 print_str_lines::@return
- //SEG271 [143] return [ ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 ] )
+ //SEG361 print_str_lines::@return
+ //SEG362 [188] return [ ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 ] )
rts
- //SEG272 [144] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4]
- //SEG273 [144] phi (byte*) print_char_cursor#20 = (byte*) print_char_cursor#22 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy
- //SEG274 [144] phi (byte*) print_str_lines::str#4 = (byte*) print_str_lines::str#3 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy
- //SEG275 print_str_lines::@4
+ //SEG363 [189] phi from print_str_lines::@1 print_str_lines::@5 to print_str_lines::@4 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4]
+ //SEG364 [189] phi (byte*) print_char_cursor#20 = (byte*) print_char_cursor#22 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#0] -- register_copy
+ //SEG365 [189] phi (byte*) print_str_lines::str#4 = (byte*) print_str_lines::str#3 [phi:print_str_lines::@1/print_str_lines::@5->print_str_lines::@4#1] -- register_copy
+ //SEG366 print_str_lines::@4
b4:
- //SEG276 [145] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ) -- vbuaa=_deref_pbuz1
+ //SEG367 [190] (byte) print_str_lines::ch#0 ← *((byte*) print_str_lines::str#4) [ print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#4 print_char_cursor#20 print_str_lines::ch#0 ] ) -- vbuaa=_deref_pbuz1
ldy #0
lda (str),y
- //SEG277 [146] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- pbuz1=_inc_pbuz1
+ //SEG368 [191] (byte*) print_str_lines::str#0 ← ++ (byte*) print_str_lines::str#4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- pbuz1=_inc_pbuz1
inc str
bne !+
inc str+1
!:
- //SEG278 [147] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- vbuaa_eq_vbuc1_then_la1
+ //SEG369 [192] if((byte) print_str_lines::ch#0==(byte) '@') goto print_str_lines::@5 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- vbuaa_eq_vbuc1_then_la1
cmp #'@'
beq b5
- //SEG279 print_str_lines::@8
- //SEG280 [148] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- _deref_pbuz1=vbuaa
+ //SEG370 print_str_lines::@8
+ //SEG371 [193] *((byte*) print_char_cursor#20) ← (byte) print_str_lines::ch#0 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#20 print_str_lines::ch#0 ] ) -- _deref_pbuz1=vbuaa
ldy #0
sta (print_char_cursor),y
- //SEG281 [149] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 [ print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ) -- pbuz1=_inc_pbuz1
+ //SEG372 [194] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#20 [ print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_str_lines::ch#0 print_char_cursor#1 ] ) -- pbuz1=_inc_pbuz1
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
- //SEG282 [150] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5]
- //SEG283 [150] phi (byte*) print_char_cursor#38 = (byte*) print_char_cursor#20 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy
- //SEG284 print_str_lines::@5
+ //SEG373 [195] phi from print_str_lines::@4 print_str_lines::@8 to print_str_lines::@5 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5]
+ //SEG374 [195] phi (byte*) print_char_cursor#38 = (byte*) print_char_cursor#20 [phi:print_str_lines::@4/print_str_lines::@8->print_str_lines::@5#0] -- register_copy
+ //SEG375 print_str_lines::@5
b5:
- //SEG285 [151] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ) -- vbuaa_neq_vbuc1_then_la1
+ //SEG376 [196] if((byte) print_str_lines::ch#0!=(byte) '@') goto print_str_lines::@4 [ print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_line_cursor#2 print_str_lines::str#0 print_char_cursor#38 ] ) -- vbuaa_neq_vbuc1_then_la1
cmp #'@'
bne b4
- //SEG286 [152] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9]
- //SEG287 print_str_lines::@9
- //SEG288 [153] call print_ln param-assignment [ print_str_lines::str#0 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] )
- //SEG289 [155] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln]
+ //SEG377 [197] phi from print_str_lines::@5 to print_str_lines::@9 [phi:print_str_lines::@5->print_str_lines::@9]
+ //SEG378 print_str_lines::@9
+ //SEG379 [198] call print_ln param-assignment [ print_str_lines::str#0 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] )
+ //SEG380 [200] phi from print_str_lines::@9 to print_ln [phi:print_str_lines::@9->print_ln]
jsr print_ln
- //SEG290 [154] (byte*~) print_char_cursor#64 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_char_cursor#64 print_line_cursor#22 ] ) -- pbuz1=pbuz2
+ //SEG381 [199] (byte*~) print_char_cursor#65 ← (byte*) print_line_cursor#22 [ print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_char_cursor#65 print_line_cursor#22 ] ) -- pbuz1=pbuz2
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
jmp b1
}
-//SEG291 print_ln
+//SEG382 print_ln
print_ln: {
- //SEG292 [156] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
- //SEG293 [156] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#2 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy
- //SEG294 print_ln::@1
+ //SEG383 [201] phi from print_ln print_ln::@1 to print_ln::@1 [phi:print_ln/print_ln::@1->print_ln::@1]
+ //SEG384 [201] phi (byte*) print_line_cursor#21 = (byte*) print_line_cursor#2 [phi:print_ln/print_ln::@1->print_ln::@1#0] -- register_copy
+ //SEG385 print_ln::@1
b1:
- //SEG295 [157] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) -- pbuz1=pbuz1_plus_vbuc1
+ //SEG386 [202] (byte*) print_line_cursor#22 ← (byte*) print_line_cursor#21 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) -- pbuz1=pbuz1_plus_vbuc1
lda print_line_cursor
clc
adc #$28
@@ -10149,7 +12407,7 @@ print_ln: {
bcc !+
inc print_line_cursor+1
!:
- //SEG296 [158] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) -- pbuz1_lt_pbuz2_then_la1
+ //SEG387 [203] if((byte*) print_line_cursor#22<(byte*) print_char_cursor#38) goto print_ln::@1 [ print_line_cursor#22 print_char_cursor#38 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 print_char_cursor#38 ] ) -- pbuz1_lt_pbuz2_then_la1
lda print_line_cursor+1
cmp print_char_cursor+1
bcc b1
@@ -10158,33 +12416,33 @@ print_ln: {
cmp print_char_cursor
bcc b1
!:
- //SEG297 print_ln::@return
- //SEG298 [159] return [ print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36::print_ln:153 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_str_lines::str#0 print_line_cursor#22 ] )
+ //SEG388 print_ln::@return
+ //SEG389 [204] return [ print_line_cursor#22 ] ( main:2::menu:10::print_str_lines:30::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] main:2::menu:10::print_str_lines:36::print_ln:198 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_str_lines::str#0 print_line_cursor#22 ] )
rts
}
-//SEG299 print_cls
+//SEG390 print_cls
print_cls: {
- .label _0 = 8
- .label sc = 6
- //SEG300 [160] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 print_cls::sc#0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#0 ] ) -- pbuz1=pbuz2
+ .label _0 = 9
+ .label sc = 7
+ //SEG391 [205] (byte*) print_cls::sc#0 ← (byte*) print_set_screen::screen#2 [ print_set_screen::screen#2 print_cls::sc#0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#0 ] ) -- pbuz1=pbuz2
lda print_set_screen.screen
sta sc
lda print_set_screen.screen+1
sta sc+1
- //SEG301 [161] phi from print_cls print_cls::@1 to print_cls::@1 [phi:print_cls/print_cls::@1->print_cls::@1]
- //SEG302 [161] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#0 [phi:print_cls/print_cls::@1->print_cls::@1#0] -- register_copy
- //SEG303 print_cls::@1
+ //SEG392 [206] phi from print_cls print_cls::@1 to print_cls::@1 [phi:print_cls/print_cls::@1->print_cls::@1]
+ //SEG393 [206] phi (byte*) print_cls::sc#2 = (byte*) print_cls::sc#0 [phi:print_cls/print_cls::@1->print_cls::@1#0] -- register_copy
+ //SEG394 print_cls::@1
b1:
- //SEG304 [162] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
+ //SEG395 [207] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_set_screen::screen#2 print_cls::sc#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#2 ] ) -- _deref_pbuz1=vbuc1
lda #' '
ldy #0
sta (sc),y
- //SEG305 [163] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
+ //SEG396 [208] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] ) -- pbuz1=_inc_pbuz1
inc sc
bne !+
inc sc+1
!:
- //SEG306 [164] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ) -- pbuz1=pbuz2_plus_vwuc1
+ //SEG397 [209] (byte*~) print_cls::$0 ← (byte*) print_set_screen::screen#2 + (word/signed word/dword/signed dword) 1000 [ print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 print_cls::$0 ] ) -- pbuz1=pbuz2_plus_vwuc1
lda print_set_screen.screen
clc
adc #<$3e8
@@ -10192,28 +12450,30 @@ print_cls: {
lda print_set_screen.screen+1
adc #>$3e8
sta _0+1
- //SEG307 [165] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 print_cls::sc#1 ] ) -- pbuz1_neq_pbuz2_then_la1
+ //SEG398 [210] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1 [ print_set_screen::screen#2 print_cls::sc#1 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 print_cls::sc#1 ] ) -- pbuz1_neq_pbuz2_then_la1
lda sc+1
cmp _0+1
bne b1
lda sc
cmp _0
bne b1
- //SEG308 print_cls::@return
- //SEG309 [166] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ //SEG399 print_cls::@return
+ //SEG400 [211] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_cls:28 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] main:2::menu:10::print_cls:34 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
rts
}
-//SEG310 print_set_screen
+//SEG401 print_set_screen
print_set_screen: {
- .label screen = $a
- //SEG311 print_set_screen::@return
- //SEG312 [168] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_set_screen:26 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] main:2::menu:10::print_set_screen:32 [ form_cursor_count#1 key_down_debounce#1 form_field_idx#1 key_right_debounce#1 print_set_screen::screen#2 ] )
+ .label screen = $b
+ //SEG402 print_set_screen::@return
+ //SEG403 [213] return [ print_set_screen::screen#2 ] ( main:2::menu:10::print_set_screen:26 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] main:2::menu:10::print_set_screen:32 [ form_cursor_count#1 keyboard_events_size#22 keyboard_modifiers#20 form_field_idx#1 print_set_screen::screen#2 ] )
rts
}
DTV_PALETTE_DEFAULT: .byte 0, $f, $36, $be, $58, $db, $86, $ff, $29, $26, $3b, 5, 7, $df, $9a, $a
print_hextab: .text "0123456789abcdef"
keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f
keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80
+ keyboard_events: .fill 8, 0
+ keyboard_scan_values: .fill 8, 0
form_line_lo: .fill $19, 0
form_line_hi: .fill $19, 0
form_fields_x: .byte $16, 7, 7, 7, 7, 7, 7, 7, $11, $11, $11, $10, $11, $10, $11, $10, $11, $1b, $1a, $1b, $1a, $1b, $1a, $1b, $26, $26, $26, $25, $26, $25, $26, $25, $26, $25, $26
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.sym b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.sym
index b208eb2ea..862bad7c4 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.sym
+++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.sym
@@ -1,4 +1,4 @@
-(label) @25
+(label) @28
(label) @begin
(label) @end
(byte*) BGCOL
@@ -35,10 +35,26 @@
(const byte[16]) DTV_PALETTE_DEFAULT#0 DTV_PALETTE_DEFAULT = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 15, (byte/signed byte/word/signed word/dword/signed dword) 54, (byte/word/signed word/dword/signed dword) 190, (byte/signed byte/word/signed word/dword/signed dword) 88, (byte/word/signed word/dword/signed dword) 219, (byte/word/signed word/dword/signed dword) 134, (byte/word/signed word/dword/signed dword) 255, (byte/signed byte/word/signed word/dword/signed dword) 41, (byte/signed byte/word/signed word/dword/signed dword) 38, (byte/signed byte/word/signed word/dword/signed dword) 59, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 154, (byte/signed byte/word/signed word/dword/signed dword) 10 }
(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
+(byte) KEY_COMMODORE
+(const byte) KEY_COMMODORE#0 KEY_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 61
(byte) KEY_CRSR_DOWN
(const byte) KEY_CRSR_DOWN#0 KEY_CRSR_DOWN = (byte/signed byte/word/signed word/dword/signed dword) 7
(byte) KEY_CRSR_RIGHT
(const byte) KEY_CRSR_RIGHT#0 KEY_CRSR_RIGHT = (byte/signed byte/word/signed word/dword/signed dword) 2
+(byte) KEY_CTRL
+(const byte) KEY_CTRL#0 KEY_CTRL = (byte/signed byte/word/signed word/dword/signed dword) 58
+(byte) KEY_LSHIFT
+(const byte) KEY_LSHIFT#0 KEY_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 15
+(byte) KEY_MODIFIER_COMMODORE
+(const byte) KEY_MODIFIER_COMMODORE#0 KEY_MODIFIER_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 8
+(byte) KEY_MODIFIER_CTRL
+(const byte) KEY_MODIFIER_CTRL#0 KEY_MODIFIER_CTRL = (byte/signed byte/word/signed word/dword/signed dword) 4
+(byte) KEY_MODIFIER_LSHIFT
+(const byte) KEY_MODIFIER_LSHIFT#0 KEY_MODIFIER_LSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 1
+(byte) KEY_MODIFIER_RSHIFT
+(const byte) KEY_MODIFIER_RSHIFT#0 KEY_MODIFIER_RSHIFT = (byte/signed byte/word/signed word/dword/signed dword) 2
+(byte) KEY_MODIFIER_SHIFT
+(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[]) MENU_COLS
@@ -60,58 +76,52 @@
(byte) VIC_RSEL
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
(void()) form_control()
+(byte~) form_control::$12 reg byte a 4.0
(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~) form_control::$24 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::@10
(label) form_control::@12
-(label) form_control::@14
+(label) form_control::@15
(label) form_control::@17
-(label) form_control::@19
+(label) form_control::@18
(label) form_control::@2
-(label) form_control::@20
-(label) form_control::@21
-(label) form_control::@26
+(label) form_control::@23
+(label) form_control::@24
+(label) form_control::@25
(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::@5
+(label) form_control::@7
(label) form_control::@return
(byte*) form_control::field
-(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
-(byte) form_control::key_right#0 reg byte a 2.6666666666666665
+(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
(signed byte) form_cursor_count
(signed byte) form_cursor_count#1 form_cursor_count zp ZP_BYTE:2 0.3939393939393939
(signed byte) form_cursor_count#13 form_cursor_count zp ZP_BYTE:2 11.6
-(signed byte) form_cursor_count#15 form_cursor_count zp ZP_BYTE:2 0.3125
-(signed byte) form_cursor_count#16 form_cursor_count zp ZP_BYTE:2 35.66666666666666
+(signed byte) form_cursor_count#15 form_cursor_count zp ZP_BYTE:2 0.34782608695652173
+(signed byte) form_cursor_count#16 form_cursor_count zp ZP_BYTE:2 34.99999999999999
(signed byte) form_cursor_count#5 form_cursor_count zp ZP_BYTE:2 2.0
(byte) form_field_idx
(byte) form_field_idx#1 form_field_idx zp ZP_BYTE:4 0.3939393939393939
-(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#14 form_field_idx zp ZP_BYTE:4 3.6499999999999972
+(byte) form_field_idx#18 form_field_idx zp ZP_BYTE:4 35.66666666666666
+(byte) form_field_idx#30 form_field_idx zp ZP_BYTE:4 6.0
+(byte) form_field_idx#40 form_field_idx zp ZP_BYTE:4 2.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:6 1.0
+(word~) form_field_ptr::$2 $2 zp ZP_WORD:7 1.0
(label) form_field_ptr::@return
(byte*) form_field_ptr::field
(byte) form_field_ptr::field_idx
@@ -120,9 +130,9 @@
(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: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::return#0 return zp ZP_WORD:7 26.25
+(byte*) form_field_ptr::return#2 return zp ZP_WORD:7 202.0
+(byte*) form_field_ptr::return#3 return zp ZP_WORD:7 4.0
(byte) form_field_ptr::x
(byte) form_field_ptr::x#0 reg byte a 4.0
(byte) form_field_ptr::y
@@ -146,7 +156,7 @@
(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:6 202.0
+(byte*) form_render_values::field#0 field zp ZP_WORD:7 202.0
(byte) form_render_values::idx
(byte) form_render_values::idx#1 reg byte x 151.5
(byte) form_render_values::idx#2 reg byte x 67.33333333333333
@@ -156,51 +166,118 @@
(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:6 67.33333333333333
-(byte*) form_set_screen::line#2 line zp ZP_WORD:6 80.8
+(byte*) form_set_screen::line#1 line zp ZP_WORD:7 67.33333333333333
+(byte*) form_set_screen::line#2 line zp ZP_WORD:7 80.8
(byte*) form_set_screen::screen
(byte) form_set_screen::y
(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.3939393939393939
-(byte) key_down_debounce#11 key_down_debounce zp ZP_BYTE:3 4.916666666666666
-(byte) key_down_debounce#13 key_down_debounce zp ZP_BYTE:3 36.33333333333332
-(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:5 0.3939393939393939
-(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 reg byte y 0.6666666666666666
-(byte) keyboard_key_pressed::key
-(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
-(byte) keyboard_key_pressed::return#2 reg byte a 4.0
-(byte) keyboard_key_pressed::return#3 reg byte a 4.0
-(byte) keyboard_key_pressed::return#4 reg byte a 4.0
-(byte) keyboard_key_pressed::rowidx
-(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(byte[]) keyboard_matrix_col_bitmask
-(const byte[]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+(byte()) keyboard_event_get()
+(label) keyboard_event_get::@1
+(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_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:5 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
+(byte) keyboard_event_pressed::return#10 reg byte a 1.6666666666666665
+(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 reg byte y 2.0
+(void()) keyboard_event_scan()
+(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 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
+(label) keyboard_event_scan::@14
+(label) keyboard_event_scan::@15
+(label) keyboard_event_scan::@16
+(label) keyboard_event_scan::@18
+(label) keyboard_event_scan::@2
+(label) keyboard_event_scan::@20
+(label) keyboard_event_scan::@21
+(label) keyboard_event_scan::@22
+(label) keyboard_event_scan::@23
+(label) keyboard_event_scan::@24
+(label) keyboard_event_scan::@25
+(label) keyboard_event_scan::@26
+(label) keyboard_event_scan::@27
+(label) keyboard_event_scan::@28
+(label) keyboard_event_scan::@29
+(label) keyboard_event_scan::@3
+(label) keyboard_event_scan::@4
+(label) keyboard_event_scan::@6
+(label) keyboard_event_scan::@8
+(label) keyboard_event_scan::@9
+(label) keyboard_event_scan::@return
+(byte) keyboard_event_scan::col
+(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 20002.0
+(byte) keyboard_event_scan::keycode
+(byte) keyboard_event_scan::keycode#1 keycode zp ZP_BYTE:5 2002.0
+(byte) keyboard_event_scan::keycode#10 keycode zp ZP_BYTE:5 3154.230769230769
+(byte) keyboard_event_scan::keycode#11 keycode zp ZP_BYTE:5 500.5
+(byte) keyboard_event_scan::keycode#14 keycode zp ZP_BYTE:5 1001.0
+(byte) keyboard_event_scan::keycode#15 keycode zp ZP_BYTE:5 5250.75
+(byte) keyboard_event_scan::row
+(byte) keyboard_event_scan::row#1 row zp ZP_BYTE:3 1501.5
+(byte) keyboard_event_scan::row#2 row zp ZP_BYTE:3 600.24
+(byte) keyboard_event_scan::row_scan
+(byte) keyboard_event_scan::row_scan#0 row_scan zp ZP_BYTE:13 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 20002.0
+(byte) keyboard_events_size#14 keyboard_events_size zp ZP_BYTE:6 8100.9000000000015
+(byte) keyboard_events_size#17 keyboard_events_size zp ZP_BYTE:6 94.03125
+(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:6 20002.0
+(byte) keyboard_events_size#20 keyboard_events_size zp ZP_BYTE:6 3.5000000000000004
+(byte) keyboard_events_size#22 keyboard_events_size zp ZP_BYTE:6 0.3939393939393939
+(byte) keyboard_events_size#24 keyboard_events_size zp ZP_BYTE:6 5.523809523809524
+(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:6 3.0
+(byte) keyboard_events_size#43 keyboard_events_size zp ZP_BYTE:6 429.2857142857143
+(byte) keyboard_events_size#44 keyboard_events_size zp ZP_BYTE:6 10201.2
+(byte[8]) keyboard_matrix_col_bitmask
+(const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
(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 1.3333333333333333
-(byte) keyboard_matrix_read::return#2 reg byte a 4.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 4.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#10 keyboard_modifiers zp ZP_BYTE:3 28.5
+(byte) keyboard_modifiers#15 keyboard_modifiers zp ZP_BYTE:3 0.8
+(byte) keyboard_modifiers#16 keyboard_modifiers zp ZP_BYTE:3 1.6
+(byte) keyboard_modifiers#17 keyboard_modifiers zp ZP_BYTE:3 1.6
+(byte) keyboard_modifiers#18 keyboard_modifiers zp ZP_BYTE:3 3.40625
+(byte) keyboard_modifiers#20 keyboard_modifiers zp ZP_BYTE:3 0.3939393939393939
+(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#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::@2
@@ -227,26 +304,26 @@
(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#20 print_char_cursor zp ZP_WORD:8 821.0
-(byte*) print_char_cursor#22 print_char_cursor zp ZP_WORD:8 102.0
-(byte*) print_char_cursor#38 print_char_cursor zp ZP_WORD:8 572.0
-(byte*~) print_char_cursor#63 print_char_cursor zp ZP_WORD:8 4.0
-(byte*~) print_char_cursor#64 print_char_cursor zp ZP_WORD:8 202.0
+(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:9 2002.0
+(byte*) print_char_cursor#20 print_char_cursor zp ZP_WORD:9 821.0
+(byte*) print_char_cursor#22 print_char_cursor zp ZP_WORD:9 102.0
+(byte*) print_char_cursor#38 print_char_cursor zp ZP_WORD:9 572.0
+(byte*~) print_char_cursor#64 print_char_cursor zp ZP_WORD:9 4.0
+(byte*~) print_char_cursor#65 print_char_cursor zp ZP_WORD:9 202.0
(void()) print_cls()
-(byte*~) print_cls::$0 $0 zp ZP_WORD:8 202.0
+(byte*~) print_cls::$0 $0 zp ZP_WORD:9 202.0
(label) print_cls::@1
(label) print_cls::@return
(byte*) print_cls::sc
-(byte*) print_cls::sc#0 sc zp ZP_WORD:6 4.0
-(byte*) print_cls::sc#1 sc zp ZP_WORD:6 101.0
-(byte*) print_cls::sc#2 sc zp ZP_WORD:6 152.5
+(byte*) print_cls::sc#0 sc zp ZP_WORD:7 4.0
+(byte*) print_cls::sc#1 sc zp ZP_WORD:7 101.0
+(byte*) print_cls::sc#2 sc zp ZP_WORD:7 152.5
(byte[]) print_hextab
(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef"
(byte*) print_line_cursor
-(byte*) print_line_cursor#2 print_line_cursor zp ZP_WORD:10 8.749999999999998
-(byte*) print_line_cursor#21 print_line_cursor zp ZP_WORD:10 2004.0
-(byte*) print_line_cursor#22 print_line_cursor zp ZP_WORD:10 641.0
+(byte*) print_line_cursor#2 print_line_cursor zp ZP_WORD:11 8.749999999999998
+(byte*) print_line_cursor#21 print_line_cursor zp ZP_WORD:11 2004.0
+(byte*) print_line_cursor#22 print_line_cursor zp ZP_WORD:11 641.0
(void()) print_ln()
(label) print_ln::@1
(label) print_ln::@return
@@ -254,7 +331,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:10 5.631578947368421
+(byte*) print_set_screen::screen#2 screen zp ZP_WORD:11 5.631578947368421
(void()) print_str_lines((byte*) print_str_lines::str)
(label) print_str_lines::@1
(label) print_str_lines::@4
@@ -265,40 +342,51 @@
(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:6 233.66666666666669
-(byte*) print_str_lines::str#3 str zp ZP_WORD:6 152.5
-(byte*) print_str_lines::str#4 str zp ZP_WORD:6 1552.0
-(byte*) print_str_lines::str#5 str zp ZP_WORD:6 1.0
+(byte*) print_str_lines::str#0 str zp ZP_WORD:7 233.66666666666669
+(byte*) print_str_lines::str#3 str zp ZP_WORD:7 152.5
+(byte*) print_str_lines::str#4 str zp ZP_WORD:7 1552.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#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 ]
-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 ]
+zp ZP_BYTE:3 [ keyboard_modifiers#20 keyboard_modifiers#10 keyboard_modifiers#18 keyboard_modifiers#17 keyboard_modifiers#4 keyboard_modifiers#16 keyboard_modifiers#3 keyboard_modifiers#15 keyboard_modifiers#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
+zp ZP_BYTE:4 [ form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#30 form_field_idx#40 form_field_idx#41 ]
reg byte x [ menu::i#2 menu::i#1 ]
-reg byte x [ keyboard_key_pressed::key#4 ]
+reg byte a [ keyboard_event_get::return#2 keyboard_event_get::return#0 ]
+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::keycode#4 ]
+zp ZP_BYTE:6 [ keyboard_events_size#14 keyboard_events_size#43 keyboard_events_size#22 keyboard_events_size#24 keyboard_events_size#20 keyboard_events_size#4 keyboard_events_size#17 keyboard_events_size#44 keyboard_events_size#2 keyboard_events_size#1 ]
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:6 [ 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 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 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:8 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#63 print_char_cursor#64 print_char_cursor#38 print_char_cursor#1 print_cls::$0 ]
-zp ZP_WORD:10 [ print_line_cursor#21 print_line_cursor#2 print_set_screen::screen#2 print_line_cursor#22 ]
+zp ZP_WORD:9 [ print_char_cursor#20 print_char_cursor#22 print_char_cursor#64 print_char_cursor#65 print_char_cursor#38 print_char_cursor#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 ]
reg byte a [ form_control::$6 ]
-reg byte a [ keyboard_key_pressed::return#2 ]
-reg byte a [ form_control::key_down#0 ]
+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 [ keyboard_key_pressed::return#4 ]
-reg byte a [ form_control::$14 ]
-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::$24 ]
reg byte a [ form_control::$7 ]
-reg byte y [ keyboard_key_pressed::colidx#0 ]
-reg byte a [ keyboard_key_pressed::rowidx#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 ]
+zp ZP_BYTE:13 [ keyboard_event_scan::row_scan#0 ]
+reg byte a [ keyboard_event_scan::$3 ]
+reg byte a [ keyboard_event_scan::$4 ]
+reg byte a [ keyboard_event_scan::event_type#0 ]
+reg byte a [ keyboard_event_scan::$12 ]
+reg byte a [ keyboard_event_pressed::return#0 ]
+reg byte a [ keyboard_event_scan::$16 ]
+reg byte a [ keyboard_event_pressed::return#1 ]
+reg byte a [ keyboard_event_scan::$20 ]
+reg byte a [ keyboard_event_pressed::return#2 ]
+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 y [ form_field_ptr::y#0 ]
reg byte a [ form_field_ptr::x#0 ]
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.cfg b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.cfg
index 28694bcf2..df0ad95ef 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.cfg
+++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.cfg
@@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
- to:@42
-@42: scope:[] from @begin
+ to:@45
+@45: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
-@end: scope:[] from @42
+@end: scope:[] from @45
[3] phi() [ ] ( )
-main: scope:[main] from @42
+main: scope:[main] from @45
asm { sei }
[5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] )
[6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] )
@@ -413,7 +413,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from menu::@10 menu::@11 men
to:keyboard_key_pressed::@2
keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_pressed
[223] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
- [224] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] )
+ [224] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] )
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
[225] return [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] )
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.log b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.log
index 0cc4ad4da..b204e93aa 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.log
+++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.log
@@ -1288,7 +1288,7 @@ const byte[] keyboard_char_keycodes = {
byte[8] keyboard_matrix_row_bitmask = { %11111110, %11111101, %11111011, %11110111, %11101111, %11011111, %10111111, %01111111 };
// Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7)
-byte[] keyboard_matrix_col_bitmask = { %00000001, %00000010, %00000100, %00001000, %00010000, %00100000, %01000000, %10000000 };
+byte[8] keyboard_matrix_col_bitmask = { %00000001, %00000010, %00000100, %00001000, %00010000, %00100000, %01000000, %10000000 };
// Initialize keyboard reading by setting CIA#$ Data Direction Registers
void keyboard_init() {
@@ -1308,7 +1308,7 @@ byte keyboard_matrix_read(byte rowid) {
return row_pressed_bits;
}
-// Determines whether a specific key is currently pressed
+// Determines whether a specific key is currently pressed by accessing the matrix directly
// The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7)
// All keys exist as as KEY_XXX constants.
// Returns zero if the key is not pressed and a non-zero value if the key is currently pressed
@@ -1325,7 +1325,102 @@ byte keyboard_key_pressed(byte key) {
byte keyboard_get_keycode(byte ch) {
return keyboard_char_keycodes[ch];
}
+
+// Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan()
+byte[8] keyboard_events;
+// Keyboard event buffer size. The number of events currently in the event buffer
+byte keyboard_events_size = 0;
+// Current keyboard modifiers (left shift, right shift, ctrl, commodore)
+byte keyboard_modifiers = 0;
+// Left shift is pressed
+const byte KEY_MODIFIER_LSHIFT = 1;
+// Right shift is pressed
+const byte KEY_MODIFIER_RSHIFT = 2;
+// CTRL is pressed
+const byte KEY_MODIFIER_CTRL = 4;
+// Commodore is pressed
+const byte KEY_MODIFIER_COMMODORE = 8;
+// Any shift is pressed
+const byte KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT;
+// The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event()
+byte[8] keyboard_scan_values;
+
+// Scans the entire matrix to determine which keys have been pressed/depressed.
+// Generates keyboard events into the event buffer. Events can be read using keyboard_event_get().
+// Handles debounce and only generates events when the status of a key changes.
+// Also stores current status of modifiers in keyboard_modifiers.
+void keyboard_event_scan() {
+ byte keycode = 0;
+ for(byte row : 0..7) {
+ byte row_scan = keyboard_matrix_read(row);
+ if(row_scan!=keyboard_scan_values[row]) {
+ // Something has changed on the keyboard row - check each column
+ for(byte col : 0..7){
+ // XOR of row scan with the last seen row scan AND'ed with the col bitmask will be non-0 if the key status is changed
+ if(((row_scan^keyboard_scan_values[row])&keyboard_matrix_col_bitmask[col])!=0) {
+ // Key(row, col) status has changed. We have an event.
+ // Only process event if there is still room in the buffer
+ if(keyboard_events_size!=8) {
+ // AND of row scan and bit mask determines if key is pressed or released
+ byte event_type = row_scan&keyboard_matrix_col_bitmask[col];
+ if(event_type==0) {
+ // Key released
+ keyboard_events[keyboard_events_size++] = keycode|$40;
+ } else {
+ // Key pressed
+ keyboard_events[keyboard_events_size++] = keycode;
+ }
+ }
+ }
+ keycode++;
+ }
+ // Store the current keyboard status for the row to debounce
+ keyboard_scan_values[row] = row_scan;
+ } else {
+ // Update current keycode
+ keycode = keycode + 8;
+ }
+ }
+ // Update the keyboard modifiers
+ keyboard_modifiers = 0;
+ if(keyboard_event_pressed(KEY_LSHIFT)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_LSHIFT;
+ }
+ if(keyboard_event_pressed(KEY_RSHIFT)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_RSHIFT;
+ }
+ if(keyboard_event_pressed(KEY_CTRL)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_CTRL;
+ }
+ if(keyboard_event_pressed(KEY_COMMODORE)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_COMMODORE;
+ }
+}
+
+// Determine if a specific key is currently pressed based on the last keyboard_event_scan()
+// Returns 0 is not pressed and non-0 if pressed
+byte keyboard_event_pressed(byte keycode) {
+ byte row_bits = keyboard_scan_values[keycode>>3];
+ return row_bits & keyboard_matrix_col_bitmask[keycode&7];
+}
+
+// Get the next event from the keyboard event buffer.
+// Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process.
+// The buffer is filled by keyboard_scan()
+byte keyboard_event_get() {
+ if(keyboard_events_size==0) {
+ return $ff;
+ } else {
+ return keyboard_events[--keyboard_events_size];
+ }
+}
+
+
Importing c64.kc
+Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+Adding pre/post-modifier (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+Adding pre/post-modifier (byte) keyboard_events_size ← -- (byte) keyboard_events_size
Importing bitmap-draw.kc
PARSING src/test/java/dk/camelot64/kickc/test/kc/bitmap-draw.kc
// Plot and line drawing routines for HIRES bitmaps
@@ -1846,7 +1941,7 @@ endproc // print_set_screen()
(byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
(byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(byte[8]) 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_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ (byte[8]) keyboard_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
proc (void()) keyboard_init()
*((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255
*((byte*) CIA1_PORT_B_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -1869,7 +1964,7 @@ proc (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
(byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key >> (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) keyboard_key_pressed::rowidx ← (byte~) keyboard_key_pressed::$1
(byte~) keyboard_key_pressed::$2 ← call keyboard_matrix_read (byte) keyboard_key_pressed::rowidx
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
(byte) keyboard_key_pressed::return ← (byte~) keyboard_key_pressed::$3
goto keyboard_key_pressed::@return
keyboard_key_pressed::@return:
@@ -1883,6 +1978,122 @@ keyboard_get_keycode::@return:
(byte) keyboard_get_keycode::return ← (byte) keyboard_get_keycode::return
return (byte) keyboard_get_keycode::return
endproc // keyboard_get_keycode()
+ (byte[8]) keyboard_events ← { fill( 8, 0) }
+ (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
+ (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+ (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+ (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+ (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
+proc (void()) keyboard_event_scan()
+ (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0
+keyboard_event_scan::@1:
+ (byte~) keyboard_event_scan::$0 ← call keyboard_matrix_read (byte) keyboard_event_scan::row
+ (byte) keyboard_event_scan::row_scan ← (byte~) keyboard_event_scan::$0
+ (boolean~) keyboard_event_scan::$1 ← (byte) keyboard_event_scan::row_scan != *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (boolean~) keyboard_event_scan::$2 ← ! (boolean~) keyboard_event_scan::$1
+ if((boolean~) keyboard_event_scan::$2) goto keyboard_event_scan::@2
+ (byte) keyboard_event_scan::col ← (byte/signed byte/word/signed word/dword/signed dword) 0
+keyboard_event_scan::@3:
+ (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan ^ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (boolean~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$6 ← ! (boolean~) keyboard_event_scan::$5
+ if((boolean~) keyboard_event_scan::$6) goto keyboard_event_scan::@4
+ (boolean~) keyboard_event_scan::$7 ← (byte) keyboard_events_size != (byte/signed byte/word/signed word/dword/signed dword) 8
+ (boolean~) keyboard_event_scan::$8 ← ! (boolean~) keyboard_event_scan::$7
+ if((boolean~) keyboard_event_scan::$8) goto keyboard_event_scan::@5
+ (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_scan::row_scan & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (byte) keyboard_event_scan::event_type ← (byte~) keyboard_event_scan::$9
+ (boolean~) keyboard_event_scan::$10 ← (byte) keyboard_event_scan::event_type == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$11 ← ! (boolean~) keyboard_event_scan::$10
+ if((boolean~) keyboard_event_scan::$11) goto keyboard_event_scan::@6
+ (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode | (byte/signed byte/word/signed word/dword/signed dword) 64
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte/word/dword~) keyboard_event_scan::$12
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ goto keyboard_event_scan::@7
+keyboard_event_scan::@6:
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte) keyboard_event_scan::keycode
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+keyboard_event_scan::@7:
+keyboard_event_scan::@5:
+keyboard_event_scan::@4:
+ (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+ (byte) keyboard_event_scan::col ← ++ (byte) keyboard_event_scan::col
+ (boolean~) keyboard_event_scan::$13 ← (byte) keyboard_event_scan::col != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$13) goto keyboard_event_scan::@3
+ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row) ← (byte) keyboard_event_scan::row_scan
+ goto keyboard_event_scan::@8
+keyboard_event_scan::@2:
+ (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14 ← (byte) keyboard_event_scan::keycode + (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte) keyboard_event_scan::keycode ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+keyboard_event_scan::@8:
+ (byte) keyboard_event_scan::row ← ++ (byte) keyboard_event_scan::row
+ (boolean~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$15) goto keyboard_event_scan::@1
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte~) keyboard_event_scan::$16 ← call keyboard_event_pressed (byte) KEY_LSHIFT
+ (boolean~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$18 ← ! (boolean~) keyboard_event_scan::$17
+ if((boolean~) keyboard_event_scan::$18) goto keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$19 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_LSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$19
+keyboard_event_scan::@9:
+ (byte~) keyboard_event_scan::$20 ← call keyboard_event_pressed (byte) KEY_RSHIFT
+ (boolean~) keyboard_event_scan::$21 ← (byte~) keyboard_event_scan::$20 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$22 ← ! (boolean~) keyboard_event_scan::$21
+ if((boolean~) keyboard_event_scan::$22) goto keyboard_event_scan::@10
+ (byte~) keyboard_event_scan::$23 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_RSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$23
+keyboard_event_scan::@10:
+ (byte~) keyboard_event_scan::$24 ← call keyboard_event_pressed (byte) KEY_CTRL
+ (boolean~) keyboard_event_scan::$25 ← (byte~) keyboard_event_scan::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$26 ← ! (boolean~) keyboard_event_scan::$25
+ if((boolean~) keyboard_event_scan::$26) goto keyboard_event_scan::@11
+ (byte~) keyboard_event_scan::$27 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_CTRL
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$27
+keyboard_event_scan::@11:
+ (byte~) keyboard_event_scan::$28 ← call keyboard_event_pressed (byte) KEY_COMMODORE
+ (boolean~) keyboard_event_scan::$29 ← (byte~) keyboard_event_scan::$28 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$30 ← ! (boolean~) keyboard_event_scan::$29
+ if((boolean~) keyboard_event_scan::$30) goto keyboard_event_scan::@12
+ (byte~) keyboard_event_scan::$31 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_COMMODORE
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$31
+keyboard_event_scan::@12:
+keyboard_event_scan::@return:
+ return
+endproc // keyboard_event_scan()
+proc (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
+ (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3
+ (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0)
+ (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode & (byte/signed byte/word/signed word/dword/signed dword) 7
+ (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits & *((byte[8]) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1)
+ (byte) keyboard_event_pressed::return ← (byte~) keyboard_event_pressed::$2
+ goto keyboard_event_pressed::@return
+keyboard_event_pressed::@return:
+ (byte) keyboard_event_pressed::return ← (byte) keyboard_event_pressed::return
+ return (byte) keyboard_event_pressed::return
+endproc // keyboard_event_pressed()
+proc (byte()) keyboard_event_get()
+ (boolean~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_get::$1 ← ! (boolean~) keyboard_event_get::$0
+ if((boolean~) keyboard_event_get::$1) goto keyboard_event_get::@1
+ (byte) keyboard_event_get::return ← (byte/word/signed word/dword/signed dword) 255
+ goto keyboard_event_get::@return
+ goto keyboard_event_get::@2
+keyboard_event_get::@1:
+ (byte) keyboard_events_size ← -- (byte) keyboard_events_size
+ (byte) keyboard_event_get::return ← *((byte[8]) keyboard_events + (byte) keyboard_events_size)
+ goto keyboard_event_get::@return
+keyboard_event_get::@2:
+keyboard_event_get::@return:
+ (byte) keyboard_event_get::return ← (byte) keyboard_event_get::return
+ return (byte) keyboard_event_get::return
+endproc // keyboard_event_get()
(byte[256]) bitmap_plot_xlo ← { fill( 256, 0) }
(byte[256]) bitmap_plot_xhi ← { fill( 256, 0) }
(byte[256]) bitmap_plot_ylo ← { fill( 256, 0) }
@@ -2124,27 +2335,27 @@ main::@3:
main::@return:
return
endproc // main()
- (string~) $0 ← (string) "C64DTV Graphics Modes CCLHBME@" + (string) " OHIIMCC@"
- (string~) $1 ← (string~) $0 + (string) " LUNCMMM@"
- (string~) $2 ← (string~) $1 + (string) "----------------------------------------@"
- (string~) $3 ← (string~) $2 + (string) "1. Standard Char (V) 0000000@"
- (string~) $4 ← (string~) $3 + (string) "2. Extended Color Char (V) 0000001@"
- (string~) $5 ← (string~) $4 + (string) "3. Multicolor Char (V) 0000010@"
- (string~) $6 ← (string~) $5 + (string) "4. Standard Bitmap (V) 0000100@"
- (string~) $7 ← (string~) $6 + (string) "5. Multicolor Bitmap (V) 0000110@"
- (string~) $8 ← (string~) $7 + (string) "6. High Color Standard Char (H) 0001000@"
- (string~) $9 ← (string~) $8 + (string) "7. High Extended Color Char (H) 0001001@"
- (string~) $10 ← (string~) $9 + (string) "8. High Multicolor Char (H) 0001010@"
- (string~) $11 ← (string~) $10 + (string) "9. High Multicolor Bitmap (H) 0001110@"
- (string~) $12 ← (string~) $11 + (string) "a. Sixs Fred 2 (D) 0010111@"
- (string~) $13 ← (string~) $12 + (string) "b. Two Plane Bitmap (D) 0011101@"
- (string~) $14 ← (string~) $13 + (string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"
- (string~) $15 ← (string~) $14 + (string) "d. 8bpp Pixel Cell (D) 0111011@"
- (string~) $16 ← (string~) $15 + (string) "e. Chunky 8bpp Bitmap (D) 1111011@"
- (string~) $17 ← (string~) $16 + (string) "----------------------------------------@"
- (string~) $18 ← (string~) $17 + (string) " (V) vicII (H) vicII+hicol (D) c64dtv@"
- (string~) $19 ← (string~) $18 + (string) "@"
- (byte[]) MENU_TEXT ← (string~) $19
+ (string~) $1 ← (string) "C64DTV Graphics Modes CCLHBME@" + (string) " OHIIMCC@"
+ (string~) $2 ← (string~) $1 + (string) " LUNCMMM@"
+ (string~) $3 ← (string~) $2 + (string) "----------------------------------------@"
+ (string~) $4 ← (string~) $3 + (string) "1. Standard Char (V) 0000000@"
+ (string~) $5 ← (string~) $4 + (string) "2. Extended Color Char (V) 0000001@"
+ (string~) $6 ← (string~) $5 + (string) "3. Multicolor Char (V) 0000010@"
+ (string~) $7 ← (string~) $6 + (string) "4. Standard Bitmap (V) 0000100@"
+ (string~) $8 ← (string~) $7 + (string) "5. Multicolor Bitmap (V) 0000110@"
+ (string~) $9 ← (string~) $8 + (string) "6. High Color Standard Char (H) 0001000@"
+ (string~) $10 ← (string~) $9 + (string) "7. High Extended Color Char (H) 0001001@"
+ (string~) $11 ← (string~) $10 + (string) "8. High Multicolor Char (H) 0001010@"
+ (string~) $12 ← (string~) $11 + (string) "9. High Multicolor Bitmap (H) 0001110@"
+ (string~) $13 ← (string~) $12 + (string) "a. Sixs Fred 2 (D) 0010111@"
+ (string~) $14 ← (string~) $13 + (string) "b. Two Plane Bitmap (D) 0011101@"
+ (string~) $15 ← (string~) $14 + (string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"
+ (string~) $16 ← (string~) $15 + (string) "d. 8bpp Pixel Cell (D) 0111011@"
+ (string~) $17 ← (string~) $16 + (string) "e. Chunky 8bpp Bitmap (D) 1111011@"
+ (string~) $18 ← (string~) $17 + (string) "----------------------------------------@"
+ (string~) $19 ← (string~) $18 + (string) " (V) vicII (H) vicII+hicol (D) c64dtv@"
+ (string~) $20 ← (string~) $19 + (string) "@"
+ (byte[]) MENU_TEXT ← (string~) $20
proc (void()) menu()
(byte*) menu::SCREEN ← (word/dword/signed dword) 32768
(byte*) menu::CHARSET ← (word/dword/signed dword) 38912
@@ -3336,7 +3547,7 @@ endproc // mode_8bppchunkybmm()
call main
SYMBOLS
-(string~) $0
+(byte~) $0
(string~) $1
(string~) $10
(string~) $11
@@ -3349,6 +3560,7 @@ SYMBOLS
(string~) $18
(string~) $19
(string~) $2
+(string~) $20
(string~) $3
(string~) $4
(string~) $5
@@ -3456,6 +3668,11 @@ SYMBOLS
(byte) KEY_LSHIFT
(byte) KEY_M
(byte) KEY_MINUS
+(byte) KEY_MODIFIER_COMMODORE
+(byte) KEY_MODIFIER_CTRL
+(byte) KEY_MODIFIER_LSHIFT
+(byte) KEY_MODIFIER_RSHIFT
+(byte) KEY_MODIFIER_SHIFT
(byte) KEY_N
(byte) KEY_O
(byte) KEY_P
@@ -3696,6 +3913,74 @@ SYMBOLS
(byte) dtvSetCpuBankSegment1::cpuBankIdx
(byte) dtv_control
(byte[]) keyboard_char_keycodes
+(byte()) keyboard_event_get()
+(boolean~) keyboard_event_get::$0
+(boolean~) keyboard_event_get::$1
+(label) keyboard_event_get::@1
+(label) keyboard_event_get::@2
+(label) keyboard_event_get::@return
+(byte) keyboard_event_get::return
+(byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
+(byte~) keyboard_event_pressed::$0
+(byte~) keyboard_event_pressed::$1
+(byte~) keyboard_event_pressed::$2
+(label) keyboard_event_pressed::@return
+(byte) keyboard_event_pressed::keycode
+(byte) keyboard_event_pressed::return
+(byte) keyboard_event_pressed::row_bits
+(void()) keyboard_event_scan()
+(byte~) keyboard_event_scan::$0
+(boolean~) keyboard_event_scan::$1
+(boolean~) keyboard_event_scan::$10
+(boolean~) keyboard_event_scan::$11
+(byte/word/dword~) keyboard_event_scan::$12
+(boolean~) keyboard_event_scan::$13
+(byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+(boolean~) keyboard_event_scan::$15
+(byte~) keyboard_event_scan::$16
+(boolean~) keyboard_event_scan::$17
+(boolean~) keyboard_event_scan::$18
+(byte~) keyboard_event_scan::$19
+(boolean~) keyboard_event_scan::$2
+(byte~) keyboard_event_scan::$20
+(boolean~) keyboard_event_scan::$21
+(boolean~) keyboard_event_scan::$22
+(byte~) keyboard_event_scan::$23
+(byte~) keyboard_event_scan::$24
+(boolean~) keyboard_event_scan::$25
+(boolean~) keyboard_event_scan::$26
+(byte~) keyboard_event_scan::$27
+(byte~) keyboard_event_scan::$28
+(boolean~) keyboard_event_scan::$29
+(byte~) keyboard_event_scan::$3
+(boolean~) keyboard_event_scan::$30
+(byte~) keyboard_event_scan::$31
+(byte~) keyboard_event_scan::$4
+(boolean~) keyboard_event_scan::$5
+(boolean~) keyboard_event_scan::$6
+(boolean~) keyboard_event_scan::$7
+(boolean~) keyboard_event_scan::$8
+(byte~) keyboard_event_scan::$9
+(label) keyboard_event_scan::@1
+(label) keyboard_event_scan::@10
+(label) keyboard_event_scan::@11
+(label) keyboard_event_scan::@12
+(label) keyboard_event_scan::@2
+(label) keyboard_event_scan::@3
+(label) keyboard_event_scan::@4
+(label) keyboard_event_scan::@5
+(label) keyboard_event_scan::@6
+(label) keyboard_event_scan::@7
+(label) keyboard_event_scan::@8
+(label) keyboard_event_scan::@9
+(label) keyboard_event_scan::@return
+(byte) keyboard_event_scan::col
+(byte) keyboard_event_scan::event_type
+(byte) keyboard_event_scan::keycode
+(byte) keyboard_event_scan::row
+(byte) keyboard_event_scan::row_scan
+(byte[8]) keyboard_events
+(byte) keyboard_events_size
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
(label) keyboard_get_keycode::@return
(byte) keyboard_get_keycode::ch
@@ -3712,7 +3997,7 @@ SYMBOLS
(byte) keyboard_key_pressed::key
(byte) keyboard_key_pressed::return
(byte) keyboard_key_pressed::rowidx
-(byte[]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -3720,6 +4005,8 @@ SYMBOLS
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte[8]) keyboard_matrix_row_bitmask
+(byte) keyboard_modifiers
+(byte[8]) keyboard_scan_values
(void()) main()
(void~) main::$0
(label) main::@1
@@ -5076,7 +5363,7 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen
(byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
(byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(byte[8]) 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_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ (byte[8]) keyboard_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
to:@16
keyboard_init: scope:[keyboard_init] from
*((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255
@@ -5107,7 +5394,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from
(byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key >> (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) keyboard_key_pressed::rowidx ← (byte~) keyboard_key_pressed::$1
(byte~) keyboard_key_pressed::$2 ← call keyboard_matrix_read (byte) keyboard_key_pressed::rowidx
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
(byte) keyboard_key_pressed::return ← (byte~) keyboard_key_pressed::$3
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed keyboard_key_pressed::@1
@@ -5128,12 +5415,179 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k
keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from
to:keyboard_get_keycode::@return
@19: scope:[] from @18
+ (byte[8]) keyboard_events ← { fill( 8, 0) }
+ (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
+ (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+ (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+ (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+ (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
+ to:@20
+keyboard_event_scan: scope:[keyboard_event_scan] from
+ (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ to:keyboard_event_scan::@1
+keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8
+ (byte~) keyboard_event_scan::$0 ← call keyboard_matrix_read (byte) keyboard_event_scan::row
+ (byte) keyboard_event_scan::row_scan ← (byte~) keyboard_event_scan::$0
+ (boolean~) keyboard_event_scan::$1 ← (byte) keyboard_event_scan::row_scan != *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (boolean~) keyboard_event_scan::$2 ← ! (boolean~) keyboard_event_scan::$1
+ if((boolean~) keyboard_event_scan::$2) goto keyboard_event_scan::@2
+ to:keyboard_event_scan::@13
+keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@1 keyboard_event_scan::@19
+ (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14 ← (byte) keyboard_event_scan::keycode + (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte) keyboard_event_scan::keycode ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@1
+ (byte) keyboard_event_scan::col ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ to:keyboard_event_scan::@3
+keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@4
+ (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan ^ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (boolean~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$6 ← ! (boolean~) keyboard_event_scan::$5
+ if((boolean~) keyboard_event_scan::$6) goto keyboard_event_scan::@4
+ to:keyboard_event_scan::@14
+keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@3 keyboard_event_scan::@5
+ (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+ (byte) keyboard_event_scan::col ← ++ (byte) keyboard_event_scan::col
+ (boolean~) keyboard_event_scan::$13 ← (byte) keyboard_event_scan::col != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$13) goto keyboard_event_scan::@3
+ to:keyboard_event_scan::@18
+keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan::@3
+ (boolean~) keyboard_event_scan::$7 ← (byte) keyboard_events_size != (byte/signed byte/word/signed word/dword/signed dword) 8
+ (boolean~) keyboard_event_scan::$8 ← ! (boolean~) keyboard_event_scan::$7
+ if((boolean~) keyboard_event_scan::$8) goto keyboard_event_scan::@5
+ to:keyboard_event_scan::@15
+keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@14 keyboard_event_scan::@7
+ to:keyboard_event_scan::@4
+keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@14
+ (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_scan::row_scan & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (byte) keyboard_event_scan::event_type ← (byte~) keyboard_event_scan::$9
+ (boolean~) keyboard_event_scan::$10 ← (byte) keyboard_event_scan::event_type == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$11 ← ! (boolean~) keyboard_event_scan::$10
+ if((boolean~) keyboard_event_scan::$11) goto keyboard_event_scan::@6
+ to:keyboard_event_scan::@16
+keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@17
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte) keyboard_event_scan::keycode
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ to:keyboard_event_scan::@7
+keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15
+ (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode | (byte/signed byte/word/signed word/dword/signed dword) 64
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte/word/dword~) keyboard_event_scan::$12
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ to:keyboard_event_scan::@7
+keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan::@16 keyboard_event_scan::@6
+ to:keyboard_event_scan::@5
+keyboard_event_scan::@17: scope:[keyboard_event_scan] from
+ to:keyboard_event_scan::@6
+keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan::@4
+ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row) ← (byte) keyboard_event_scan::row_scan
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@18 keyboard_event_scan::@2
+ (byte) keyboard_event_scan::row ← ++ (byte) keyboard_event_scan::row
+ (boolean~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$15) goto keyboard_event_scan::@1
+ to:keyboard_event_scan::@20
+keyboard_event_scan::@19: scope:[keyboard_event_scan] from
+ to:keyboard_event_scan::@2
+keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@8
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte~) keyboard_event_scan::$16 ← call keyboard_event_pressed (byte) KEY_LSHIFT
+ (boolean~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$18 ← ! (boolean~) keyboard_event_scan::$17
+ if((boolean~) keyboard_event_scan::$18) goto keyboard_event_scan::@9
+ to:keyboard_event_scan::@21
+keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@20 keyboard_event_scan::@21
+ (byte~) keyboard_event_scan::$20 ← call keyboard_event_pressed (byte) KEY_RSHIFT
+ (boolean~) keyboard_event_scan::$21 ← (byte~) keyboard_event_scan::$20 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$22 ← ! (boolean~) keyboard_event_scan::$21
+ if((boolean~) keyboard_event_scan::$22) goto keyboard_event_scan::@10
+ to:keyboard_event_scan::@22
+keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@20
+ (byte~) keyboard_event_scan::$19 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_LSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$19
+ to:keyboard_event_scan::@9
+keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$24 ← call keyboard_event_pressed (byte) KEY_CTRL
+ (boolean~) keyboard_event_scan::$25 ← (byte~) keyboard_event_scan::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$26 ← ! (boolean~) keyboard_event_scan::$25
+ if((boolean~) keyboard_event_scan::$26) goto keyboard_event_scan::@11
+ to:keyboard_event_scan::@23
+keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$23 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_RSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$23
+ to:keyboard_event_scan::@10
+keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@10 keyboard_event_scan::@23
+ (byte~) keyboard_event_scan::$28 ← call keyboard_event_pressed (byte) KEY_COMMODORE
+ (boolean~) keyboard_event_scan::$29 ← (byte~) keyboard_event_scan::$28 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$30 ← ! (boolean~) keyboard_event_scan::$29
+ if((boolean~) keyboard_event_scan::$30) goto keyboard_event_scan::@12
+ to:keyboard_event_scan::@24
+keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@10
+ (byte~) keyboard_event_scan::$27 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_CTRL
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$27
+ to:keyboard_event_scan::@11
+keyboard_event_scan::@12: scope:[keyboard_event_scan] from keyboard_event_scan::@11 keyboard_event_scan::@24
+ to:keyboard_event_scan::@return
+keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@11
+ (byte~) keyboard_event_scan::$31 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_COMMODORE
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$31
+ to:keyboard_event_scan::@12
+keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@12
+ return
+ to:@return
+@20: scope:[] from @19
+ to:@21
+keyboard_event_pressed: scope:[keyboard_event_pressed] from
+ (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3
+ (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0)
+ (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode & (byte/signed byte/word/signed word/dword/signed dword) 7
+ (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits & *((byte[8]) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1)
+ (byte) keyboard_event_pressed::return ← (byte~) keyboard_event_pressed::$2
+ to:keyboard_event_pressed::@return
+keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed keyboard_event_pressed::@1
+ (byte) keyboard_event_pressed::return ← (byte) keyboard_event_pressed::return
+ return (byte) keyboard_event_pressed::return
+ to:@return
+keyboard_event_pressed::@1: scope:[keyboard_event_pressed] from
+ to:keyboard_event_pressed::@return
+@21: scope:[] from @20
+ to:@22
+keyboard_event_get: scope:[keyboard_event_get] from
+ (boolean~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_get::$1 ← ! (boolean~) keyboard_event_get::$0
+ if((boolean~) keyboard_event_get::$1) goto keyboard_event_get::@1
+ to:keyboard_event_get::@3
+keyboard_event_get::@1: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@5
+ (byte) keyboard_events_size ← -- (byte) keyboard_events_size
+ (byte) keyboard_event_get::return ← *((byte[8]) keyboard_events + (byte) keyboard_events_size)
+ to:keyboard_event_get::@return
+keyboard_event_get::@3: scope:[keyboard_event_get] from keyboard_event_get
+ (byte) keyboard_event_get::return ← (byte/word/signed word/dword/signed dword) 255
+ to:keyboard_event_get::@return
+keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get::@1 keyboard_event_get::@2 keyboard_event_get::@3
+ (byte) keyboard_event_get::return ← (byte) keyboard_event_get::return
+ return (byte) keyboard_event_get::return
+ to:@return
+keyboard_event_get::@4: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@2
+keyboard_event_get::@2: scope:[keyboard_event_get] from keyboard_event_get::@4 keyboard_event_get::@6
+ to:keyboard_event_get::@return
+keyboard_event_get::@5: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@1
+keyboard_event_get::@6: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@2
+@22: scope:[] from @21
(byte[256]) bitmap_plot_xlo ← { fill( 256, 0) }
(byte[256]) bitmap_plot_xhi ← { fill( 256, 0) }
(byte[256]) bitmap_plot_ylo ← { fill( 256, 0) }
(byte[256]) bitmap_plot_yhi ← { fill( 256, 0) }
(byte[256]) bitmap_plot_bit ← { fill( 256, 0) }
- to:@20
+ to:@23
bitmap_init: scope:[bitmap_init] from
(byte) bitmap_init::bits ← (byte/word/signed word/dword/signed dword) 128
(byte) bitmap_init::x ← (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -5189,8 +5643,8 @@ bitmap_init::@8: scope:[bitmap_init] from bitmap_init::@4
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@8
return
to:@return
-@20: scope:[] from @19
- to:@21
+@23: scope:[] from @22
+ to:@24
bitmap_clear: scope:[bitmap_clear] from
(byte*~) bitmap_clear::$0 ← ((byte*)) { *((byte[256]) bitmap_plot_xhi + (byte/signed byte/word/signed word/dword/signed dword) 0), *((byte[256]) bitmap_plot_xlo + (byte/signed byte/word/signed word/dword/signed dword) 0) }
(byte*) bitmap_clear::bitmap ← (byte*~) bitmap_clear::$0
@@ -5216,8 +5670,8 @@ bitmap_clear::@4: scope:[bitmap_clear] from bitmap_clear::@3
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@4
return
to:@return
-@21: scope:[] from @20
- to:@22
+@24: scope:[] from @23
+ to:@25
bitmap_plot: scope:[bitmap_plot] from
(word) bitmap_plot::plotter_x ← { *((byte[256]) bitmap_plot_xhi + (byte) bitmap_plot::x), *((byte[256]) bitmap_plot_xlo + (byte) bitmap_plot::x) }
(word) bitmap_plot::plotter_y ← { *((byte[256]) bitmap_plot_yhi + (byte) bitmap_plot::y), *((byte[256]) bitmap_plot_ylo + (byte) bitmap_plot::y) }
@@ -5229,8 +5683,8 @@ bitmap_plot: scope:[bitmap_plot] from
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
return
to:@return
-@22: scope:[] from @21
- to:@23
+@25: scope:[] from @24
+ to:@26
bitmap_line: scope:[bitmap_line] from
(boolean~) bitmap_line::$0 ← (byte) bitmap_line::x0 < (byte) bitmap_line::x1
(boolean~) bitmap_line::$1 ← ! (boolean~) bitmap_line::$0
@@ -5333,8 +5787,8 @@ bitmap_line::@28: scope:[bitmap_line] from
bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@8
return
to:@return
-@23: scope:[] from @22
- to:@24
+@26: scope:[] from @25
+ to:@27
bitmap_line_xdyi: scope:[bitmap_line_xdyi] from
(byte~) bitmap_line_xdyi::$0 ← (byte) bitmap_line_xdyi::yd >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) bitmap_line_xdyi::e ← (byte~) bitmap_line_xdyi::$0
@@ -5363,8 +5817,8 @@ bitmap_line_xdyi::@4: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@2
bitmap_line_xdyi::@return: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@4
return
to:@return
-@24: scope:[] from @23
- to:@25
+@27: scope:[] from @26
+ to:@28
bitmap_line_xdyd: scope:[bitmap_line_xdyd] from
(byte~) bitmap_line_xdyd::$0 ← (byte) bitmap_line_xdyd::yd >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) bitmap_line_xdyd::e ← (byte~) bitmap_line_xdyd::$0
@@ -5393,8 +5847,8 @@ bitmap_line_xdyd::@4: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@2
bitmap_line_xdyd::@return: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@4
return
to:@return
-@25: scope:[] from @24
- to:@26
+@28: scope:[] from @27
+ to:@29
bitmap_line_ydxi: scope:[bitmap_line_ydxi] from
(byte~) bitmap_line_ydxi::$0 ← (byte) bitmap_line_ydxi::xd >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) bitmap_line_ydxi::e ← (byte~) bitmap_line_ydxi::$0
@@ -5423,8 +5877,8 @@ bitmap_line_ydxi::@4: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@2
bitmap_line_ydxi::@return: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@4
return
to:@return
-@26: scope:[] from @25
- to:@27
+@29: scope:[] from @28
+ to:@30
bitmap_line_ydxd: scope:[bitmap_line_ydxd] from
(byte~) bitmap_line_ydxd::$0 ← (byte) bitmap_line_ydxd::xd >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) bitmap_line_ydxd::e ← (byte~) bitmap_line_ydxd::$0
@@ -5454,8 +5908,8 @@ bitmap_line_ydxd::@4: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2
bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@4
return
to:@return
-@27: scope:[] from @26
- to:@28
+@30: scope:[] from @29
+ to:@31
main: scope:[main] from
asm { sei }
*((byte*) PROCPORT_DDR) ← (byte) PROCPORT_DDR_MEMORY_MASK
@@ -5479,29 +5933,29 @@ main::@6: scope:[main] from
main::@return: scope:[main] from main::@3
return
to:@return
-@28: scope:[] from @27
- (string~) $0 ← (string) "C64DTV Graphics Modes CCLHBME@" + (string) " OHIIMCC@"
- (string~) $1 ← (string~) $0 + (string) " LUNCMMM@"
- (string~) $2 ← (string~) $1 + (string) "----------------------------------------@"
- (string~) $3 ← (string~) $2 + (string) "1. Standard Char (V) 0000000@"
- (string~) $4 ← (string~) $3 + (string) "2. Extended Color Char (V) 0000001@"
- (string~) $5 ← (string~) $4 + (string) "3. Multicolor Char (V) 0000010@"
- (string~) $6 ← (string~) $5 + (string) "4. Standard Bitmap (V) 0000100@"
- (string~) $7 ← (string~) $6 + (string) "5. Multicolor Bitmap (V) 0000110@"
- (string~) $8 ← (string~) $7 + (string) "6. High Color Standard Char (H) 0001000@"
- (string~) $9 ← (string~) $8 + (string) "7. High Extended Color Char (H) 0001001@"
- (string~) $10 ← (string~) $9 + (string) "8. High Multicolor Char (H) 0001010@"
- (string~) $11 ← (string~) $10 + (string) "9. High Multicolor Bitmap (H) 0001110@"
- (string~) $12 ← (string~) $11 + (string) "a. Sixs Fred 2 (D) 0010111@"
- (string~) $13 ← (string~) $12 + (string) "b. Two Plane Bitmap (D) 0011101@"
- (string~) $14 ← (string~) $13 + (string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"
- (string~) $15 ← (string~) $14 + (string) "d. 8bpp Pixel Cell (D) 0111011@"
- (string~) $16 ← (string~) $15 + (string) "e. Chunky 8bpp Bitmap (D) 1111011@"
- (string~) $17 ← (string~) $16 + (string) "----------------------------------------@"
- (string~) $18 ← (string~) $17 + (string) " (V) vicII (H) vicII+hicol (D) c64dtv@"
- (string~) $19 ← (string~) $18 + (string) "@"
- (byte[]) MENU_TEXT ← (string~) $19
- to:@29
+@31: scope:[] from @30
+ (string~) $1 ← (string) "C64DTV Graphics Modes CCLHBME@" + (string) " OHIIMCC@"
+ (string~) $2 ← (string~) $1 + (string) " LUNCMMM@"
+ (string~) $3 ← (string~) $2 + (string) "----------------------------------------@"
+ (string~) $4 ← (string~) $3 + (string) "1. Standard Char (V) 0000000@"
+ (string~) $5 ← (string~) $4 + (string) "2. Extended Color Char (V) 0000001@"
+ (string~) $6 ← (string~) $5 + (string) "3. Multicolor Char (V) 0000010@"
+ (string~) $7 ← (string~) $6 + (string) "4. Standard Bitmap (V) 0000100@"
+ (string~) $8 ← (string~) $7 + (string) "5. Multicolor Bitmap (V) 0000110@"
+ (string~) $9 ← (string~) $8 + (string) "6. High Color Standard Char (H) 0001000@"
+ (string~) $10 ← (string~) $9 + (string) "7. High Extended Color Char (H) 0001001@"
+ (string~) $11 ← (string~) $10 + (string) "8. High Multicolor Char (H) 0001010@"
+ (string~) $12 ← (string~) $11 + (string) "9. High Multicolor Bitmap (H) 0001110@"
+ (string~) $13 ← (string~) $12 + (string) "a. Sixs Fred 2 (D) 0010111@"
+ (string~) $14 ← (string~) $13 + (string) "b. Two Plane Bitmap (D) 0011101@"
+ (string~) $15 ← (string~) $14 + (string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"
+ (string~) $16 ← (string~) $15 + (string) "d. 8bpp Pixel Cell (D) 0111011@"
+ (string~) $17 ← (string~) $16 + (string) "e. Chunky 8bpp Bitmap (D) 1111011@"
+ (string~) $18 ← (string~) $17 + (string) "----------------------------------------@"
+ (string~) $19 ← (string~) $18 + (string) " (V) vicII (H) vicII+hicol (D) c64dtv@"
+ (string~) $20 ← (string~) $19 + (string) "@"
+ (byte[]) MENU_TEXT ← (string~) $20
+ to:@32
menu: scope:[menu] from
(byte*) menu::SCREEN ← ((byte*)) (word/dword/signed dword) 32768
(byte*) menu::CHARSET ← ((byte*)) (word/dword/signed dword) 38912
@@ -5710,9 +6164,9 @@ menu::@45: scope:[menu] from
to:menu::@17
menu::@46: scope:[menu] from
to:menu::@5
-@29: scope:[] from @28
+@32: scope:[] from @31
(byte) dtv_control ← (byte/signed byte/word/signed word/dword/signed dword) 0
- to:@30
+ to:@33
mode_ctrl: scope:[mode_ctrl] from
to:mode_ctrl::@1
mode_ctrl::@1: scope:[mode_ctrl] from mode_ctrl mode_ctrl::@15
@@ -5835,8 +6289,8 @@ mode_ctrl::@30: scope:[mode_ctrl] from mode_ctrl::@14
to:mode_ctrl::@15
mode_ctrl::@31: scope:[mode_ctrl] from
to:mode_ctrl::@3
-@30: scope:[] from @29
- to:@31
+@33: scope:[] from @32
+ to:@34
mode_stdchar: scope:[mode_stdchar] from
(byte*) mode_stdchar::SCREEN ← ((byte*)) (word/dword/signed dword) 32768
(byte*) mode_stdchar::CHARSET ← ((byte*)) (word/dword/signed dword) 36864
@@ -5918,8 +6372,8 @@ mode_stdchar::@6: scope:[mode_stdchar] from mode_stdchar::@5
mode_stdchar::@return: scope:[mode_stdchar] from mode_stdchar::@6
return
to:@return
-@31: scope:[] from @30
- to:@32
+@34: scope:[] from @33
+ to:@35
mode_ecmchar: scope:[mode_ecmchar] from
(byte*) mode_ecmchar::SCREEN ← ((byte*)) (word/dword/signed dword) 32768
(byte*) mode_ecmchar::CHARSET ← ((byte*)) (word/dword/signed dword) 36864
@@ -6005,8 +6459,8 @@ mode_ecmchar::@6: scope:[mode_ecmchar] from mode_ecmchar::@5
mode_ecmchar::@return: scope:[mode_ecmchar] from mode_ecmchar::@6
return
to:@return
-@32: scope:[] from @31
- to:@33
+@35: scope:[] from @34
+ to:@36
mode_mcchar: scope:[mode_mcchar] from
(byte*) mode_mcchar::SCREEN ← ((byte*)) (word/dword/signed dword) 32768
(byte*) mode_mcchar::CHARSET ← ((byte*)) (word/dword/signed dword) 36864
@@ -6091,8 +6545,8 @@ mode_mcchar::@6: scope:[mode_mcchar] from mode_mcchar::@5
mode_mcchar::@return: scope:[mode_mcchar] from mode_mcchar::@6
return
to:@return
-@33: scope:[] from @32
- to:@34
+@36: scope:[] from @35
+ to:@37
mode_stdbitmap: scope:[mode_stdbitmap] from
(byte*) mode_stdbitmap::SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 16384
(byte*) mode_stdbitmap::BITMAP ← ((byte*)) (word/signed word/dword/signed dword) 24576
@@ -6180,8 +6634,8 @@ mode_stdbitmap::@8: scope:[mode_stdbitmap] from mode_stdbitmap::@4
mode_stdbitmap::@return: scope:[mode_stdbitmap] from mode_stdbitmap::@8
return
to:@return
-@34: scope:[] from @33
- to:@35
+@37: scope:[] from @36
+ to:@38
mode_hicolstdchar: scope:[mode_hicolstdchar] from
(byte*) mode_hicolstdchar::SCREEN ← ((byte*)) (word/dword/signed dword) 32768
(byte*) mode_hicolstdchar::CHARSET ← ((byte*)) (word/dword/signed dword) 36864
@@ -6262,8 +6716,8 @@ mode_hicolstdchar::@6: scope:[mode_hicolstdchar] from mode_hicolstdchar::@5
mode_hicolstdchar::@return: scope:[mode_hicolstdchar] from mode_hicolstdchar::@6
return
to:@return
-@35: scope:[] from @34
- to:@36
+@38: scope:[] from @37
+ to:@39
mode_hicolecmchar: scope:[mode_hicolecmchar] from
(byte*) mode_hicolecmchar::SCREEN ← ((byte*)) (word/dword/signed dword) 32768
(byte*) mode_hicolecmchar::CHARSET ← ((byte*)) (word/dword/signed dword) 36864
@@ -6348,8 +6802,8 @@ mode_hicolecmchar::@6: scope:[mode_hicolecmchar] from mode_hicolecmchar::@5
mode_hicolecmchar::@return: scope:[mode_hicolecmchar] from mode_hicolecmchar::@6
return
to:@return
-@36: scope:[] from @35
- to:@37
+@39: scope:[] from @38
+ to:@40
mode_hicolmcchar: scope:[mode_hicolmcchar] from
(byte*) mode_hicolmcchar::SCREEN ← ((byte*)) (word/dword/signed dword) 32768
(byte*) mode_hicolmcchar::CHARSET ← ((byte*)) (word/dword/signed dword) 36864
@@ -6433,8 +6887,8 @@ mode_hicolmcchar::@6: scope:[mode_hicolmcchar] from mode_hicolmcchar::@5
mode_hicolmcchar::@return: scope:[mode_hicolmcchar] from mode_hicolmcchar::@6
return
to:@return
-@37: scope:[] from @36
- to:@38
+@40: scope:[] from @39
+ to:@41
mode_twoplanebitmap: scope:[mode_twoplanebitmap] from
(byte*) mode_twoplanebitmap::PLANEA ← ((byte*)) (word/signed word/dword/signed dword) 16384
(byte*) mode_twoplanebitmap::PLANEB ← ((byte*)) (word/signed word/dword/signed dword) 24576
@@ -6563,8 +7017,8 @@ mode_twoplanebitmap::@18: scope:[mode_twoplanebitmap] from mode_twoplanebitmap:
mode_twoplanebitmap::@return: scope:[mode_twoplanebitmap] from mode_twoplanebitmap::@18
return
to:@return
-@38: scope:[] from @37
- to:@39
+@41: scope:[] from @40
+ to:@42
mode_sixsfred: scope:[mode_sixsfred] from
(byte*) mode_sixsfred::PLANEA ← ((byte*)) (word/signed word/dword/signed dword) 16384
(byte*) mode_sixsfred::PLANEB ← ((byte*)) (word/signed word/dword/signed dword) 24576
@@ -6680,8 +7134,8 @@ mode_sixsfred::@14: scope:[mode_sixsfred] from mode_sixsfred::@13
mode_sixsfred::@return: scope:[mode_sixsfred] from mode_sixsfred::@14
return
to:@return
-@39: scope:[] from @38
- to:@40
+@42: scope:[] from @41
+ to:@43
mode_sixsfred2: scope:[mode_sixsfred2] from
(byte*) mode_sixsfred2::PLANEA ← ((byte*)) (word/signed word/dword/signed dword) 16384
(byte*) mode_sixsfred2::PLANEB ← ((byte*)) (word/signed word/dword/signed dword) 24576
@@ -6797,8 +7251,8 @@ mode_sixsfred2::@14: scope:[mode_sixsfred2] from mode_sixsfred2::@13
mode_sixsfred2::@return: scope:[mode_sixsfred2] from mode_sixsfred2::@14
return
to:@return
-@40: scope:[] from @39
- to:@41
+@43: scope:[] from @42
+ to:@44
mode_8bpppixelcell: scope:[mode_8bpppixelcell] from
(byte*) mode_8bpppixelcell::PLANEA ← ((byte*)) (word/signed word/dword/signed dword) 15360
(byte*) mode_8bpppixelcell::PLANEB ← ((byte*)) (word/signed word/dword/signed dword) 16384
@@ -6915,8 +7369,8 @@ mode_8bpppixelcell::@14: scope:[mode_8bpppixelcell] from mode_8bpppixelcell::@1
mode_8bpppixelcell::@return: scope:[mode_8bpppixelcell] from mode_8bpppixelcell::@14
return
to:@return
-@41: scope:[] from @40
- to:@42
+@44: scope:[] from @43
+ to:@45
mode_8bppchunkybmm: scope:[mode_8bppchunkybmm] from
(dword) mode_8bppchunkybmm::PLANEB ← (dword/signed dword) 131072
(byte~) mode_8bppchunkybmm::$0 ← (byte) DTV_HIGHCOLOR | (byte) DTV_LINEAR
@@ -7000,10 +7454,10 @@ mode_8bppchunkybmm::@8: scope:[mode_8bppchunkybmm] from mode_8bppchunkybmm::@7
mode_8bppchunkybmm::@return: scope:[mode_8bppchunkybmm] from mode_8bppchunkybmm::@8
return
to:@return
-@42: scope:[] from @41
+@45: scope:[] from @44
call main
to:@end
-@end: scope:[] from @42
+@end: scope:[] from @45
Removing unused procedure print_str_ln
Removing unused procedure print_str_at
@@ -7012,8 +7466,11 @@ Removing unused procedure print_sbyte
Removing unused procedure print_sdword
Removing unused procedure keyboard_init
Removing unused procedure keyboard_get_keycode
+Removing unused procedure keyboard_event_scan
+Removing unused procedure keyboard_event_get
Removing unused procedure print_str
Removing unused procedure print_dword
+Removing unused procedure keyboard_event_pressed
Removing unused procedure print_word
Removing unused procedure print_byte
Removing unused procedure print_char
@@ -7073,6 +7530,13 @@ Eliminating unused variable (byte) KEY_CTRL and assignment [194] (byte) KEY_CTRL
Eliminating unused variable (byte) KEY_COMMODORE and assignment [197] (byte) KEY_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 61
Eliminating unused variable (byte) KEY_RUNSTOP and assignment [199] (byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
Eliminating unused variable (byte[]) keyboard_char_keycodes and assignment [200] (byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
+Eliminating unused variable (byte[8]) keyboard_events and assignment [218] (byte[8]) keyboard_events ← { fill( 8, 0) }
+Eliminating unused variable (byte) keyboard_events_size and assignment [219] (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+Eliminating unused variable (byte) keyboard_modifiers and assignment [220] (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+Eliminating unused variable (byte) KEY_MODIFIER_CTRL and assignment [223] (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+Eliminating unused variable (byte) KEY_MODIFIER_COMMODORE and assignment [224] (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+Eliminating unused variable (byte) KEY_MODIFIER_SHIFT and assignment [226] (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+Eliminating unused variable (byte[8]) keyboard_scan_values and assignment [227] (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
Eliminating unused variable - keeping the call (void~) bitmap_line::$9
Eliminating unused variable - keeping the call (void~) bitmap_line::$8
Eliminating unused variable - keeping the call (void~) bitmap_line::$14
@@ -7151,27 +7615,30 @@ Eliminating unused variable (byte) KEY_ARROW_UP and assignment [139] (byte) KEY_
Eliminating unused variable (byte) KEY_SLASH and assignment [140] (byte) KEY_SLASH ← (byte/signed byte/word/signed word/dword/signed dword) 55
Eliminating unused variable (byte) KEY_ARROW_LEFT and assignment [142] (byte) KEY_ARROW_LEFT ← (byte/signed byte/word/signed word/dword/signed dword) 57
Eliminating unused variable (byte) KEY_Q and assignment [145] (byte) KEY_Q ← (byte/signed byte/word/signed word/dword/signed dword) 62
-Creating constant string variable for inline (const string) $20 "C64DTV Graphics Modes CCLHBME@"
-Creating constant string variable for inline (const string) $21 " OHIIMCC@"
-Creating constant string variable for inline (const string) $22 " LUNCMMM@"
-Creating constant string variable for inline (const string) $23 "----------------------------------------@"
-Creating constant string variable for inline (const string) $24 "1. Standard Char (V) 0000000@"
-Creating constant string variable for inline (const string) $25 "2. Extended Color Char (V) 0000001@"
-Creating constant string variable for inline (const string) $26 "3. Multicolor Char (V) 0000010@"
-Creating constant string variable for inline (const string) $27 "4. Standard Bitmap (V) 0000100@"
-Creating constant string variable for inline (const string) $28 "5. Multicolor Bitmap (V) 0000110@"
-Creating constant string variable for inline (const string) $29 "6. High Color Standard Char (H) 0001000@"
-Creating constant string variable for inline (const string) $30 "7. High Extended Color Char (H) 0001001@"
-Creating constant string variable for inline (const string) $31 "8. High Multicolor Char (H) 0001010@"
-Creating constant string variable for inline (const string) $32 "9. High Multicolor Bitmap (H) 0001110@"
-Creating constant string variable for inline (const string) $33 "a. Sixs Fred 2 (D) 0010111@"
-Creating constant string variable for inline (const string) $34 "b. Two Plane Bitmap (D) 0011101@"
-Creating constant string variable for inline (const string) $35 "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"
-Creating constant string variable for inline (const string) $36 "d. 8bpp Pixel Cell (D) 0111011@"
-Creating constant string variable for inline (const string) $37 "e. Chunky 8bpp Bitmap (D) 1111011@"
-Creating constant string variable for inline (const string) $38 "----------------------------------------@"
-Creating constant string variable for inline (const string) $39 " (V) vicII (H) vicII+hicol (D) c64dtv@"
-Creating constant string variable for inline (const string) $40 "@"
+Eliminating unused variable (byte~) $0 and assignment [165] (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+Eliminating unused variable (byte) KEY_MODIFIER_LSHIFT and assignment [131] (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+Eliminating unused variable (byte) KEY_MODIFIER_RSHIFT and assignment [132] (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
+Creating constant string variable for inline (const string) $21 "C64DTV Graphics Modes CCLHBME@"
+Creating constant string variable for inline (const string) $22 " OHIIMCC@"
+Creating constant string variable for inline (const string) $23 " LUNCMMM@"
+Creating constant string variable for inline (const string) $24 "----------------------------------------@"
+Creating constant string variable for inline (const string) $25 "1. Standard Char (V) 0000000@"
+Creating constant string variable for inline (const string) $26 "2. Extended Color Char (V) 0000001@"
+Creating constant string variable for inline (const string) $27 "3. Multicolor Char (V) 0000010@"
+Creating constant string variable for inline (const string) $28 "4. Standard Bitmap (V) 0000100@"
+Creating constant string variable for inline (const string) $29 "5. Multicolor Bitmap (V) 0000110@"
+Creating constant string variable for inline (const string) $30 "6. High Color Standard Char (H) 0001000@"
+Creating constant string variable for inline (const string) $31 "7. High Extended Color Char (H) 0001001@"
+Creating constant string variable for inline (const string) $32 "8. High Multicolor Char (H) 0001010@"
+Creating constant string variable for inline (const string) $33 "9. High Multicolor Bitmap (H) 0001110@"
+Creating constant string variable for inline (const string) $34 "a. Sixs Fred 2 (D) 0010111@"
+Creating constant string variable for inline (const string) $35 "b. Two Plane Bitmap (D) 0011101@"
+Creating constant string variable for inline (const string) $36 "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"
+Creating constant string variable for inline (const string) $37 "d. 8bpp Pixel Cell (D) 0111011@"
+Creating constant string variable for inline (const string) $38 "e. Chunky 8bpp Bitmap (D) 1111011@"
+Creating constant string variable for inline (const string) $39 "----------------------------------------@"
+Creating constant string variable for inline (const string) $40 " (V) vicII (H) vicII+hicol (D) c64dtv@"
+Creating constant string variable for inline (const string) $41 "@"
Removing empty block print_str_lines::@6
Removing empty block print_str_lines::@3
Removing empty block print_str_lines::@7
@@ -7194,11 +7661,14 @@ Removing empty block keyboard_matrix_read::@1
Removing empty block @17
Removing empty block keyboard_key_pressed::@1
Removing empty block @18
-Removing empty block bitmap_init::@8
+Removing empty block @19
Removing empty block @20
-Removing empty block bitmap_clear::@4
Removing empty block @21
-Removing empty block @22
+Removing empty block bitmap_init::@8
+Removing empty block @23
+Removing empty block bitmap_clear::@4
+Removing empty block @24
+Removing empty block @25
Removing empty block bitmap_line::@4
Removing empty block bitmap_line::@18
Removing empty block bitmap_line::@5
@@ -7213,15 +7683,15 @@ Removing empty block bitmap_line::@12
Removing empty block bitmap_line::@26
Removing empty block bitmap_line::@14
Removing empty block bitmap_line::@28
-Removing empty block @23
-Removing empty block bitmap_line_xdyi::@4
-Removing empty block @24
-Removing empty block bitmap_line_xdyd::@4
-Removing empty block @25
-Removing empty block bitmap_line_ydxi::@4
Removing empty block @26
-Removing empty block bitmap_line_ydxd::@4
+Removing empty block bitmap_line_xdyi::@4
Removing empty block @27
+Removing empty block bitmap_line_xdyd::@4
+Removing empty block @28
+Removing empty block bitmap_line_ydxi::@4
+Removing empty block @29
+Removing empty block bitmap_line_ydxd::@4
+Removing empty block @30
Removing empty block main::@4
Removing empty block main::@3
Removing empty block main::@5
@@ -7251,19 +7721,19 @@ Removing empty block mode_ctrl::@20
Removing empty block mode_ctrl::@21
Removing empty block mode_ctrl::@22
Removing empty block mode_ctrl::@31
-Removing empty block @30
-Removing empty block @31
-Removing empty block @32
Removing empty block @33
Removing empty block @34
Removing empty block @35
Removing empty block @36
Removing empty block @37
-Removing empty block mode_twoplanebitmap::@14
Removing empty block @38
Removing empty block @39
Removing empty block @40
+Removing empty block mode_twoplanebitmap::@14
Removing empty block @41
+Removing empty block @42
+Removing empty block @43
+Removing empty block @44
PROCEDURE MODIFY VARIABLE ANALYSIS
print_str_lines modifies print_char_cursor
print_str_lines modifies print_line_cursor
@@ -7537,8 +8007,8 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen
(byte) KEY_2#0 ← (byte/signed byte/word/signed word/dword/signed dword) 59
(byte) KEY_SPACE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 60
(byte[8]) keyboard_matrix_row_bitmask#0 ← { (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_matrix_col_bitmask#0 ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
- to:@19
+ (byte[8]) keyboard_matrix_col_bitmask#0 ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ to:@22
keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed
(byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 )
*((byte*) CIA1_PORT_A#0) ← *((byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#1)
@@ -7565,7 +8035,7 @@ keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_presse
(byte) keyboard_key_pressed::colidx#1 ← phi( keyboard_key_pressed/(byte) keyboard_key_pressed::colidx#0 )
(byte) keyboard_matrix_read::return#4 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::return#2 )
(byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#4
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#1)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#1)
(byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$3
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
@@ -7573,7 +8043,7 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p
(byte) keyboard_key_pressed::return#1 ← (byte) keyboard_key_pressed::return#22
return
to:@return
-@19: scope:[] from @15
+@22: scope:[] from @15
(byte*) print_char_cursor#85 ← phi( @15/(byte*) print_char_cursor#99 )
(byte*) print_line_cursor#85 ← phi( @15/(byte*) print_line_cursor#99 )
(byte*) print_screen#66 ← phi( @15/(byte*) print_screen#80 )
@@ -7582,7 +8052,7 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p
(byte[256]) bitmap_plot_ylo#0 ← { fill( 256, 0) }
(byte[256]) bitmap_plot_yhi#0 ← { fill( 256, 0) }
(byte[256]) bitmap_plot_bit#0 ← { fill( 256, 0) }
- to:@28
+ to:@31
bitmap_init: scope:[bitmap_init] from mode_stdbitmap::@7
(byte*) bitmap_init::bitmap#2 ← phi( mode_stdbitmap::@7/(byte*) bitmap_init::bitmap#0 )
(byte) bitmap_init::bits#0 ← (byte/word/signed word/dword/signed dword) 128
@@ -8133,11 +8603,11 @@ bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@5
bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2
return
to:@return
-main: scope:[main] from @42
- (byte) dtv_control#130 ← phi( @42/(byte) dtv_control#129 )
- (byte*) print_char_cursor#55 ← phi( @42/(byte*) print_char_cursor#51 )
- (byte*) print_line_cursor#52 ← phi( @42/(byte*) print_line_cursor#49 )
- (byte*) print_screen#34 ← phi( @42/(byte*) print_screen#33 )
+main: scope:[main] from @45
+ (byte) dtv_control#130 ← phi( @45/(byte) dtv_control#129 )
+ (byte*) print_char_cursor#55 ← phi( @45/(byte*) print_char_cursor#51 )
+ (byte*) print_line_cursor#52 ← phi( @45/(byte*) print_line_cursor#49 )
+ (byte*) print_screen#34 ← phi( @45/(byte*) print_screen#33 )
asm { sei }
*((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0
*((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0
@@ -8178,12 +8648,11 @@ main::@return: scope:[main] from main::@1
(byte) dtv_control#1 ← (byte) dtv_control#56
return
to:@return
-@28: scope:[] from @19
- (byte*) print_char_cursor#84 ← phi( @19/(byte*) print_char_cursor#85 )
- (byte*) print_line_cursor#83 ← phi( @19/(byte*) print_line_cursor#85 )
- (byte*) print_screen#65 ← phi( @19/(byte*) print_screen#66 )
- (string~) $0 ← (const string) $20 + (const string) $21
- (string~) $1 ← (string~) $0 + (const string) $22
+@31: scope:[] from @22
+ (byte*) print_char_cursor#84 ← phi( @22/(byte*) print_char_cursor#85 )
+ (byte*) print_line_cursor#83 ← phi( @22/(byte*) print_line_cursor#85 )
+ (byte*) print_screen#65 ← phi( @22/(byte*) print_screen#66 )
+ (string~) $1 ← (const string) $21 + (const string) $22
(string~) $2 ← (string~) $1 + (const string) $23
(string~) $3 ← (string~) $2 + (const string) $24
(string~) $4 ← (string~) $3 + (const string) $25
@@ -8202,8 +8671,9 @@ main::@return: scope:[main] from main::@1
(string~) $17 ← (string~) $16 + (const string) $38
(string~) $18 ← (string~) $17 + (const string) $39
(string~) $19 ← (string~) $18 + (const string) $40
- (byte[]) MENU_TEXT#0 ← (string~) $19
- to:@29
+ (string~) $20 ← (string~) $19 + (const string) $41
+ (byte[]) MENU_TEXT#0 ← (string~) $20
+ to:@32
menu: scope:[menu] from main::@2
(byte) dtv_control#255 ← phi( main::@2/(byte) dtv_control#98 )
(byte*) print_char_cursor#100 ← phi( main::@2/(byte*) print_char_cursor#35 )
@@ -8745,12 +9215,12 @@ menu::@73: scope:[menu] from menu::@44
(byte) dtv_control#69 ← phi( menu::@44/(byte) dtv_control#53 )
(byte) dtv_control#14 ← (byte) dtv_control#69
to:menu::@return
-@29: scope:[] from @28
- (byte*) print_char_cursor#70 ← phi( @28/(byte*) print_char_cursor#84 )
- (byte*) print_line_cursor#67 ← phi( @28/(byte*) print_line_cursor#83 )
- (byte*) print_screen#50 ← phi( @28/(byte*) print_screen#65 )
+@32: scope:[] from @31
+ (byte*) print_char_cursor#70 ← phi( @31/(byte*) print_char_cursor#84 )
+ (byte*) print_line_cursor#67 ← phi( @31/(byte*) print_line_cursor#83 )
+ (byte*) print_screen#50 ← phi( @31/(byte*) print_screen#65 )
(byte) dtv_control#15 ← (byte/signed byte/word/signed word/dword/signed dword) 0
- to:@42
+ to:@45
mode_ctrl: scope:[mode_ctrl] from mode_8bppchunkybmm::@11 mode_8bpppixelcell::@14 mode_ecmchar::@6 mode_hicolecmchar::@6 mode_hicolmcchar::@6 mode_hicolstdchar::@6 mode_mcchar::@6 mode_sixsfred2::@14 mode_sixsfred::@14 mode_stdbitmap::@8 mode_stdchar::@6 mode_twoplanebitmap::@18
(byte) dtv_control#145 ← phi( mode_8bppchunkybmm::@11/(byte) dtv_control#128 mode_8bpppixelcell::@14/(byte) dtv_control#127 mode_ecmchar::@6/(byte) dtv_control#118 mode_hicolecmchar::@6/(byte) dtv_control#122 mode_hicolmcchar::@6/(byte) dtv_control#123 mode_hicolstdchar::@6/(byte) dtv_control#121 mode_mcchar::@6/(byte) dtv_control#119 mode_sixsfred2::@14/(byte) dtv_control#126 mode_sixsfred::@14/(byte) dtv_control#125 mode_stdbitmap::@8/(byte) dtv_control#120 mode_stdchar::@6/(byte) dtv_control#117 mode_twoplanebitmap::@18/(byte) dtv_control#124 )
to:mode_ctrl::@1
@@ -10527,27 +10997,26 @@ mode_8bppchunkybmm::@return: scope:[mode_8bppchunkybmm] from mode_8bppchunkybmm
(byte) dtv_control#53 ← (byte) dtv_control#96
return
to:@return
-@42: scope:[] from @29
- (byte) dtv_control#129 ← phi( @29/(byte) dtv_control#15 )
- (byte*) print_char_cursor#51 ← phi( @29/(byte*) print_char_cursor#70 )
- (byte*) print_line_cursor#49 ← phi( @29/(byte*) print_line_cursor#67 )
- (byte*) print_screen#33 ← phi( @29/(byte*) print_screen#50 )
+@45: scope:[] from @32
+ (byte) dtv_control#129 ← phi( @32/(byte) dtv_control#15 )
+ (byte*) print_char_cursor#51 ← phi( @32/(byte*) print_char_cursor#70 )
+ (byte*) print_line_cursor#49 ← phi( @32/(byte*) print_line_cursor#67 )
+ (byte*) print_screen#33 ← phi( @32/(byte*) print_screen#50 )
call main param-assignment
- to:@43
-@43: scope:[] from @42
- (byte) dtv_control#97 ← phi( @42/(byte) dtv_control#1 )
- (byte*) print_char_cursor#30 ← phi( @42/(byte*) print_char_cursor#11 )
- (byte*) print_line_cursor#29 ← phi( @42/(byte*) print_line_cursor#10 )
- (byte*) print_screen#16 ← phi( @42/(byte*) print_screen#4 )
+ to:@46
+@46: scope:[] from @45
+ (byte) dtv_control#97 ← phi( @45/(byte) dtv_control#1 )
+ (byte*) print_char_cursor#30 ← phi( @45/(byte*) print_char_cursor#11 )
+ (byte*) print_line_cursor#29 ← phi( @45/(byte*) print_line_cursor#10 )
+ (byte*) print_screen#16 ← phi( @45/(byte*) print_screen#4 )
(byte*) print_screen#7 ← (byte*) print_screen#16
(byte*) print_line_cursor#15 ← (byte*) print_line_cursor#29
(byte*) print_char_cursor#16 ← (byte*) print_char_cursor#30
(byte) dtv_control#54 ← (byte) dtv_control#97
to:@end
-@end: scope:[] from @43
+@end: scope:[] from @46
SYMBOL TABLE SSA
-(string~) $0
(string~) $1
(string~) $10
(string~) $11
@@ -10560,29 +11029,30 @@ SYMBOL TABLE SSA
(string~) $18
(string~) $19
(string~) $2
-(const string) $20 = (string) "C64DTV Graphics Modes CCLHBME@"
-(const string) $21 = (string) " OHIIMCC@"
-(const string) $22 = (string) " LUNCMMM@"
-(const string) $23 = (string) "----------------------------------------@"
-(const string) $24 = (string) "1. Standard Char (V) 0000000@"
-(const string) $25 = (string) "2. Extended Color Char (V) 0000001@"
-(const string) $26 = (string) "3. Multicolor Char (V) 0000010@"
-(const string) $27 = (string) "4. Standard Bitmap (V) 0000100@"
-(const string) $28 = (string) "5. Multicolor Bitmap (V) 0000110@"
-(const string) $29 = (string) "6. High Color Standard Char (H) 0001000@"
+(string~) $20
+(const string) $21 = (string) "C64DTV Graphics Modes CCLHBME@"
+(const string) $22 = (string) " OHIIMCC@"
+(const string) $23 = (string) " LUNCMMM@"
+(const string) $24 = (string) "----------------------------------------@"
+(const string) $25 = (string) "1. Standard Char (V) 0000000@"
+(const string) $26 = (string) "2. Extended Color Char (V) 0000001@"
+(const string) $27 = (string) "3. Multicolor Char (V) 0000010@"
+(const string) $28 = (string) "4. Standard Bitmap (V) 0000100@"
+(const string) $29 = (string) "5. Multicolor Bitmap (V) 0000110@"
(string~) $3
-(const string) $30 = (string) "7. High Extended Color Char (H) 0001001@"
-(const string) $31 = (string) "8. High Multicolor Char (H) 0001010@"
-(const string) $32 = (string) "9. High Multicolor Bitmap (H) 0001110@"
-(const string) $33 = (string) "a. Sixs Fred 2 (D) 0010111@"
-(const string) $34 = (string) "b. Two Plane Bitmap (D) 0011101@"
-(const string) $35 = (string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"
-(const string) $36 = (string) "d. 8bpp Pixel Cell (D) 0111011@"
-(const string) $37 = (string) "e. Chunky 8bpp Bitmap (D) 1111011@"
-(const string) $38 = (string) "----------------------------------------@"
-(const string) $39 = (string) " (V) vicII (H) vicII+hicol (D) c64dtv@"
+(const string) $30 = (string) "6. High Color Standard Char (H) 0001000@"
+(const string) $31 = (string) "7. High Extended Color Char (H) 0001001@"
+(const string) $32 = (string) "8. High Multicolor Char (H) 0001010@"
+(const string) $33 = (string) "9. High Multicolor Bitmap (H) 0001110@"
+(const string) $34 = (string) "a. Sixs Fred 2 (D) 0010111@"
+(const string) $35 = (string) "b. Two Plane Bitmap (D) 0011101@"
+(const string) $36 = (string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"
+(const string) $37 = (string) "d. 8bpp Pixel Cell (D) 0111011@"
+(const string) $38 = (string) "e. Chunky 8bpp Bitmap (D) 1111011@"
+(const string) $39 = (string) "----------------------------------------@"
(string~) $4
-(const string) $40 = (string) "@"
+(const string) $40 = (string) " (V) vicII (H) vicII+hicol (D) c64dtv@"
+(const string) $41 = (string) "@"
(string~) $5
(string~) $6
(string~) $7
@@ -10590,11 +11060,11 @@ SYMBOL TABLE SSA
(string~) $9
(label) @1
(label) @15
-(label) @19
-(label) @28
-(label) @29
-(label) @42
-(label) @43
+(label) @22
+(label) @31
+(label) @32
+(label) @45
+(label) @46
(label) @begin
(label) @end
(byte*) BGCOL
@@ -11626,8 +12096,8 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#9
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
-(byte[]) keyboard_matrix_col_bitmask
-(byte[]) keyboard_matrix_col_bitmask#0
+(byte[8]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask#0
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -13632,7 +14102,7 @@ Alias (byte*) print_screen#12 = (byte*) print_screen#3
Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#9
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#24
Alias (byte) dtv_control#0 = (byte) dtv_control#55
-Alias (byte[]) MENU_TEXT#0 = (string~) $19
+Alias (byte[]) MENU_TEXT#0 = (string~) $20
Alias (byte*) print_screen#51 = (byte*) print_screen#67
Alias (byte*) print_line_cursor#70 = (byte*) print_line_cursor#86
Alias (byte*) print_char_cursor#71 = (byte*) print_char_cursor#86
@@ -14759,7 +15229,7 @@ Constant (const byte) KEY_1#0 = 56
Constant (const byte) KEY_2#0 = 59
Constant (const byte) KEY_SPACE#0 = 60
Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { 254, 253, 251, 247, 239, 223, 191, 127 }
-Constant (const byte[]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 }
+Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 }
Constant (const byte[256]) bitmap_plot_xlo#0 = { fill( 256, 0) }
Constant (const byte[256]) bitmap_plot_xhi#0 = { fill( 256, 0) }
Constant (const byte[256]) bitmap_plot_ylo#0 = { fill( 256, 0) }
@@ -14773,7 +15243,7 @@ Constant (const byte) bitmap_init::y#0 = 0
Constant (const word/signed word/dword/signed dword) bitmap_init::$13 = 40*8
Constant (const byte) bitmap_clear::y#0 = 0
Constant (const byte) bitmap_clear::x#0 = 0
-Constant (const string) $0 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"
+Constant (const string) $1 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"
Constant (const byte*) menu::SCREEN#0 = ((byte*))32768
Constant (const byte*) menu::CHARSET#0 = ((byte*))38912
Constant (const byte) menu::i#0 = 0
@@ -14879,7 +15349,7 @@ Constant (const word) mode_8bppchunkybmm::x#0 = 0
Constant (const byte*) mode_8bppchunkybmm::gfxb#2 = ((byte*))16384
Constant (const byte/signed byte/word/signed word/dword/signed dword) mode_8bppchunkybmm::$27 = 16384/16384
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $1 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"
+Constant (const string) $2 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"
Constant (const dword) menu::$0 = ((dword))menu::CHARSET#0
Constant (const dword) menu::$3 = DTV_COLOR_BANK_DEFAULT#0/1024
Constant (const dword) menu::$6 = DTV_COLOR_BANK_DEFAULT#0/1024
@@ -15011,7 +15481,7 @@ Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2 = ((byte))mode_8bppchu
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print_screen#1 = print_set_screen::screen#0
Constant (const byte) bitmap_init::$1 = >bitmap_init::bitmap#0
-Constant (const string) $2 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"
+Constant (const string) $3 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"
Constant (const dword) menu::$1 = menu::$0/65536
Constant (const word) menu::$4 = ((word))menu::$3
Constant (const word) menu::$7 = ((word))menu::$6
@@ -15088,7 +15558,7 @@ Constant (const byte) mode_8bppchunkybmm::gfxbCpuBank#0 = ((byte))mode_8bppchunk
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print_cls::sc#0 = print_screen#1
Constant (const byte*) print_cls::$0 = print_screen#1+1000
-Constant (const string) $3 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"
+Constant (const string) $4 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"
Constant (const byte) menu::$2 = ((byte))menu::$1
Constant (const byte) menu::$5 = menu::$7
@@ -15148,7 +15618,7 @@ Constant (const byte/word/dword) mode_8bppchunkybmm::$8 = mode_8bppchunkybmm::$7
Constant (const byte) dtvSetCpuBankSegment1::cpuBankIdx#0 = mode_8bppchunkybmm::gfxbCpuBank#0
Constant (const byte) mode_8bppchunkybmm::gfxbCpuBank#1 = ++mode_8bppchunkybmm::gfxbCpuBank#0
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $4 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"
+Constant (const string) $5 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"
Constant (const byte/word/dword) menu::$12 = 3^menu::$11
Constant (const word/dword) menu::$21 = menu::$17|menu::$20
Constant (const byte/word/dword) mode_stdchar::$12 = 3^mode_stdchar::$11
@@ -15169,7 +15639,7 @@ Constant (const byte/word/dword) mode_twoplanebitmap::$5 = mode_twoplanebitmap::
Constant (const byte/word/dword) mode_sixsfred::$5 = mode_sixsfred::$4|3
Constant (const byte/word/dword) mode_sixsfred2::$3 = mode_sixsfred2::$2|3
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $5 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"
+Constant (const string) $6 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"
Constant (const byte) menu::$22 = ((byte))menu::$21
Constant (const byte) mode_stdchar::$22 = ((byte))mode_stdchar::$21
Constant (const byte) mode_ecmchar::$23 = ((byte))mode_ecmchar::$22
@@ -15179,31 +15649,31 @@ Constant (const byte) mode_hicolstdchar::$22 = ((byte))mode_hicolstdchar::$21
Constant (const byte) mode_hicolecmchar::$23 = ((byte))mode_hicolecmchar::$22
Constant (const byte) mode_hicolmcchar::$23 = ((byte))mode_hicolmcchar::$22
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $6 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"
+Constant (const string) $7 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $7 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"
+Constant (const string) $8 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $8 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"
+Constant (const string) $9 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $9 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"
+Constant (const string) $10 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $10 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"
+Constant (const string) $11 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $11 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"
+Constant (const string) $12 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $12 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"
+Constant (const string) $13 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $13 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"
+Constant (const string) $14 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $14 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"
+Constant (const string) $15 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $15 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+"d. 8bpp Pixel Cell (D) 0111011@"
+Constant (const string) $16 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+"d. 8bpp Pixel Cell (D) 0111011@"
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $16 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+"d. 8bpp Pixel Cell (D) 0111011@"+"e. Chunky 8bpp Bitmap (D) 1111011@"
+Constant (const string) $17 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+"d. 8bpp Pixel Cell (D) 0111011@"+"e. Chunky 8bpp Bitmap (D) 1111011@"
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $17 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+"d. 8bpp Pixel Cell (D) 0111011@"+"e. Chunky 8bpp Bitmap (D) 1111011@"+"----------------------------------------@"
+Constant (const string) $18 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+"d. 8bpp Pixel Cell (D) 0111011@"+"e. Chunky 8bpp Bitmap (D) 1111011@"+"----------------------------------------@"
Succesful SSA optimization Pass2ConstantIdentification
-Constant (const string) $18 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+"d. 8bpp Pixel Cell (D) 0111011@"+"e. Chunky 8bpp Bitmap (D) 1111011@"+"----------------------------------------@"+" (V) vicII (H) vicII+hicol (D) c64dtv@"
+Constant (const string) $19 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+"d. 8bpp Pixel Cell (D) 0111011@"+"e. Chunky 8bpp Bitmap (D) 1111011@"+"----------------------------------------@"+" (V) vicII (H) vicII+hicol (D) c64dtv@"
Succesful SSA optimization Pass2ConstantIdentification
Constant (const string) MENU_TEXT#0 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+"d. 8bpp Pixel Cell (D) 0111011@"+"e. Chunky 8bpp Bitmap (D) 1111011@"+"----------------------------------------@"+" (V) vicII (H) vicII+hicol (D) c64dtv@"+"@"
Succesful SSA optimization Pass2ConstantIdentification
@@ -15255,7 +15725,6 @@ Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) mod
Eliminating unused variable - keeping the phi block (byte*) print_screen#13
Eliminating unused variable - keeping the phi block (byte*) print_line_cursor#10
Eliminating unused variable - keeping the phi block (byte*) print_char_cursor#11
-Eliminating unused constant (const string) $20
Eliminating unused constant (const string) $21
Eliminating unused constant (const string) $22
Eliminating unused constant (const string) $23
@@ -15276,7 +15745,7 @@ Eliminating unused constant (const string) $37
Eliminating unused constant (const string) $38
Eliminating unused constant (const string) $39
Eliminating unused constant (const string) $40
-Eliminating unused constant (const string) $0
+Eliminating unused constant (const string) $41
Eliminating unused constant (const string) $1
Eliminating unused constant (const string) $2
Eliminating unused constant (const string) $3
@@ -15295,6 +15764,7 @@ Eliminating unused constant (const string) $15
Eliminating unused constant (const string) $16
Eliminating unused constant (const string) $17
Eliminating unused constant (const string) $18
+Eliminating unused constant (const string) $19
Succesful SSA optimization PassNEliminateUnusedVars
Eliminating unused constant (const byte*) print_screen#0
Succesful SSA optimization PassNEliminateUnusedVars
@@ -15307,11 +15777,11 @@ Culled Empty Block (label) print_str_lines::@11
Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) @15
-Culled Empty Block (label) @19
+Culled Empty Block (label) @22
Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5
Culled Empty Block (label) bitmap_init::@6
Culled Empty Block (label) main::@7
-Culled Empty Block (label) @28
+Culled Empty Block (label) @31
Culled Empty Block (label) menu::@18
Culled Empty Block (label) menu::@49
Culled Empty Block (label) menu::@52
@@ -15327,7 +15797,7 @@ Culled Empty Block (label) menu::@70
Culled Empty Block (label) menu::@72
Culled Empty Block (label) menu::@17
Culled Empty Block (label) menu::@73
-Culled Empty Block (label) @29
+Culled Empty Block (label) @32
Culled Empty Block (label) mode_ctrl::@2
Culled Empty Block (label) mode_ctrl::@5
Not culling empty block because it shares successor with its predecessor. (label) mode_ctrl::@29
@@ -15354,7 +15824,7 @@ Not culling empty block because it shares successor with its predecessor. (label
Culled Empty Block (label) mode_8bpppixelcell::@15
Culled Empty Block (label) mode_8bppchunkybmm::@9
Culled Empty Block (label) mode_8bppchunkybmm::@12
-Culled Empty Block (label) @43
+Culled Empty Block (label) @46
Succesful SSA optimization Pass2CullEmptyBlocks
Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5
Not culling empty block because it shares successor with its predecessor. (label) mode_ctrl::@29
@@ -16669,7 +17139,7 @@ Constant inlined bitmap_init::$1 = >(const byte*) mode_stdbitmap::BITMAP#0
Constant inlined dtv_control#39 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0
Constant inlined dtv_control#36 = (const byte) DTV_HIGHCOLOR#0
Succesful SSA optimization Pass2ConstantInlining
-Block Sequence Planned @begin @42 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@2 menu::@19 menu::@47 menu::@48 menu::@3 menu::@return menu::@4 menu::@50 menu::@22 menu::@6 menu::@51 menu::@24 menu::@7 menu::@53 menu::@26 menu::@8 menu::@55 menu::@28 menu::@9 menu::@57 menu::@30 menu::@10 menu::@59 menu::@32 menu::@11 menu::@61 menu::@34 menu::@12 menu::@63 menu::@36 menu::@13 menu::@65 menu::@38 menu::@14 menu::@67 menu::@40 menu::@15 menu::@69 menu::@42 menu::@16 menu::@71 menu::@44 mode_8bppchunkybmm mode_8bppchunkybmm::@1 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@return mode_ctrl mode_ctrl::@1 mode_ctrl::@return mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@32 mode_ctrl::@7 mode_ctrl::@33 mode_ctrl::@23 mode_ctrl::@8 mode_ctrl::@34 mode_ctrl::@24 mode_ctrl::@9 mode_ctrl::@35 mode_ctrl::@25 mode_ctrl::@10 mode_ctrl::@36 mode_ctrl::@26 mode_ctrl::@11 mode_ctrl::@37 mode_ctrl::@27 mode_ctrl::@12 mode_ctrl::@38 mode_ctrl::@28 mode_ctrl::@13 mode_ctrl::@39 mode_ctrl::@29 mode_ctrl::@14 mode_ctrl::@30 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return mode_8bpppixelcell mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@9 mode_8bpppixelcell::@10 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@6 mode_8bpppixelcell::@11 mode_8bpppixelcell::@7 mode_8bpppixelcell::@12 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@return mode_sixsfred mode_sixsfred::@1 mode_sixsfred::@8 mode_sixsfred::@2 mode_sixsfred::@3 mode_sixsfred::@9 mode_sixsfred::@4 mode_sixsfred::@5 mode_sixsfred::@11 mode_sixsfred::@6 mode_sixsfred::@7 mode_sixsfred::@13 mode_sixsfred::@14 mode_sixsfred::@return mode_twoplanebitmap mode_twoplanebitmap::@1 mode_twoplanebitmap::@10 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@11 mode_twoplanebitmap::@4 mode_twoplanebitmap::@5 mode_twoplanebitmap::@13 mode_twoplanebitmap::@7 mode_twoplanebitmap::@15 mode_twoplanebitmap::@8 mode_twoplanebitmap::@9 mode_twoplanebitmap::@17 mode_twoplanebitmap::@18 mode_twoplanebitmap::@return mode_twoplanebitmap::@6 mode_sixsfred2 mode_sixsfred2::@1 mode_sixsfred2::@8 mode_sixsfred2::@2 mode_sixsfred2::@3 mode_sixsfred2::@9 mode_sixsfred2::@4 mode_sixsfred2::@5 mode_sixsfred2::@11 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@13 mode_sixsfred2::@14 mode_sixsfred2::@return mode_hicolmcchar mode_hicolmcchar::@1 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@3 mode_hicolmcchar::@5 mode_hicolmcchar::@6 mode_hicolmcchar::@return mode_hicolecmchar mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 mode_hicolecmchar::@5 mode_hicolecmchar::@6 mode_hicolecmchar::@return mode_hicolstdchar mode_hicolstdchar::@1 mode_hicolstdchar::@4 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@5 mode_hicolstdchar::@6 mode_hicolstdchar::@return mode_stdbitmap mode_stdbitmap::@1 mode_stdbitmap::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@4 mode_stdbitmap::@11 mode_stdbitmap::@8 mode_stdbitmap::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_plot bitmap_plot::@return bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return mode_mcchar mode_mcchar::@1 mode_mcchar::@4 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@5 mode_mcchar::@6 mode_mcchar::@return mode_ecmchar mode_ecmchar::@1 mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@3 mode_ecmchar::@5 mode_ecmchar::@6 mode_ecmchar::@return mode_stdchar mode_stdchar::@1 mode_stdchar::@4 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return
+Block Sequence Planned @begin @45 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@2 menu::@19 menu::@47 menu::@48 menu::@3 menu::@return menu::@4 menu::@50 menu::@22 menu::@6 menu::@51 menu::@24 menu::@7 menu::@53 menu::@26 menu::@8 menu::@55 menu::@28 menu::@9 menu::@57 menu::@30 menu::@10 menu::@59 menu::@32 menu::@11 menu::@61 menu::@34 menu::@12 menu::@63 menu::@36 menu::@13 menu::@65 menu::@38 menu::@14 menu::@67 menu::@40 menu::@15 menu::@69 menu::@42 menu::@16 menu::@71 menu::@44 mode_8bppchunkybmm mode_8bppchunkybmm::@1 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@return mode_ctrl mode_ctrl::@1 mode_ctrl::@return mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@32 mode_ctrl::@7 mode_ctrl::@33 mode_ctrl::@23 mode_ctrl::@8 mode_ctrl::@34 mode_ctrl::@24 mode_ctrl::@9 mode_ctrl::@35 mode_ctrl::@25 mode_ctrl::@10 mode_ctrl::@36 mode_ctrl::@26 mode_ctrl::@11 mode_ctrl::@37 mode_ctrl::@27 mode_ctrl::@12 mode_ctrl::@38 mode_ctrl::@28 mode_ctrl::@13 mode_ctrl::@39 mode_ctrl::@29 mode_ctrl::@14 mode_ctrl::@30 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return mode_8bpppixelcell mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@9 mode_8bpppixelcell::@10 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@6 mode_8bpppixelcell::@11 mode_8bpppixelcell::@7 mode_8bpppixelcell::@12 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@return mode_sixsfred mode_sixsfred::@1 mode_sixsfred::@8 mode_sixsfred::@2 mode_sixsfred::@3 mode_sixsfred::@9 mode_sixsfred::@4 mode_sixsfred::@5 mode_sixsfred::@11 mode_sixsfred::@6 mode_sixsfred::@7 mode_sixsfred::@13 mode_sixsfred::@14 mode_sixsfred::@return mode_twoplanebitmap mode_twoplanebitmap::@1 mode_twoplanebitmap::@10 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@11 mode_twoplanebitmap::@4 mode_twoplanebitmap::@5 mode_twoplanebitmap::@13 mode_twoplanebitmap::@7 mode_twoplanebitmap::@15 mode_twoplanebitmap::@8 mode_twoplanebitmap::@9 mode_twoplanebitmap::@17 mode_twoplanebitmap::@18 mode_twoplanebitmap::@return mode_twoplanebitmap::@6 mode_sixsfred2 mode_sixsfred2::@1 mode_sixsfred2::@8 mode_sixsfred2::@2 mode_sixsfred2::@3 mode_sixsfred2::@9 mode_sixsfred2::@4 mode_sixsfred2::@5 mode_sixsfred2::@11 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@13 mode_sixsfred2::@14 mode_sixsfred2::@return mode_hicolmcchar mode_hicolmcchar::@1 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@3 mode_hicolmcchar::@5 mode_hicolmcchar::@6 mode_hicolmcchar::@return mode_hicolecmchar mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 mode_hicolecmchar::@5 mode_hicolecmchar::@6 mode_hicolecmchar::@return mode_hicolstdchar mode_hicolstdchar::@1 mode_hicolstdchar::@4 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@5 mode_hicolstdchar::@6 mode_hicolstdchar::@return mode_stdbitmap mode_stdbitmap::@1 mode_stdbitmap::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@4 mode_stdbitmap::@11 mode_stdbitmap::@8 mode_stdbitmap::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_plot bitmap_plot::@return bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return mode_mcchar mode_mcchar::@1 mode_mcchar::@4 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@5 mode_mcchar::@6 mode_mcchar::@return mode_ecmchar mode_ecmchar::@1 mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@3 mode_ecmchar::@5 mode_ecmchar::@6 mode_ecmchar::@return mode_stdchar mode_stdchar::@1 mode_stdchar::@4 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return
Added new block during phi lifting menu::@74(between menu::@1 and menu::@1)
Added new block during phi lifting menu::@75(between menu::@2 and menu::@2)
Added new block during phi lifting menu::@76(between menu::@3 and menu::@return)
@@ -16752,9 +17222,9 @@ Added new block during phi lifting print_str_lines::@13(between print_str_lines:
Added new block during phi lifting print_str_lines::@14(between print_str_lines::@4 and print_str_lines::@5)
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
-Block Sequence Planned @begin @42 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@2 menu::@19 menu::@47 menu::@48 menu::@3 menu::@76 menu::@return menu::@4 menu::@50 menu::@22 menu::@6 menu::@51 menu::@24 menu::@7 menu::@53 menu::@26 menu::@8 menu::@55 menu::@28 menu::@9 menu::@57 menu::@30 menu::@10 menu::@59 menu::@32 menu::@11 menu::@61 menu::@34 menu::@12 menu::@63 menu::@36 menu::@13 menu::@65 menu::@38 menu::@14 menu::@67 menu::@40 menu::@15 menu::@69 menu::@42 menu::@16 menu::@71 menu::@44 menu::@75 menu::@74 mode_8bppchunkybmm mode_8bppchunkybmm::@1 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@return mode_8bppchunkybmm::@14 mode_8bppchunkybmm::@15 mode_8bppchunkybmm::@16 mode_8bppchunkybmm::@13 mode_ctrl mode_ctrl::@1 mode_ctrl::@return mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@32 mode_ctrl::@7 mode_ctrl::@33 mode_ctrl::@23 mode_ctrl::@8 mode_ctrl::@34 mode_ctrl::@24 mode_ctrl::@9 mode_ctrl::@35 mode_ctrl::@25 mode_ctrl::@10 mode_ctrl::@36 mode_ctrl::@26 mode_ctrl::@11 mode_ctrl::@37 mode_ctrl::@27 mode_ctrl::@12 mode_ctrl::@38 mode_ctrl::@28 mode_ctrl::@13 mode_ctrl::@39 mode_ctrl::@29 mode_ctrl::@14 mode_ctrl::@30 mode_ctrl::@46 mode_ctrl::@45 mode_ctrl::@44 mode_ctrl::@43 mode_ctrl::@42 mode_ctrl::@41 mode_ctrl::@40 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return mode_8bpppixelcell mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@9 mode_8bpppixelcell::@10 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@6 mode_8bpppixelcell::@11 mode_8bpppixelcell::@7 mode_8bpppixelcell::@12 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@return mode_8bpppixelcell::@19 mode_8bpppixelcell::@20 mode_8bpppixelcell::@21 mode_8bpppixelcell::@17 mode_8bpppixelcell::@18 mode_8bpppixelcell::@16 mode_sixsfred mode_sixsfred::@1 mode_sixsfred::@8 mode_sixsfred::@2 mode_sixsfred::@3 mode_sixsfred::@9 mode_sixsfred::@4 mode_sixsfred::@5 mode_sixsfred::@11 mode_sixsfred::@6 mode_sixsfred::@7 mode_sixsfred::@13 mode_sixsfred::@14 mode_sixsfred::@return mode_sixsfred::@21 mode_sixsfred::@22 mode_sixsfred::@19 mode_sixsfred::@20 mode_sixsfred::@17 mode_sixsfred::@18 mode_sixsfred::@16 mode_twoplanebitmap mode_twoplanebitmap::@1 mode_twoplanebitmap::@10 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@11 mode_twoplanebitmap::@4 mode_twoplanebitmap::@5 mode_twoplanebitmap::@13 mode_twoplanebitmap::@7 mode_twoplanebitmap::@15 mode_twoplanebitmap::@8 mode_twoplanebitmap::@9 mode_twoplanebitmap::@17 mode_twoplanebitmap::@18 mode_twoplanebitmap::@return mode_twoplanebitmap::@25 mode_twoplanebitmap::@26 mode_twoplanebitmap::@23 mode_twoplanebitmap::@24 mode_twoplanebitmap::@6 mode_twoplanebitmap::@21 mode_twoplanebitmap::@22 mode_twoplanebitmap::@20 mode_sixsfred2 mode_sixsfred2::@1 mode_sixsfred2::@8 mode_sixsfred2::@2 mode_sixsfred2::@3 mode_sixsfred2::@9 mode_sixsfred2::@4 mode_sixsfred2::@5 mode_sixsfred2::@11 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@13 mode_sixsfred2::@14 mode_sixsfred2::@return mode_sixsfred2::@21 mode_sixsfred2::@22 mode_sixsfred2::@19 mode_sixsfred2::@20 mode_sixsfred2::@17 mode_sixsfred2::@18 mode_sixsfred2::@16 mode_hicolmcchar mode_hicolmcchar::@1 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@3 mode_hicolmcchar::@5 mode_hicolmcchar::@6 mode_hicolmcchar::@return mode_hicolmcchar::@9 mode_hicolmcchar::@10 mode_hicolmcchar::@8 mode_hicolecmchar mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 mode_hicolecmchar::@5 mode_hicolecmchar::@6 mode_hicolecmchar::@return mode_hicolecmchar::@9 mode_hicolecmchar::@10 mode_hicolecmchar::@8 mode_hicolstdchar mode_hicolstdchar::@1 mode_hicolstdchar::@4 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@5 mode_hicolstdchar::@6 mode_hicolstdchar::@return mode_hicolstdchar::@9 mode_hicolstdchar::@10 mode_hicolstdchar::@8 mode_stdbitmap mode_stdbitmap::@1 mode_stdbitmap::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@4 mode_stdbitmap::@11 mode_stdbitmap::@8 mode_stdbitmap::@return mode_stdbitmap::@16 mode_stdbitmap::@14 mode_stdbitmap::@15 mode_stdbitmap::@13 bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_ydxi::@6 bitmap_line_ydxi::@7 bitmap_plot bitmap_plot::@return bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_line_xdyi::@6 bitmap_line_xdyi::@7 bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_line_ydxd::@6 bitmap_line_ydxd::@7 bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_xdyd::@6 bitmap_line_xdyd::@7 bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_clear::@5 bitmap_clear::@6 bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@11 bitmap_init::@12 bitmap_init::@9 bitmap_init::@10 mode_mcchar mode_mcchar::@1 mode_mcchar::@4 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@5 mode_mcchar::@6 mode_mcchar::@return mode_mcchar::@9 mode_mcchar::@10 mode_mcchar::@8 mode_ecmchar mode_ecmchar::@1 mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@3 mode_ecmchar::@5 mode_ecmchar::@6 mode_ecmchar::@return mode_ecmchar::@9 mode_ecmchar::@10 mode_ecmchar::@8 mode_stdchar mode_stdchar::@1 mode_stdchar::@4 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@return mode_stdchar::@9 mode_stdchar::@10 mode_stdchar::@8 print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@12 print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_str_lines::@13 print_str_lines::@14 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_cls print_cls::@1 print_cls::@return print_cls::@3 print_set_screen print_set_screen::@return
+Block Sequence Planned @begin @45 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@2 menu::@19 menu::@47 menu::@48 menu::@3 menu::@76 menu::@return menu::@4 menu::@50 menu::@22 menu::@6 menu::@51 menu::@24 menu::@7 menu::@53 menu::@26 menu::@8 menu::@55 menu::@28 menu::@9 menu::@57 menu::@30 menu::@10 menu::@59 menu::@32 menu::@11 menu::@61 menu::@34 menu::@12 menu::@63 menu::@36 menu::@13 menu::@65 menu::@38 menu::@14 menu::@67 menu::@40 menu::@15 menu::@69 menu::@42 menu::@16 menu::@71 menu::@44 menu::@75 menu::@74 mode_8bppchunkybmm mode_8bppchunkybmm::@1 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@return mode_8bppchunkybmm::@14 mode_8bppchunkybmm::@15 mode_8bppchunkybmm::@16 mode_8bppchunkybmm::@13 mode_ctrl mode_ctrl::@1 mode_ctrl::@return mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@32 mode_ctrl::@7 mode_ctrl::@33 mode_ctrl::@23 mode_ctrl::@8 mode_ctrl::@34 mode_ctrl::@24 mode_ctrl::@9 mode_ctrl::@35 mode_ctrl::@25 mode_ctrl::@10 mode_ctrl::@36 mode_ctrl::@26 mode_ctrl::@11 mode_ctrl::@37 mode_ctrl::@27 mode_ctrl::@12 mode_ctrl::@38 mode_ctrl::@28 mode_ctrl::@13 mode_ctrl::@39 mode_ctrl::@29 mode_ctrl::@14 mode_ctrl::@30 mode_ctrl::@46 mode_ctrl::@45 mode_ctrl::@44 mode_ctrl::@43 mode_ctrl::@42 mode_ctrl::@41 mode_ctrl::@40 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return mode_8bpppixelcell mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@9 mode_8bpppixelcell::@10 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@6 mode_8bpppixelcell::@11 mode_8bpppixelcell::@7 mode_8bpppixelcell::@12 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@return mode_8bpppixelcell::@19 mode_8bpppixelcell::@20 mode_8bpppixelcell::@21 mode_8bpppixelcell::@17 mode_8bpppixelcell::@18 mode_8bpppixelcell::@16 mode_sixsfred mode_sixsfred::@1 mode_sixsfred::@8 mode_sixsfred::@2 mode_sixsfred::@3 mode_sixsfred::@9 mode_sixsfred::@4 mode_sixsfred::@5 mode_sixsfred::@11 mode_sixsfred::@6 mode_sixsfred::@7 mode_sixsfred::@13 mode_sixsfred::@14 mode_sixsfred::@return mode_sixsfred::@21 mode_sixsfred::@22 mode_sixsfred::@19 mode_sixsfred::@20 mode_sixsfred::@17 mode_sixsfred::@18 mode_sixsfred::@16 mode_twoplanebitmap mode_twoplanebitmap::@1 mode_twoplanebitmap::@10 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@11 mode_twoplanebitmap::@4 mode_twoplanebitmap::@5 mode_twoplanebitmap::@13 mode_twoplanebitmap::@7 mode_twoplanebitmap::@15 mode_twoplanebitmap::@8 mode_twoplanebitmap::@9 mode_twoplanebitmap::@17 mode_twoplanebitmap::@18 mode_twoplanebitmap::@return mode_twoplanebitmap::@25 mode_twoplanebitmap::@26 mode_twoplanebitmap::@23 mode_twoplanebitmap::@24 mode_twoplanebitmap::@6 mode_twoplanebitmap::@21 mode_twoplanebitmap::@22 mode_twoplanebitmap::@20 mode_sixsfred2 mode_sixsfred2::@1 mode_sixsfred2::@8 mode_sixsfred2::@2 mode_sixsfred2::@3 mode_sixsfred2::@9 mode_sixsfred2::@4 mode_sixsfred2::@5 mode_sixsfred2::@11 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@13 mode_sixsfred2::@14 mode_sixsfred2::@return mode_sixsfred2::@21 mode_sixsfred2::@22 mode_sixsfred2::@19 mode_sixsfred2::@20 mode_sixsfred2::@17 mode_sixsfred2::@18 mode_sixsfred2::@16 mode_hicolmcchar mode_hicolmcchar::@1 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@3 mode_hicolmcchar::@5 mode_hicolmcchar::@6 mode_hicolmcchar::@return mode_hicolmcchar::@9 mode_hicolmcchar::@10 mode_hicolmcchar::@8 mode_hicolecmchar mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 mode_hicolecmchar::@5 mode_hicolecmchar::@6 mode_hicolecmchar::@return mode_hicolecmchar::@9 mode_hicolecmchar::@10 mode_hicolecmchar::@8 mode_hicolstdchar mode_hicolstdchar::@1 mode_hicolstdchar::@4 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@5 mode_hicolstdchar::@6 mode_hicolstdchar::@return mode_hicolstdchar::@9 mode_hicolstdchar::@10 mode_hicolstdchar::@8 mode_stdbitmap mode_stdbitmap::@1 mode_stdbitmap::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@4 mode_stdbitmap::@11 mode_stdbitmap::@8 mode_stdbitmap::@return mode_stdbitmap::@16 mode_stdbitmap::@14 mode_stdbitmap::@15 mode_stdbitmap::@13 bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_ydxi::@6 bitmap_line_ydxi::@7 bitmap_plot bitmap_plot::@return bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_line_xdyi::@6 bitmap_line_xdyi::@7 bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_line_ydxd::@6 bitmap_line_ydxd::@7 bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_xdyd::@6 bitmap_line_xdyd::@7 bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_clear::@5 bitmap_clear::@6 bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@11 bitmap_init::@12 bitmap_init::@9 bitmap_init::@10 mode_mcchar mode_mcchar::@1 mode_mcchar::@4 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@5 mode_mcchar::@6 mode_mcchar::@return mode_mcchar::@9 mode_mcchar::@10 mode_mcchar::@8 mode_ecmchar mode_ecmchar::@1 mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@3 mode_ecmchar::@5 mode_ecmchar::@6 mode_ecmchar::@return mode_ecmchar::@9 mode_ecmchar::@10 mode_ecmchar::@8 mode_stdchar mode_stdchar::@1 mode_stdchar::@4 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@return mode_stdchar::@9 mode_stdchar::@10 mode_stdchar::@8 print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@12 print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_str_lines::@13 print_str_lines::@14 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_cls print_cls::@1 print_cls::@return print_cls::@3 print_set_screen print_set_screen::@return
Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @42
+Adding NOP phi() at start of @45
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of menu::@47
@@ -17270,9 +17740,9 @@ Culled Empty Block (label) print_str_lines::@13
Culled Empty Block (label) print_str_lines::@14
Culled Empty Block (label) print_ln::@3
Culled Empty Block (label) print_cls::@3
-Block Sequence Planned @begin @42 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@2 menu::@19 menu::@47 menu::@48 menu::@3 menu::@return menu::@4 menu::@50 menu::@22 menu::@6 menu::@51 menu::@24 menu::@7 menu::@53 menu::@26 menu::@8 menu::@55 menu::@28 menu::@9 menu::@57 menu::@30 menu::@10 menu::@59 menu::@32 menu::@11 menu::@61 menu::@34 menu::@12 menu::@63 menu::@36 menu::@13 menu::@65 menu::@38 menu::@14 menu::@67 menu::@40 menu::@15 menu::@69 menu::@42 menu::@16 menu::@71 menu::@44 mode_8bppchunkybmm mode_8bppchunkybmm::@1 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@return mode_ctrl mode_ctrl::@1 mode_ctrl::@return mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@32 mode_ctrl::@7 mode_ctrl::@33 mode_ctrl::@23 mode_ctrl::@8 mode_ctrl::@34 mode_ctrl::@24 mode_ctrl::@9 mode_ctrl::@35 mode_ctrl::@25 mode_ctrl::@10 mode_ctrl::@36 mode_ctrl::@26 mode_ctrl::@11 mode_ctrl::@37 mode_ctrl::@27 mode_ctrl::@12 mode_ctrl::@38 mode_ctrl::@28 mode_ctrl::@13 mode_ctrl::@39 mode_ctrl::@14 mode_ctrl::@30 mode_ctrl::@46 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return mode_8bpppixelcell mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@9 mode_8bpppixelcell::@10 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@6 mode_8bpppixelcell::@11 mode_8bpppixelcell::@7 mode_8bpppixelcell::@12 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@return mode_sixsfred mode_sixsfred::@1 mode_sixsfred::@8 mode_sixsfred::@2 mode_sixsfred::@3 mode_sixsfred::@9 mode_sixsfred::@4 mode_sixsfred::@5 mode_sixsfred::@11 mode_sixsfred::@6 mode_sixsfred::@7 mode_sixsfred::@13 mode_sixsfred::@14 mode_sixsfred::@return mode_twoplanebitmap mode_twoplanebitmap::@1 mode_twoplanebitmap::@10 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@11 mode_twoplanebitmap::@4 mode_twoplanebitmap::@5 mode_twoplanebitmap::@13 mode_twoplanebitmap::@7 mode_twoplanebitmap::@15 mode_twoplanebitmap::@8 mode_twoplanebitmap::@9 mode_twoplanebitmap::@17 mode_twoplanebitmap::@18 mode_twoplanebitmap::@return mode_twoplanebitmap::@6 mode_sixsfred2 mode_sixsfred2::@1 mode_sixsfred2::@8 mode_sixsfred2::@2 mode_sixsfred2::@3 mode_sixsfred2::@9 mode_sixsfred2::@4 mode_sixsfred2::@5 mode_sixsfred2::@11 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@13 mode_sixsfred2::@14 mode_sixsfred2::@return mode_hicolmcchar mode_hicolmcchar::@1 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@3 mode_hicolmcchar::@5 mode_hicolmcchar::@6 mode_hicolmcchar::@return mode_hicolecmchar mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 mode_hicolecmchar::@5 mode_hicolecmchar::@6 mode_hicolecmchar::@return mode_hicolstdchar mode_hicolstdchar::@1 mode_hicolstdchar::@4 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@5 mode_hicolstdchar::@6 mode_hicolstdchar::@return mode_stdbitmap mode_stdbitmap::@1 mode_stdbitmap::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@4 mode_stdbitmap::@11 mode_stdbitmap::@8 mode_stdbitmap::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_plot bitmap_plot::@return bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@10 mode_mcchar mode_mcchar::@1 mode_mcchar::@4 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@5 mode_mcchar::@6 mode_mcchar::@return mode_ecmchar mode_ecmchar::@1 mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@3 mode_ecmchar::@5 mode_ecmchar::@6 mode_ecmchar::@return mode_stdchar mode_stdchar::@1 mode_stdchar::@4 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return
+Block Sequence Planned @begin @45 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@2 menu::@19 menu::@47 menu::@48 menu::@3 menu::@return menu::@4 menu::@50 menu::@22 menu::@6 menu::@51 menu::@24 menu::@7 menu::@53 menu::@26 menu::@8 menu::@55 menu::@28 menu::@9 menu::@57 menu::@30 menu::@10 menu::@59 menu::@32 menu::@11 menu::@61 menu::@34 menu::@12 menu::@63 menu::@36 menu::@13 menu::@65 menu::@38 menu::@14 menu::@67 menu::@40 menu::@15 menu::@69 menu::@42 menu::@16 menu::@71 menu::@44 mode_8bppchunkybmm mode_8bppchunkybmm::@1 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@return mode_ctrl mode_ctrl::@1 mode_ctrl::@return mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@32 mode_ctrl::@7 mode_ctrl::@33 mode_ctrl::@23 mode_ctrl::@8 mode_ctrl::@34 mode_ctrl::@24 mode_ctrl::@9 mode_ctrl::@35 mode_ctrl::@25 mode_ctrl::@10 mode_ctrl::@36 mode_ctrl::@26 mode_ctrl::@11 mode_ctrl::@37 mode_ctrl::@27 mode_ctrl::@12 mode_ctrl::@38 mode_ctrl::@28 mode_ctrl::@13 mode_ctrl::@39 mode_ctrl::@14 mode_ctrl::@30 mode_ctrl::@46 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return mode_8bpppixelcell mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@9 mode_8bpppixelcell::@10 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@6 mode_8bpppixelcell::@11 mode_8bpppixelcell::@7 mode_8bpppixelcell::@12 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@return mode_sixsfred mode_sixsfred::@1 mode_sixsfred::@8 mode_sixsfred::@2 mode_sixsfred::@3 mode_sixsfred::@9 mode_sixsfred::@4 mode_sixsfred::@5 mode_sixsfred::@11 mode_sixsfred::@6 mode_sixsfred::@7 mode_sixsfred::@13 mode_sixsfred::@14 mode_sixsfred::@return mode_twoplanebitmap mode_twoplanebitmap::@1 mode_twoplanebitmap::@10 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@11 mode_twoplanebitmap::@4 mode_twoplanebitmap::@5 mode_twoplanebitmap::@13 mode_twoplanebitmap::@7 mode_twoplanebitmap::@15 mode_twoplanebitmap::@8 mode_twoplanebitmap::@9 mode_twoplanebitmap::@17 mode_twoplanebitmap::@18 mode_twoplanebitmap::@return mode_twoplanebitmap::@6 mode_sixsfred2 mode_sixsfred2::@1 mode_sixsfred2::@8 mode_sixsfred2::@2 mode_sixsfred2::@3 mode_sixsfred2::@9 mode_sixsfred2::@4 mode_sixsfred2::@5 mode_sixsfred2::@11 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@13 mode_sixsfred2::@14 mode_sixsfred2::@return mode_hicolmcchar mode_hicolmcchar::@1 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@3 mode_hicolmcchar::@5 mode_hicolmcchar::@6 mode_hicolmcchar::@return mode_hicolecmchar mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 mode_hicolecmchar::@5 mode_hicolecmchar::@6 mode_hicolecmchar::@return mode_hicolstdchar mode_hicolstdchar::@1 mode_hicolstdchar::@4 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@5 mode_hicolstdchar::@6 mode_hicolstdchar::@return mode_stdbitmap mode_stdbitmap::@1 mode_stdbitmap::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@4 mode_stdbitmap::@11 mode_stdbitmap::@8 mode_stdbitmap::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_plot bitmap_plot::@return bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return bitmap_init::@10 mode_mcchar mode_mcchar::@1 mode_mcchar::@4 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@5 mode_mcchar::@6 mode_mcchar::@return mode_ecmchar mode_ecmchar::@1 mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@3 mode_ecmchar::@5 mode_ecmchar::@6 mode_ecmchar::@return mode_stdchar mode_stdchar::@1 mode_stdchar::@4 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return
Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @42
+Adding NOP phi() at start of @45
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of menu::@47
@@ -17390,14 +17860,14 @@ Propagating live ranges...
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi() [ ] ( )
- to:@42
-@42: scope:[] from @begin
+ to:@45
+@45: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
-@end: scope:[] from @42
+@end: scope:[] from @45
[3] phi() [ ] ( )
-main: scope:[main] from @42
+main: scope:[main] from @45
asm { sei }
[5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] )
[6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] )
@@ -17803,7 +18273,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from menu::@10 menu::@11 men
to:keyboard_key_pressed::@2
keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_pressed
[223] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
- [224] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] )
+ [224] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] )
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
[225] return [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] )
@@ -18963,294 +19433,294 @@ print_set_screen::@return: scope:[print_set_screen] from print_set_screen
DOMINATORS
@begin dominated by @begin
-@42 dominated by @begin @42
-@end dominated by @end @begin @42
-main dominated by @begin @42 main
-main::@1 dominated by @begin @42 main::@1 main
-main::@return dominated by @begin @42 main::@1 main::@return main
-main::@2 dominated by @begin @42 main::@1 main::@2 main
-menu dominated by @begin @42 main::@1 main::@2 menu main
-menu::@1 dominated by @begin @42 menu::@1 main::@1 main::@2 menu main
-menu::@2 dominated by @begin @42 menu::@1 menu::@2 main::@1 main::@2 menu main
-menu::@19 dominated by @begin @42 menu::@1 menu::@2 main::@1 main::@2 menu main menu::@19
-menu::@47 dominated by @begin @42 menu::@1 menu::@2 main::@1 main::@2 menu::@47 menu main menu::@19
-menu::@48 dominated by @begin @42 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu main menu::@19
-menu::@3 dominated by @begin @42 menu::@3 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu main menu::@19
-menu::@return dominated by @begin menu::@return @42 menu::@3 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu main menu::@19
-menu::@4 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu main menu::@19
-menu::@50 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@19
-menu::@22 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
-menu::@6 dominated by @begin @42 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@19
-menu::@51 dominated by @begin @42 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19
-menu::@24 dominated by @begin @42 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
-menu::@7 dominated by @begin @42 menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19
-menu::@53 dominated by @begin @42 menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19
-menu::@26 dominated by @begin @42 menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
-menu::@8 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19
-menu::@55 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@19
-menu::@28 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19
-menu::@9 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@19
-menu::@57 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 main menu::@19
-menu::@30 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19
-menu::@10 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 main menu::@19 menu::@10
-menu::@59 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@10
-menu::@32 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10
-menu::@11 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@11 menu::@10
-menu::@61 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@11 menu::@10
-menu::@34 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@34 menu::@19 menu::@11 menu::@10
-menu::@12 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@12 menu::@11 menu::@10
-menu::@63 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@12 menu::@11 menu::@10
-menu::@36 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
-menu::@13 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-menu::@65 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-menu::@38 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-menu::@14 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-menu::@67 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-menu::@40 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@40 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-menu::@15 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-menu::@69 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-menu::@42 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-menu::@16 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-menu::@71 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-menu::@44 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-mode_8bppchunkybmm dominated by mode_8bppchunkybmm @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-mode_8bppchunkybmm::@1 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@1 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-mode_8bppchunkybmm::@5 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@1 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-mode_8bppchunkybmm::@2 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@1 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-mode_8bppchunkybmm::@3 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-mode_8bppchunkybmm::@6 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-mode_8bppchunkybmm::@10 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-mode_8bppchunkybmm::@4 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-mode_8bppchunkybmm::@7 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-mode_8bppchunkybmm::@8 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-mode_8bppchunkybmm::@11 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-mode_8bppchunkybmm::@return dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 mode_8bppchunkybmm::@return menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-mode_ctrl dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@19
-mode_ctrl::@1 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main mode_ctrl::@1 menu::@19
-mode_ctrl::@return dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@return main mode_ctrl::@1 menu::@19
-mode_ctrl::@4 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main mode_ctrl::@1 mode_ctrl::@4 menu::@19
-mode_ctrl::@6 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 menu::@19
-mode_ctrl::@32 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 menu::@19
-mode_ctrl::@7 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@7 menu::@19
-mode_ctrl::@33 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@7 menu::@19
-mode_ctrl::@23 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 main mode_ctrl::@23 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@7 menu::@19
-mode_ctrl::@8 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 menu::@19
-mode_ctrl::@34 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 menu::@19
-mode_ctrl::@24 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 main mode_ctrl::@24 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 menu::@19
-mode_ctrl::@9 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@35 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@25 dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@25 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@10 dominated by mode_ctrl::@10 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@36 dominated by mode_ctrl::@10 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@26 dominated by mode_ctrl::@10 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@26 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@11 dominated by mode_ctrl::@10 mode_ctrl::@11 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@37 dominated by mode_ctrl::@10 mode_ctrl::@11 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@27 dominated by mode_ctrl::@10 mode_ctrl::@11 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@27 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@12 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@38 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@28 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@28 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@13 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@39 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@14 dominated by mode_ctrl::@14 mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@30 dominated by mode_ctrl::@14 mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@30 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
-mode_ctrl::@46 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 mode_ctrl::@46 menu::@19
-keyboard_key_pressed dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main menu::@19
-keyboard_key_pressed::@2 dominated by keyboard_key_pressed::@2 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main menu::@19
-keyboard_key_pressed::@return dominated by keyboard_key_pressed::@return keyboard_key_pressed::@2 @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main menu::@19
-keyboard_matrix_read dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main keyboard_matrix_read menu::@19
-keyboard_matrix_read::@return dominated by @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main keyboard_matrix_read keyboard_matrix_read::@return menu::@19
-dtvSetCpuBankSegment1 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@1 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 dtvSetCpuBankSegment1 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-dtvSetCpuBankSegment1::@return dominated by mode_8bppchunkybmm dtvSetCpuBankSegment1::@return mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@1 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 dtvSetCpuBankSegment1 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
-mode_8bpppixelcell dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-mode_8bpppixelcell::@1 dominated by mode_8bpppixelcell::@1 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-mode_8bpppixelcell::@2 dominated by mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-mode_8bpppixelcell::@3 dominated by mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-mode_8bpppixelcell::@9 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-mode_8bpppixelcell::@10 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-mode_8bpppixelcell::@4 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-mode_8bpppixelcell::@5 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-mode_8bpppixelcell::@6 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-mode_8bpppixelcell::@11 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@11 mode_8bpppixelcell::@10 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-mode_8bpppixelcell::@7 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-mode_8bpppixelcell::@12 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-mode_8bpppixelcell::@13 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@13 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-mode_8bpppixelcell::@14 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-mode_8bpppixelcell::@return dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 mode_8bpppixelcell::@return menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
-mode_sixsfred dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-mode_sixsfred::@1 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 menu menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-mode_sixsfred::@8 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 menu mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-mode_sixsfred::@2 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@2 menu mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-mode_sixsfred::@3 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-mode_sixsfred::@9 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-mode_sixsfred::@4 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@4 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-mode_sixsfred::@5 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-mode_sixsfred::@11 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-mode_sixsfred::@6 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-mode_sixsfred::@7 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-mode_sixsfred::@13 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 mode_sixsfred::@13 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-mode_sixsfred::@14 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 mode_sixsfred::@14 mode_sixsfred::@13 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-mode_sixsfred::@return dominated by mode_sixsfred::@return @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 mode_sixsfred::@14 mode_sixsfred::@13 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
-mode_twoplanebitmap dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@1 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@10 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@2 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@3 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@11 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@4 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@5 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@13 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@13 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@7 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@15 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@8 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@9 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@17 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@17 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@18 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@18 mode_twoplanebitmap::@17 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@return dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 mode_twoplanebitmap::@return main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@18 mode_twoplanebitmap::@17 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_twoplanebitmap::@6 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@6 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
-mode_sixsfred2 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
-mode_sixsfred2::@1 dominated by @begin @42 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
-mode_sixsfred2::@8 dominated by @begin @42 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
-mode_sixsfred2::@2 dominated by @begin @42 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
-mode_sixsfred2::@3 dominated by @begin @42 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
-mode_sixsfred2::@9 dominated by @begin @42 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
-mode_sixsfred2::@4 dominated by @begin @42 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
-mode_sixsfred2::@5 dominated by @begin @42 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
-mode_sixsfred2::@11 dominated by @begin @42 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
-mode_sixsfred2::@6 dominated by @begin @42 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
-mode_sixsfred2::@7 dominated by @begin @42 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
-mode_sixsfred2::@13 dominated by @begin @42 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 mode_sixsfred2::@13 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
-mode_sixsfred2::@14 dominated by @begin @42 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 mode_sixsfred2::@13 mode_sixsfred2::@14 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
-mode_sixsfred2::@return dominated by @begin @42 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 mode_sixsfred2::@13 mode_sixsfred2::@14 menu::@36 mode_sixsfred2::@return menu::@19 menu::@12 menu::@11 menu::@10
-mode_hicolmcchar dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 menu::@19 menu::@11 menu::@10
-mode_hicolmcchar::@1 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10
-mode_hicolmcchar::@4 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10
-mode_hicolmcchar::@2 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10
-mode_hicolmcchar::@3 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10
-mode_hicolmcchar::@5 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 mode_hicolmcchar::@5 menu::@19 menu::@11 menu::@10
-mode_hicolmcchar::@6 dominated by @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 mode_hicolmcchar::@6 mode_hicolmcchar::@5 menu::@19 menu::@11 menu::@10
-mode_hicolmcchar::@return dominated by mode_hicolmcchar::@return @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 mode_hicolmcchar::@6 mode_hicolmcchar::@5 menu::@19 menu::@11 menu::@10
-mode_hicolecmchar dominated by @begin mode_hicolecmchar @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10
-mode_hicolecmchar::@1 dominated by @begin mode_hicolecmchar @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10
-mode_hicolecmchar::@4 dominated by @begin mode_hicolecmchar @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10
-mode_hicolecmchar::@2 dominated by @begin mode_hicolecmchar @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10
-mode_hicolecmchar::@3 dominated by @begin mode_hicolecmchar @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10
-mode_hicolecmchar::@5 dominated by @begin mode_hicolecmchar @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@5 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10
-mode_hicolecmchar::@6 dominated by @begin mode_hicolecmchar @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@5 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 mode_hicolecmchar::@6 menu::@59 main menu::@32 menu::@19 menu::@10
-mode_hicolecmchar::@return dominated by @begin mode_hicolecmchar @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@5 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 mode_hicolecmchar::@6 menu::@59 main mode_hicolecmchar::@return menu::@32 menu::@19 menu::@10
-mode_hicolstdchar dominated by @begin @42 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19
-mode_hicolstdchar::@1 dominated by @begin @42 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@1
-mode_hicolstdchar::@4 dominated by @begin @42 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@4 mode_hicolstdchar::@1
-mode_hicolstdchar::@2 dominated by @begin @42 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@4 mode_hicolstdchar::@1
-mode_hicolstdchar::@3 dominated by @begin @42 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@1
-mode_hicolstdchar::@5 dominated by @begin @42 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@5 mode_hicolstdchar::@1
-mode_hicolstdchar::@6 dominated by @begin @42 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main mode_hicolstdchar::@6 menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@5 mode_hicolstdchar::@1
-mode_hicolstdchar::@return dominated by @begin @42 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 mode_hicolstdchar::@return menu menu::@57 menu::@55 menu::@30 main mode_hicolstdchar::@6 menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@5 mode_hicolstdchar::@1
-mode_stdbitmap dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19
-mode_stdbitmap::@1 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19 mode_stdbitmap::@1
-mode_stdbitmap::@5 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@1
-mode_stdbitmap::@2 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@1
-mode_stdbitmap::@3 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@1
-mode_stdbitmap::@6 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@1
-mode_stdbitmap::@7 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
-mode_stdbitmap::@9 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-mode_stdbitmap::@4 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-mode_stdbitmap::@11 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@11 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-mode_stdbitmap::@8 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@11 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@8 mode_stdbitmap::@9 mode_stdbitmap::@1
-mode_stdbitmap::@return dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@11 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@return mode_stdbitmap::@7 mode_stdbitmap::@8 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line::@15 dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line::@16 dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@16 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line::@17 dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@17 bitmap_line::@16 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line::@return dominated by bitmap_line::@return bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line::@3 dominated by bitmap_line mode_stdbitmap @begin @42 bitmap_line::@3 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@16 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line::@2 dominated by bitmap_line mode_stdbitmap @begin @42 bitmap_line::@2 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line::@20 dominated by bitmap_line mode_stdbitmap @begin @42 bitmap_line::@2 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@15 bitmap_line::@20 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line::@6 dominated by bitmap_line mode_stdbitmap @begin @42 bitmap_line::@2 bitmap_line::@6 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line::@1 dominated by bitmap_line mode_stdbitmap @begin @42 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line::@23 dominated by bitmap_line mode_stdbitmap @begin @42 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@23 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line::@24 dominated by bitmap_line mode_stdbitmap @begin @42 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@24 bitmap_line::@23 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line::@10 dominated by bitmap_line mode_stdbitmap @begin @42 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 bitmap_line::@10 main::@1 main::@2 bitmap_line::@23 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line::@9 dominated by bitmap_line mode_stdbitmap @begin @42 bitmap_line::@1 bitmap_line::@9 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line::@27 dominated by bitmap_line mode_stdbitmap @begin @42 bitmap_line::@1 bitmap_line::@9 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_line::@27 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line::@13 dominated by bitmap_line mode_stdbitmap @begin @42 bitmap_line::@1 bitmap_line::@9 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 bitmap_line::@13 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_ydxi dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_ydxi::@1 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_ydxi::@5 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_ydxi::@3 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@3 bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_ydxi::@2 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_ydxi::@return dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line_ydxi::@return menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_plot dominated by bitmap_line mode_stdbitmap @begin bitmap_plot @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_plot::@return dominated by bitmap_line mode_stdbitmap @begin bitmap_plot bitmap_plot::@return @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_xdyi dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_xdyi::@1 dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@1 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_xdyi::@5 dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_xdyi::@3 dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@1 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_xdyi::@2 dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_xdyi::@return dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 bitmap_line_xdyi::@return main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_ydxd dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_ydxd::@1 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_ydxd::@5 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_ydxd::@3 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_ydxd::@2 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_ydxd::@return dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line_ydxd::@return menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_xdyd dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_xdyd::@1 dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_xdyd::@5 dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_xdyd::@3 dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_xdyd::@2 dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_line_xdyd::@return dominated by bitmap_line mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_line_xdyd::@return menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_clear dominated by bitmap_clear mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_clear::@1 dominated by bitmap_clear mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_clear::@1 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_clear::@2 dominated by bitmap_clear mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_clear::@1 bitmap_clear::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_clear::@3 dominated by bitmap_clear mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 bitmap_clear::@3 main::@1 main::@2 bitmap_clear::@1 bitmap_clear::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_clear::@return dominated by bitmap_clear mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 bitmap_clear::@3 main::@1 main::@2 bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@return menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
-bitmap_init dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
-bitmap_init::@1 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
-bitmap_init::@2 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
-bitmap_init::@3 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
-bitmap_init::@7 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@7 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
-bitmap_init::@4 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
-bitmap_init::@return dominated by bitmap_init::@return mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
-bitmap_init::@10 dominated by mode_stdbitmap @begin @42 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 bitmap_init::@10 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
-mode_mcchar dominated by @begin @42 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
-mode_mcchar::@1 dominated by @begin @42 mode_mcchar::@1 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
-mode_mcchar::@4 dominated by @begin @42 mode_mcchar::@1 mode_mcchar::@4 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
-mode_mcchar::@2 dominated by @begin @42 mode_mcchar::@2 mode_mcchar::@1 mode_mcchar::@4 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
-mode_mcchar::@3 dominated by @begin @42 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@1 mode_mcchar::@4 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
-mode_mcchar::@5 dominated by @begin @42 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@1 mode_mcchar::@4 mode_mcchar::@5 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
-mode_mcchar::@6 dominated by @begin @42 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@1 mode_mcchar::@6 mode_mcchar::@4 mode_mcchar::@5 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
-mode_mcchar::@return dominated by mode_mcchar::@return @begin @42 mode_mcchar::@2 mode_mcchar::@3 mode_mcchar::@1 mode_mcchar::@6 mode_mcchar::@4 mode_mcchar::@5 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
-mode_ecmchar dominated by @begin @42 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
-mode_ecmchar::@1 dominated by @begin mode_ecmchar::@1 @42 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
-mode_ecmchar::@4 dominated by @begin mode_ecmchar::@4 mode_ecmchar::@1 @42 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
-mode_ecmchar::@2 dominated by @begin mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@1 @42 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
-mode_ecmchar::@3 dominated by @begin mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @42 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
-mode_ecmchar::@5 dominated by @begin mode_ecmchar::@5 mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @42 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
-mode_ecmchar::@6 dominated by @begin mode_ecmchar::@6 mode_ecmchar::@5 mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @42 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
-mode_ecmchar::@return dominated by mode_ecmchar::@return @begin mode_ecmchar::@6 mode_ecmchar::@5 mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @42 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
-mode_stdchar dominated by mode_stdchar @begin @42 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
-mode_stdchar::@1 dominated by mode_stdchar @begin @42 mode_stdchar::@1 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
-mode_stdchar::@4 dominated by mode_stdchar @begin @42 mode_stdchar::@1 mode_stdchar::@4 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
-mode_stdchar::@2 dominated by mode_stdchar @begin @42 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@4 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
-mode_stdchar::@3 dominated by mode_stdchar @begin @42 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@4 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
-mode_stdchar::@5 dominated by mode_stdchar @begin @42 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@5 mode_stdchar::@3 mode_stdchar::@4 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
-mode_stdchar::@6 dominated by mode_stdchar @begin @42 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@3 mode_stdchar::@4 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
-mode_stdchar::@return dominated by mode_stdchar @begin @42 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@3 mode_stdchar::@4 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 mode_stdchar::@return menu::@19
-print_str_lines dominated by @begin @42 menu::@1 menu::@2 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
-print_str_lines::@1 dominated by @begin @42 menu::@1 menu::@2 print_str_lines::@1 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
-print_str_lines::@return dominated by @begin print_str_lines::@return @42 menu::@1 menu::@2 print_str_lines::@1 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
-print_str_lines::@4 dominated by @begin @42 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
-print_str_lines::@8 dominated by @begin @42 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@8 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
-print_str_lines::@5 dominated by @begin @42 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
-print_str_lines::@9 dominated by @begin @42 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
-print_ln dominated by print_ln @begin @42 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
-print_ln::@1 dominated by print_ln print_ln::@1 @begin @42 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
-print_ln::@return dominated by print_ln::@return print_ln print_ln::@1 @begin @42 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
-print_cls dominated by print_cls @begin @42 menu::@1 menu::@2 main::@1 main::@2 menu::@47 menu main menu::@19
-print_cls::@1 dominated by print_cls @begin @42 menu::@1 menu::@2 print_cls::@1 main::@1 main::@2 menu::@47 menu main menu::@19
-print_cls::@return dominated by print_cls @begin @42 menu::@1 menu::@2 print_cls::@1 main::@1 main::@2 menu::@47 menu main print_cls::@return menu::@19
-print_set_screen dominated by @begin @42 menu::@1 menu::@2 main::@1 main::@2 print_set_screen menu main menu::@19
-print_set_screen::@return dominated by @begin @42 menu::@1 menu::@2 main::@1 main::@2 print_set_screen menu main menu::@19 print_set_screen::@return
+@45 dominated by @begin @45
+@end dominated by @end @begin @45
+main dominated by @begin @45 main
+main::@1 dominated by @begin @45 main::@1 main
+main::@return dominated by @begin @45 main::@1 main::@return main
+main::@2 dominated by @begin @45 main::@1 main::@2 main
+menu dominated by @begin @45 main::@1 main::@2 menu main
+menu::@1 dominated by @begin @45 menu::@1 main::@1 main::@2 menu main
+menu::@2 dominated by @begin @45 menu::@1 menu::@2 main::@1 main::@2 menu main
+menu::@19 dominated by @begin @45 menu::@1 menu::@2 main::@1 main::@2 menu main menu::@19
+menu::@47 dominated by @begin @45 menu::@1 menu::@2 main::@1 main::@2 menu::@47 menu main menu::@19
+menu::@48 dominated by @begin @45 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu main menu::@19
+menu::@3 dominated by @begin @45 menu::@3 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu main menu::@19
+menu::@return dominated by @begin menu::@return @45 menu::@3 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu main menu::@19
+menu::@4 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu main menu::@19
+menu::@50 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@19
+menu::@22 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
+menu::@6 dominated by @begin @45 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@19
+menu::@51 dominated by @begin @45 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19
+menu::@24 dominated by @begin @45 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
+menu::@7 dominated by @begin @45 menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19
+menu::@53 dominated by @begin @45 menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19
+menu::@26 dominated by @begin @45 menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
+menu::@8 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@19
+menu::@55 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@19
+menu::@28 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19
+menu::@9 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@19
+menu::@57 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 main menu::@19
+menu::@30 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19
+menu::@10 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 main menu::@19 menu::@10
+menu::@59 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@10
+menu::@32 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10
+menu::@11 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@11 menu::@10
+menu::@61 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@11 menu::@10
+menu::@34 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@34 menu::@19 menu::@11 menu::@10
+menu::@12 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@12 menu::@11 menu::@10
+menu::@63 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@12 menu::@11 menu::@10
+menu::@36 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
+menu::@13 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+menu::@65 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+menu::@38 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+menu::@14 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+menu::@67 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+menu::@40 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@40 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+menu::@15 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+menu::@69 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+menu::@42 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+menu::@16 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+menu::@71 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+menu::@44 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+mode_8bppchunkybmm dominated by mode_8bppchunkybmm @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+mode_8bppchunkybmm::@1 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+mode_8bppchunkybmm::@5 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+mode_8bppchunkybmm::@2 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+mode_8bppchunkybmm::@3 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+mode_8bppchunkybmm::@6 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+mode_8bppchunkybmm::@10 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@10 mode_8bppchunkybmm::@6 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+mode_8bppchunkybmm::@4 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+mode_8bppchunkybmm::@7 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+mode_8bppchunkybmm::@8 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+mode_8bppchunkybmm::@11 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+mode_8bppchunkybmm::@return dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@11 mode_8bppchunkybmm::@8 mode_8bppchunkybmm::@7 mode_8bppchunkybmm::@4 mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@2 mode_8bppchunkybmm::@3 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 mode_8bppchunkybmm::@return menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+mode_ctrl dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@19
+mode_ctrl::@1 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main mode_ctrl::@1 menu::@19
+mode_ctrl::@return dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@return main mode_ctrl::@1 menu::@19
+mode_ctrl::@4 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main mode_ctrl::@1 mode_ctrl::@4 menu::@19
+mode_ctrl::@6 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 menu::@19
+mode_ctrl::@32 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 menu::@19
+mode_ctrl::@7 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@7 menu::@19
+mode_ctrl::@33 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@7 menu::@19
+mode_ctrl::@23 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 main mode_ctrl::@23 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@7 menu::@19
+mode_ctrl::@8 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 menu::@19
+mode_ctrl::@34 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 menu::@19
+mode_ctrl::@24 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 main mode_ctrl::@24 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 menu::@19
+mode_ctrl::@9 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@35 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@25 dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@25 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@10 dominated by mode_ctrl::@10 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@36 dominated by mode_ctrl::@10 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@26 dominated by mode_ctrl::@10 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@26 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@11 dominated by mode_ctrl::@10 mode_ctrl::@11 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@37 dominated by mode_ctrl::@10 mode_ctrl::@11 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@27 dominated by mode_ctrl::@10 mode_ctrl::@11 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@27 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@12 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@38 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@28 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@28 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@13 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@39 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@14 dominated by mode_ctrl::@14 mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@30 dominated by mode_ctrl::@14 mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@30 mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 menu::@19
+mode_ctrl::@46 dominated by mode_ctrl::@10 mode_ctrl::@11 mode_ctrl::@12 mode_ctrl::@13 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 mode_ctrl main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu mode_ctrl::@36 mode_ctrl::@37 mode_ctrl::@38 mode_ctrl::@39 mode_ctrl::@32 mode_ctrl::@33 mode_ctrl::@34 mode_ctrl::@35 main mode_ctrl::@1 mode_ctrl::@4 mode_ctrl::@6 mode_ctrl::@8 mode_ctrl::@7 mode_ctrl::@9 mode_ctrl::@46 menu::@19
+keyboard_key_pressed dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main menu::@19
+keyboard_key_pressed::@2 dominated by keyboard_key_pressed::@2 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main menu::@19
+keyboard_key_pressed::@return dominated by keyboard_key_pressed::@return keyboard_key_pressed::@2 @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main menu::@19
+keyboard_matrix_read dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main keyboard_matrix_read menu::@19
+keyboard_matrix_read::@return dominated by @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@48 menu::@47 menu keyboard_key_pressed main keyboard_matrix_read keyboard_matrix_read::@return menu::@19
+dtvSetCpuBankSegment1 dominated by mode_8bppchunkybmm mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 dtvSetCpuBankSegment1 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+dtvSetCpuBankSegment1::@return dominated by mode_8bppchunkybmm dtvSetCpuBankSegment1::@return mode_8bppchunkybmm::@5 mode_8bppchunkybmm::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 menu::@71 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@44 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 dtvSetCpuBankSegment1 main menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@16 menu::@15 menu::@14
+mode_8bpppixelcell dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+mode_8bpppixelcell::@1 dominated by mode_8bpppixelcell::@1 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+mode_8bpppixelcell::@2 dominated by mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+mode_8bpppixelcell::@3 dominated by mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+mode_8bpppixelcell::@9 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+mode_8bpppixelcell::@10 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+mode_8bpppixelcell::@4 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+mode_8bpppixelcell::@5 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+mode_8bpppixelcell::@6 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+mode_8bpppixelcell::@11 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@11 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+mode_8bpppixelcell::@7 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+mode_8bpppixelcell::@12 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+mode_8bpppixelcell::@13 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@13 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+mode_8bpppixelcell::@14 dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+mode_8bpppixelcell::@return dominated by mode_8bpppixelcell::@9 mode_8bpppixelcell::@6 mode_8bpppixelcell::@7 mode_8bpppixelcell::@1 mode_8bpppixelcell::@4 mode_8bpppixelcell::@5 mode_8bpppixelcell::@2 mode_8bpppixelcell::@3 mode_8bpppixelcell::@13 mode_8bpppixelcell::@14 mode_8bpppixelcell::@12 mode_8bpppixelcell::@10 @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 mode_8bpppixelcell::@return menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@69 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@42 mode_8bpppixelcell menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@15 menu::@14
+mode_sixsfred dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+mode_sixsfred::@1 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 menu menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+mode_sixsfred::@8 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 menu mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+mode_sixsfred::@2 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@2 menu mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+mode_sixsfred::@3 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+mode_sixsfred::@9 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+mode_sixsfred::@4 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@4 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+mode_sixsfred::@5 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+mode_sixsfred::@11 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+mode_sixsfred::@6 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+mode_sixsfred::@7 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+mode_sixsfred::@13 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 mode_sixsfred::@13 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+mode_sixsfred::@14 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 mode_sixsfred::@14 mode_sixsfred::@13 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+mode_sixsfred::@return dominated by mode_sixsfred::@return @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@67 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred::@1 mode_sixsfred::@3 mode_sixsfred::@2 menu mode_sixsfred::@5 mode_sixsfred::@4 mode_sixsfred::@7 mode_sixsfred::@6 mode_sixsfred::@9 mode_sixsfred::@8 menu::@57 menu::@55 menu::@59 main mode_sixsfred::@11 mode_sixsfred::@14 mode_sixsfred::@13 menu::@40 mode_sixsfred menu::@19 menu::@13 menu::@12 menu::@11 menu::@10 menu::@14
+mode_twoplanebitmap dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@1 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@10 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@2 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@3 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@11 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@4 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@5 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@13 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@13 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@7 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@15 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@8 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@9 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@17 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@17 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@18 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@18 mode_twoplanebitmap::@17 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@return dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 mode_twoplanebitmap::@return main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@18 mode_twoplanebitmap::@17 mode_twoplanebitmap::@15 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@9 mode_twoplanebitmap::@5 mode_twoplanebitmap::@7 mode_twoplanebitmap::@8 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_twoplanebitmap::@6 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@65 menu::@53 menu::@51 menu::@50 mode_twoplanebitmap::@11 mode_twoplanebitmap::@10 menu::@48 menu::@47 menu::@63 menu::@61 menu menu::@57 menu::@55 menu::@59 mode_twoplanebitmap::@1 mode_twoplanebitmap::@2 mode_twoplanebitmap::@3 mode_twoplanebitmap::@4 main mode_twoplanebitmap mode_twoplanebitmap::@5 mode_twoplanebitmap::@6 menu::@38 menu::@19 menu::@13 menu::@12 menu::@11 menu::@10
+mode_sixsfred2 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
+mode_sixsfred2::@1 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
+mode_sixsfred2::@8 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
+mode_sixsfred2::@2 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
+mode_sixsfred2::@3 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
+mode_sixsfred2::@9 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 menu::@2 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
+mode_sixsfred2::@4 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
+mode_sixsfred2::@5 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
+mode_sixsfred2::@11 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
+mode_sixsfred2::@6 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
+mode_sixsfred2::@7 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
+mode_sixsfred2::@13 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 mode_sixsfred2::@13 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
+mode_sixsfred2::@14 dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 mode_sixsfred2::@13 mode_sixsfred2::@14 menu::@36 menu::@19 menu::@12 menu::@11 menu::@10
+mode_sixsfred2::@return dominated by @begin @45 menu::@7 menu::@8 menu::@6 mode_sixsfred2::@1 menu::@3 mode_sixsfred2::@2 menu::@4 mode_sixsfred2::@3 menu::@1 mode_sixsfred2::@4 menu::@2 mode_sixsfred2::@5 menu::@9 mode_sixsfred2::@6 mode_sixsfred2::@7 mode_sixsfred2::@8 mode_sixsfred2::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@63 menu::@61 mode_sixsfred2 menu menu::@57 menu::@55 menu::@59 main mode_sixsfred2::@11 mode_sixsfred2::@13 mode_sixsfred2::@14 menu::@36 mode_sixsfred2::@return menu::@19 menu::@12 menu::@11 menu::@10
+mode_hicolmcchar dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 menu::@19 menu::@11 menu::@10
+mode_hicolmcchar::@1 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10
+mode_hicolmcchar::@4 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10
+mode_hicolmcchar::@2 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@2 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10
+mode_hicolmcchar::@3 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 menu::@19 menu::@11 menu::@10
+mode_hicolmcchar::@5 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 mode_hicolmcchar::@5 menu::@19 menu::@11 menu::@10
+mode_hicolmcchar::@6 dominated by @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 mode_hicolmcchar::@6 mode_hicolmcchar::@5 menu::@19 menu::@11 menu::@10
+mode_hicolmcchar::@return dominated by mode_hicolmcchar::@return @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu::@61 menu menu::@57 menu::@55 menu::@59 main mode_hicolmcchar menu::@34 mode_hicolmcchar::@4 mode_hicolmcchar::@3 mode_hicolmcchar::@2 mode_hicolmcchar::@1 mode_hicolmcchar::@6 mode_hicolmcchar::@5 menu::@19 menu::@11 menu::@10
+mode_hicolecmchar dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10
+mode_hicolecmchar::@1 dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10
+mode_hicolecmchar::@4 dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10
+mode_hicolecmchar::@2 dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10
+mode_hicolecmchar::@3 dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10
+mode_hicolecmchar::@5 dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@5 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 menu::@59 main menu::@32 menu::@19 menu::@10
+mode_hicolecmchar::@6 dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@5 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 mode_hicolecmchar::@6 menu::@59 main menu::@32 menu::@19 menu::@10
+mode_hicolecmchar::@return dominated by @begin mode_hicolecmchar @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu mode_hicolecmchar::@1 mode_hicolecmchar::@4 mode_hicolecmchar::@5 mode_hicolecmchar::@2 mode_hicolecmchar::@3 menu::@57 menu::@55 mode_hicolecmchar::@6 menu::@59 main mode_hicolecmchar::@return menu::@32 menu::@19 menu::@10
+mode_hicolstdchar dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19
+mode_hicolstdchar::@1 dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@1
+mode_hicolstdchar::@4 dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@4 mode_hicolstdchar::@1
+mode_hicolstdchar::@2 dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@4 mode_hicolstdchar::@1
+mode_hicolstdchar::@3 dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@1
+mode_hicolstdchar::@5 dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@5 mode_hicolstdchar::@1
+mode_hicolstdchar::@6 dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@57 menu::@55 menu::@30 main mode_hicolstdchar::@6 menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@5 mode_hicolstdchar::@1
+mode_hicolstdchar::@return dominated by @begin @45 mode_hicolstdchar menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 menu::@9 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 mode_hicolstdchar::@return menu menu::@57 menu::@55 menu::@30 main mode_hicolstdchar::@6 menu::@19 mode_hicolstdchar::@2 mode_hicolstdchar::@3 mode_hicolstdchar::@4 mode_hicolstdchar::@5 mode_hicolstdchar::@1
+mode_stdbitmap dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19
+mode_stdbitmap::@1 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19 mode_stdbitmap::@1
+mode_stdbitmap::@5 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@1
+mode_stdbitmap::@2 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@1
+mode_stdbitmap::@3 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@1
+mode_stdbitmap::@6 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@1
+mode_stdbitmap::@7 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
+mode_stdbitmap::@9 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+mode_stdbitmap::@4 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+mode_stdbitmap::@11 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@11 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+mode_stdbitmap::@8 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@11 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@8 mode_stdbitmap::@9 mode_stdbitmap::@1
+mode_stdbitmap::@return dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@11 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@return mode_stdbitmap::@7 mode_stdbitmap::@8 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line::@15 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line::@16 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@16 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line::@17 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@17 bitmap_line::@16 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line::@return dominated by bitmap_line::@return bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line::@3 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@3 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@16 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line::@2 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@2 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line::@20 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@2 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@15 bitmap_line::@20 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line::@6 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@2 bitmap_line::@6 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@15 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line::@1 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line::@23 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@23 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line::@24 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line::@24 bitmap_line::@23 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line::@10 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@1 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 bitmap_line::@10 main::@1 main::@2 bitmap_line::@23 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line::@9 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@1 bitmap_line::@9 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line::@27 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@1 bitmap_line::@9 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_line::@27 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line::@13 dominated by bitmap_line mode_stdbitmap @begin @45 bitmap_line::@1 bitmap_line::@9 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 bitmap_line::@13 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_ydxi dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_ydxi::@1 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_ydxi::@5 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_ydxi::@3 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@3 bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_ydxi::@2 dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_ydxi::@return dominated by bitmap_line_ydxi bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line_ydxi::@return menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxi::@1 bitmap_line_ydxi::@2 bitmap_line_ydxi::@5 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_plot dominated by bitmap_line mode_stdbitmap @begin bitmap_plot @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_plot::@return dominated by bitmap_line mode_stdbitmap @begin bitmap_plot bitmap_plot::@return @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_xdyi dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_xdyi::@1 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@1 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_xdyi::@5 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_xdyi::@3 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@1 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_xdyi::@2 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_xdyi::@return dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 bitmap_line_xdyi menu::@2 bitmap_line_xdyi::@return main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 bitmap_line_xdyi::@5 bitmap_line_xdyi::@1 bitmap_line_xdyi::@2 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_ydxd dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_ydxd::@1 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_ydxd::@5 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_ydxd::@3 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@3 bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_ydxd::@2 dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_ydxd::@return dominated by bitmap_line_ydxd bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_line_ydxd::@return menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main bitmap_line_ydxd::@2 bitmap_line_ydxd::@5 menu::@28 bitmap_line_ydxd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_xdyd dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_xdyd::@1 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_xdyd::@5 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_xdyd::@3 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_xdyd::@2 dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_line_xdyd::@return dominated by bitmap_line mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 bitmap_line_xdyd menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_line_xdyd::@return menu::@48 menu::@47 menu menu::@55 main menu::@28 bitmap_line_xdyd::@5 bitmap_line_xdyd::@2 bitmap_line_xdyd::@1 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@4 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_clear dominated by bitmap_clear mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_clear::@1 dominated by bitmap_clear mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_clear::@1 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_clear::@2 dominated by bitmap_clear mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 bitmap_clear::@1 bitmap_clear::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_clear::@3 dominated by bitmap_clear mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 bitmap_clear::@3 main::@1 main::@2 bitmap_clear::@1 bitmap_clear::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_clear::@return dominated by bitmap_clear mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 bitmap_clear::@3 main::@1 main::@2 bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@return menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@9 mode_stdbitmap::@1
+bitmap_init dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
+bitmap_init::@1 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
+bitmap_init::@2 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
+bitmap_init::@3 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
+bitmap_init::@7 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@7 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
+bitmap_init::@4 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
+bitmap_init::@return dominated by bitmap_init::@return mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@2 bitmap_init::@3 bitmap_init::@1 bitmap_init::@4 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
+bitmap_init::@10 dominated by mode_stdbitmap @begin @45 menu::@7 menu::@8 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 bitmap_init::@1 menu::@48 menu::@47 menu bitmap_init menu::@55 main menu::@28 bitmap_init::@10 mode_stdbitmap::@2 mode_stdbitmap::@3 menu::@19 mode_stdbitmap::@5 mode_stdbitmap::@6 mode_stdbitmap::@7 mode_stdbitmap::@1
+mode_mcchar dominated by @begin @45 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
+mode_mcchar::@1 dominated by @begin @45 mode_mcchar::@1 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
+mode_mcchar::@4 dominated by @begin @45 mode_mcchar::@1 mode_mcchar::@4 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
+mode_mcchar::@2 dominated by @begin mode_mcchar::@2 @45 mode_mcchar::@1 mode_mcchar::@4 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
+mode_mcchar::@3 dominated by @begin mode_mcchar::@2 @45 mode_mcchar::@3 mode_mcchar::@1 mode_mcchar::@4 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
+mode_mcchar::@5 dominated by @begin mode_mcchar::@2 @45 mode_mcchar::@3 mode_mcchar::@1 mode_mcchar::@4 mode_mcchar::@5 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
+mode_mcchar::@6 dominated by @begin mode_mcchar::@2 @45 mode_mcchar::@3 mode_mcchar::@1 mode_mcchar::@6 mode_mcchar::@4 mode_mcchar::@5 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
+mode_mcchar::@return dominated by mode_mcchar::@return @begin mode_mcchar::@2 @45 mode_mcchar::@3 mode_mcchar::@1 mode_mcchar::@6 mode_mcchar::@4 mode_mcchar::@5 mode_mcchar menu::@7 menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@53 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@26 menu::@19
+mode_ecmchar dominated by @begin @45 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
+mode_ecmchar::@1 dominated by @begin mode_ecmchar::@1 @45 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
+mode_ecmchar::@4 dominated by @begin mode_ecmchar::@4 mode_ecmchar::@1 @45 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
+mode_ecmchar::@2 dominated by @begin mode_ecmchar::@4 mode_ecmchar::@2 mode_ecmchar::@1 @45 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
+mode_ecmchar::@3 dominated by @begin mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @45 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
+mode_ecmchar::@5 dominated by @begin mode_ecmchar::@5 mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @45 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
+mode_ecmchar::@6 dominated by @begin mode_ecmchar::@6 mode_ecmchar::@5 mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @45 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
+mode_ecmchar::@return dominated by mode_ecmchar::@return @begin mode_ecmchar::@6 mode_ecmchar::@5 mode_ecmchar::@4 mode_ecmchar::@3 mode_ecmchar::@2 mode_ecmchar::@1 @45 mode_ecmchar menu::@6 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@51 menu::@50 menu::@48 menu::@47 menu main menu::@24 menu::@19
+mode_stdchar dominated by mode_stdchar @begin @45 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
+mode_stdchar::@1 dominated by mode_stdchar @begin @45 mode_stdchar::@1 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
+mode_stdchar::@4 dominated by mode_stdchar @begin @45 mode_stdchar::@1 mode_stdchar::@4 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
+mode_stdchar::@2 dominated by mode_stdchar @begin @45 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@4 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
+mode_stdchar::@3 dominated by mode_stdchar @begin @45 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@3 mode_stdchar::@4 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
+mode_stdchar::@5 dominated by mode_stdchar @begin @45 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@5 mode_stdchar::@3 mode_stdchar::@4 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
+mode_stdchar::@6 dominated by mode_stdchar @begin @45 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@3 mode_stdchar::@4 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 menu::@19
+mode_stdchar::@return dominated by mode_stdchar @begin @45 mode_stdchar::@1 mode_stdchar::@2 mode_stdchar::@5 mode_stdchar::@6 mode_stdchar::@3 mode_stdchar::@4 menu::@3 menu::@4 menu::@1 menu::@2 main::@1 main::@2 menu::@50 menu::@48 menu::@47 menu main menu::@22 mode_stdchar::@return menu::@19
+print_str_lines dominated by @begin @45 menu::@1 menu::@2 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
+print_str_lines::@1 dominated by @begin @45 menu::@1 menu::@2 print_str_lines::@1 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
+print_str_lines::@return dominated by @begin print_str_lines::@return @45 menu::@1 menu::@2 print_str_lines::@1 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
+print_str_lines::@4 dominated by @begin @45 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
+print_str_lines::@8 dominated by @begin @45 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@8 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
+print_str_lines::@5 dominated by @begin @45 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
+print_str_lines::@9 dominated by @begin @45 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
+print_ln dominated by print_ln @begin @45 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
+print_ln::@1 dominated by print_ln print_ln::@1 @begin @45 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
+print_ln::@return dominated by print_ln::@return print_ln print_ln::@1 @begin @45 print_str_lines::@9 menu::@1 menu::@2 print_str_lines::@1 print_str_lines::@4 print_str_lines::@5 main::@1 main::@2 print_str_lines menu::@48 menu::@47 menu main menu::@19
+print_cls dominated by print_cls @begin @45 menu::@1 menu::@2 main::@1 main::@2 menu::@47 menu main menu::@19
+print_cls::@1 dominated by print_cls @begin @45 menu::@1 menu::@2 print_cls::@1 main::@1 main::@2 menu::@47 menu main menu::@19
+print_cls::@return dominated by print_cls @begin @45 menu::@1 menu::@2 print_cls::@1 main::@1 main::@2 menu::@47 menu main print_cls::@return menu::@19
+print_set_screen dominated by @begin @45 menu::@1 menu::@2 main::@1 main::@2 print_set_screen menu main menu::@19
+print_set_screen::@return dominated by @begin @45 menu::@1 menu::@2 main::@1 main::@2 print_set_screen menu main menu::@19 print_set_screen::@return
NATURAL LOOPS
Found back edge: Loop head: main::@1 tails: main::@2 blocks: null
@@ -20002,7 +20472,7 @@ VARIABLE REGISTER WEIGHTS
(byte) keyboard_key_pressed::return#30 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 4.0
-(byte[]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte) keyboard_matrix_read::return
(byte) keyboard_matrix_read::return#0 1.3333333333333333
@@ -21332,15 +21802,15 @@ INITIAL ASM
.label print_line_cursor = $9d
//SEG2 @begin
bbegin:
-//SEG3 [1] phi from @begin to @42 [phi:@begin->@42]
-b42_from_bbegin:
- jmp b42
-//SEG4 @42
-b42:
+//SEG3 [1] phi from @begin to @45 [phi:@begin->@45]
+b45_from_bbegin:
+ jmp b45
+//SEG4 @45
+b45:
//SEG5 [2] call main param-assignment [ ] ( )
jsr main
-//SEG6 [3] phi from @42 to @end [phi:@42->@end]
-bend_from_b42:
+//SEG6 [3] phi from @45 to @end [phi:@45->@end]
+bend_from_b45:
jmp bend
//SEG7 @end
bend:
@@ -22513,7 +22983,7 @@ keyboard_key_pressed: {
//SEG410 [223] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ) -- vbuz1=vbuz2
lda keyboard_matrix_read.return_2
sta _2
- //SEG411 [224] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] ) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3
+ //SEG411 [224] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] ) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3
lda _2
ldy colidx
and keyboard_matrix_col_bitmask,y
@@ -26357,7 +26827,7 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:14 [ k
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ mode_ctrl::ctrl#14 mode_ctrl::ctrl#22 mode_ctrl::ctrl#6 mode_ctrl::ctrl#13 mode_ctrl::ctrl#5 mode_ctrl::ctrl#12 mode_ctrl::ctrl#4 mode_ctrl::ctrl#11 mode_ctrl::ctrl#3 mode_ctrl::ctrl#10 mode_ctrl::ctrl#2 mode_ctrl::ctrl#17 mode_ctrl::ctrl#1 mode_ctrl::ctrl#0 ]
Statement [219] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#20 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:204 [ keyboard_key_pressed::colidx#0 ]
-Statement [224] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
+Statement [224] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
Statement [226] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:12::keyboard_key_pressed:41::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:48::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:55::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:62::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:69::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:76::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:83::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:90::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:97::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:104::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:111::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:118::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
Statement [227] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:48::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:55::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:62::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:69::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:76::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:83::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:90::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:97::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:104::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:111::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:118::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a
Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a
@@ -26820,7 +27290,7 @@ Statement [199] (byte) mode_ctrl::ctrl#5 ← (byte) mode_ctrl::ctrl#12 | (const
Statement [205] (byte) mode_ctrl::ctrl#6 ← (byte) mode_ctrl::ctrl#13 | (const byte) DTV_COLORRAM_OFF#0 [ dtv_control#114 mode_ctrl::ctrl#6 ] ( main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835 [ dtv_control#114 mode_ctrl::ctrl#6 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869 [ dtv_control#114 mode_ctrl::ctrl#6 ] ) always clobbers reg byte a
Statement [218] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#20 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::key#20 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
Statement [219] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#20 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a
-Statement [224] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
+Statement [224] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
Statement [226] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:12::keyboard_key_pressed:41::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:48::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:55::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:62::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:69::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:76::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:83::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:90::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:97::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:104::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:111::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::keyboard_key_pressed:118::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
Statement [227] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:48::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:55::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:62::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:69::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:76::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:83::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:90::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:97::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:104::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:111::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::keyboard_key_pressed:118::keyboard_matrix_read:221 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166::keyboard_matrix_read:221 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207::keyboard_matrix_read:221 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a
Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a
@@ -27907,15 +28377,15 @@ ASSEMBLER BEFORE OPTIMIZATION
.label print_line_cursor = $d
//SEG2 @begin
bbegin:
-//SEG3 [1] phi from @begin to @42 [phi:@begin->@42]
-b42_from_bbegin:
- jmp b42
-//SEG4 @42
-b42:
+//SEG3 [1] phi from @begin to @45 [phi:@begin->@45]
+b45_from_bbegin:
+ jmp b45
+//SEG4 @45
+b45:
//SEG5 [2] call main param-assignment [ ] ( )
jsr main
-//SEG6 [3] phi from @42 to @end [phi:@42->@end]
-bend_from_b42:
+//SEG6 [3] phi from @45 to @end [phi:@45->@end]
+bend_from_b45:
jmp bend
//SEG7 @end
bend:
@@ -28957,7 +29427,7 @@ keyboard_key_pressed: {
b2:
//SEG410 [223] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
// (byte~) keyboard_key_pressed::$2 = (byte) keyboard_matrix_read::return#2 // register copy reg byte a
- //SEG411 [224] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1
+ //SEG411 [224] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1
ldy colidx
and keyboard_matrix_col_bitmask,y
jmp breturn
@@ -32405,7 +32875,7 @@ print_set_screen: {
MENU_TEXT: .text "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+"d. 8bpp Pixel Cell (D) 0111011@"+"e. Chunky 8bpp Bitmap (D) 1111011@"+"----------------------------------------@"+" (V) vicII (H) vicII+hicol (D) c64dtv@"+"@"
ASSEMBLER OPTIMIZATIONS
-Removing instruction jmp b42
+Removing instruction jmp b45
Removing instruction jmp bend
Removing instruction jmp b1
Removing instruction jmp breturn
@@ -32804,8 +33274,8 @@ Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1
Removing instruction bbegin:
-Removing instruction b42_from_bbegin:
-Removing instruction bend_from_b42:
+Removing instruction b45_from_bbegin:
+Removing instruction bend_from_b45:
Removing instruction b2_from_b1:
Removing instruction b1_from_b1:
Removing instruction b2_from_b2:
@@ -33024,7 +33494,7 @@ Removing instruction b1_from_print_ln:
Removing instruction b1_from_b1:
Removing instruction b1_from_b1:
Succesful ASM optimization Pass5RedundantLabelElimination
-Removing instruction b42:
+Removing instruction b45:
Removing instruction bend:
Removing instruction b1_from_main:
Removing instruction breturn:
@@ -33328,7 +33798,7 @@ Succesful ASM optimization Pass5UnreachableCodeElimination
Fixing long branch [231] beq b4 to bne
FINAL SYMBOL TABLE
-(label) @42
+(label) @45
(label) @begin
(label) @end
(byte*) BGCOL
@@ -33789,8 +34259,8 @@ FINAL SYMBOL TABLE
(byte) keyboard_key_pressed::return#30 reg byte a 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(byte[]) keyboard_matrix_col_bitmask
-(const byte[]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+(byte[8]) keyboard_matrix_col_bitmask
+(const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -34759,11 +35229,11 @@ Score: 2302224
.label dtv_control = 2
.label print_line_cursor = $d
//SEG2 @begin
-//SEG3 [1] phi from @begin to @42 [phi:@begin->@42]
-//SEG4 @42
+//SEG3 [1] phi from @begin to @45 [phi:@begin->@45]
+//SEG4 @45
//SEG5 [2] call main param-assignment [ ] ( )
jsr main
-//SEG6 [3] phi from @42 to @end [phi:@42->@end]
+//SEG6 [3] phi from @45 to @end [phi:@45->@end]
//SEG7 @end
//SEG8 main
main: {
@@ -35547,7 +36017,7 @@ keyboard_key_pressed: {
//SEG409 keyboard_key_pressed::@2
//SEG410 [223] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
// (byte~) keyboard_key_pressed::$2 = (byte) keyboard_matrix_read::return#2 // register copy reg byte a
- //SEG411 [224] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1
+ //SEG411 [224] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:12::keyboard_key_pressed:41 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:48 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:55 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:62 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:69 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:76 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:83 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:90 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:97 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:104 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:111 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::keyboard_key_pressed:118 [ dtv_control#1 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:166 [ dtv_control#114 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:171 [ dtv_control#114 mode_ctrl::ctrl#0 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:177 [ dtv_control#114 mode_ctrl::ctrl#17 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:183 [ dtv_control#114 mode_ctrl::ctrl#10 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:189 [ dtv_control#114 mode_ctrl::ctrl#11 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:195 [ dtv_control#114 mode_ctrl::ctrl#12 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:201 [ dtv_control#114 mode_ctrl::ctrl#13 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bppchunkybmm:123::mode_ctrl:158::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_8bpppixelcell:116::mode_ctrl:286::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred:109::mode_ctrl:339::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_twoplanebitmap:102::mode_ctrl:397::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_sixsfred2:95::mode_ctrl:454::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolmcchar:88::mode_ctrl:488::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolecmchar:81::mode_ctrl:523::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_hicolstdchar:74::mode_ctrl:555::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdbitmap:67::mode_ctrl:596::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_mcchar:60::mode_ctrl:798::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_ecmchar:53::mode_ctrl:835::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] main:2::menu:12::mode_stdchar:46::mode_ctrl:869::keyboard_key_pressed:207 [ dtv_control#114 mode_ctrl::ctrl#22 keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1
ldy colidx
and keyboard_matrix_col_bitmask,y
//SEG412 keyboard_key_pressed::@return
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.sym b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.sym
index 8b9e59734..10e26acf4 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.sym
+++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.sym
@@ -1,4 +1,4 @@
-(label) @42
+(label) @45
(label) @begin
(label) @end
(byte*) BGCOL
@@ -459,8 +459,8 @@
(byte) keyboard_key_pressed::return#30 reg byte a 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(byte[]) keyboard_matrix_col_bitmask
-(const byte[]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+(byte[8]) keyboard_matrix_col_bitmask
+(const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.cfg b/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.cfg
index 0e91d27a6..ebcfc181c 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.cfg
+++ b/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.cfg
@@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
- to:@12
-@12: scope:[] from @begin
+ to:@15
+@15: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
-@end: scope:[] from @12
+@end: scope:[] from @15
[3] phi() [ ] ( )
-main: scope:[main] from @12
+main: scope:[main] from @15
[4] phi() [ ] ( main:2 [ ] )
to:main::@1
main::@1: scope:[main] from main main::@1
@@ -235,7 +235,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@21 main::@3 main
to:keyboard_key_pressed::@2
keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_pressed
[121] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
- [122] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] )
+ [122] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] )
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
[123] return [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] )
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.log b/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.log
index 7dd878005..c5e0182a5 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.log
+++ b/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.log
@@ -364,7 +364,7 @@ const byte[] keyboard_char_keycodes = {
byte[8] keyboard_matrix_row_bitmask = { %11111110, %11111101, %11111011, %11110111, %11101111, %11011111, %10111111, %01111111 };
// Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7)
-byte[] keyboard_matrix_col_bitmask = { %00000001, %00000010, %00000100, %00001000, %00010000, %00100000, %01000000, %10000000 };
+byte[8] keyboard_matrix_col_bitmask = { %00000001, %00000010, %00000100, %00001000, %00010000, %00100000, %01000000, %10000000 };
// Initialize keyboard reading by setting CIA#$ Data Direction Registers
void keyboard_init() {
@@ -384,7 +384,7 @@ byte keyboard_matrix_read(byte rowid) {
return row_pressed_bits;
}
-// Determines whether a specific key is currently pressed
+// Determines whether a specific key is currently pressed by accessing the matrix directly
// The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7)
// All keys exist as as KEY_XXX constants.
// Returns zero if the key is not pressed and a non-zero value if the key is currently pressed
@@ -401,7 +401,102 @@ byte keyboard_key_pressed(byte key) {
byte keyboard_get_keycode(byte ch) {
return keyboard_char_keycodes[ch];
}
+
+// Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan()
+byte[8] keyboard_events;
+// Keyboard event buffer size. The number of events currently in the event buffer
+byte keyboard_events_size = 0;
+// Current keyboard modifiers (left shift, right shift, ctrl, commodore)
+byte keyboard_modifiers = 0;
+// Left shift is pressed
+const byte KEY_MODIFIER_LSHIFT = 1;
+// Right shift is pressed
+const byte KEY_MODIFIER_RSHIFT = 2;
+// CTRL is pressed
+const byte KEY_MODIFIER_CTRL = 4;
+// Commodore is pressed
+const byte KEY_MODIFIER_COMMODORE = 8;
+// Any shift is pressed
+const byte KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT;
+// The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event()
+byte[8] keyboard_scan_values;
+
+// Scans the entire matrix to determine which keys have been pressed/depressed.
+// Generates keyboard events into the event buffer. Events can be read using keyboard_event_get().
+// Handles debounce and only generates events when the status of a key changes.
+// Also stores current status of modifiers in keyboard_modifiers.
+void keyboard_event_scan() {
+ byte keycode = 0;
+ for(byte row : 0..7) {
+ byte row_scan = keyboard_matrix_read(row);
+ if(row_scan!=keyboard_scan_values[row]) {
+ // Something has changed on the keyboard row - check each column
+ for(byte col : 0..7){
+ // XOR of row scan with the last seen row scan AND'ed with the col bitmask will be non-0 if the key status is changed
+ if(((row_scan^keyboard_scan_values[row])&keyboard_matrix_col_bitmask[col])!=0) {
+ // Key(row, col) status has changed. We have an event.
+ // Only process event if there is still room in the buffer
+ if(keyboard_events_size!=8) {
+ // AND of row scan and bit mask determines if key is pressed or released
+ byte event_type = row_scan&keyboard_matrix_col_bitmask[col];
+ if(event_type==0) {
+ // Key released
+ keyboard_events[keyboard_events_size++] = keycode|$40;
+ } else {
+ // Key pressed
+ keyboard_events[keyboard_events_size++] = keycode;
+ }
+ }
+ }
+ keycode++;
+ }
+ // Store the current keyboard status for the row to debounce
+ keyboard_scan_values[row] = row_scan;
+ } else {
+ // Update current keycode
+ keycode = keycode + 8;
+ }
+ }
+ // Update the keyboard modifiers
+ keyboard_modifiers = 0;
+ if(keyboard_event_pressed(KEY_LSHIFT)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_LSHIFT;
+ }
+ if(keyboard_event_pressed(KEY_RSHIFT)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_RSHIFT;
+ }
+ if(keyboard_event_pressed(KEY_CTRL)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_CTRL;
+ }
+ if(keyboard_event_pressed(KEY_COMMODORE)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_COMMODORE;
+ }
+}
+
+// Determine if a specific key is currently pressed based on the last keyboard_event_scan()
+// Returns 0 is not pressed and non-0 if pressed
+byte keyboard_event_pressed(byte keycode) {
+ byte row_bits = keyboard_scan_values[keycode>>3];
+ return row_bits & keyboard_matrix_col_bitmask[keycode&7];
+}
+
+// Get the next event from the keyboard event buffer.
+// Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process.
+// The buffer is filled by keyboard_scan()
+byte keyboard_event_get() {
+ if(keyboard_events_size==0) {
+ return $ff;
+ } else {
+ return keyboard_events[--keyboard_events_size];
+ }
+}
+
+
Importing c64.kc
+Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+Adding pre/post-modifier (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+Adding pre/post-modifier (byte) keyboard_events_size ← -- (byte) keyboard_events_size
Adding pre/post-modifier (byte*) main::sc ← ++ (byte*) main::sc
Adding pre/post-modifier (byte*) print_str_at::at ← ++ (byte*) print_str_at::at
Adding pre/post-modifier (byte*) print_str_at::str ← ++ (byte*) print_str_at::str
@@ -674,7 +769,7 @@ endproc // mul16s()
(byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
(byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(byte[8]) 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_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ (byte[8]) keyboard_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
proc (void()) keyboard_init()
*((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255
*((byte*) CIA1_PORT_B_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -697,7 +792,7 @@ proc (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
(byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key >> (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) keyboard_key_pressed::rowidx ← (byte~) keyboard_key_pressed::$1
(byte~) keyboard_key_pressed::$2 ← call keyboard_matrix_read (byte) keyboard_key_pressed::rowidx
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
(byte) keyboard_key_pressed::return ← (byte~) keyboard_key_pressed::$3
goto keyboard_key_pressed::@return
keyboard_key_pressed::@return:
@@ -711,6 +806,122 @@ keyboard_get_keycode::@return:
(byte) keyboard_get_keycode::return ← (byte) keyboard_get_keycode::return
return (byte) keyboard_get_keycode::return
endproc // keyboard_get_keycode()
+ (byte[8]) keyboard_events ← { fill( 8, 0) }
+ (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
+ (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+ (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+ (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+ (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
+proc (void()) keyboard_event_scan()
+ (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0
+keyboard_event_scan::@1:
+ (byte~) keyboard_event_scan::$0 ← call keyboard_matrix_read (byte) keyboard_event_scan::row
+ (byte) keyboard_event_scan::row_scan ← (byte~) keyboard_event_scan::$0
+ (boolean~) keyboard_event_scan::$1 ← (byte) keyboard_event_scan::row_scan != *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (boolean~) keyboard_event_scan::$2 ← ! (boolean~) keyboard_event_scan::$1
+ if((boolean~) keyboard_event_scan::$2) goto keyboard_event_scan::@2
+ (byte) keyboard_event_scan::col ← (byte/signed byte/word/signed word/dword/signed dword) 0
+keyboard_event_scan::@3:
+ (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan ^ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (boolean~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$6 ← ! (boolean~) keyboard_event_scan::$5
+ if((boolean~) keyboard_event_scan::$6) goto keyboard_event_scan::@4
+ (boolean~) keyboard_event_scan::$7 ← (byte) keyboard_events_size != (byte/signed byte/word/signed word/dword/signed dword) 8
+ (boolean~) keyboard_event_scan::$8 ← ! (boolean~) keyboard_event_scan::$7
+ if((boolean~) keyboard_event_scan::$8) goto keyboard_event_scan::@5
+ (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_scan::row_scan & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (byte) keyboard_event_scan::event_type ← (byte~) keyboard_event_scan::$9
+ (boolean~) keyboard_event_scan::$10 ← (byte) keyboard_event_scan::event_type == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$11 ← ! (boolean~) keyboard_event_scan::$10
+ if((boolean~) keyboard_event_scan::$11) goto keyboard_event_scan::@6
+ (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode | (byte/signed byte/word/signed word/dword/signed dword) 64
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte/word/dword~) keyboard_event_scan::$12
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ goto keyboard_event_scan::@7
+keyboard_event_scan::@6:
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte) keyboard_event_scan::keycode
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+keyboard_event_scan::@7:
+keyboard_event_scan::@5:
+keyboard_event_scan::@4:
+ (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+ (byte) keyboard_event_scan::col ← ++ (byte) keyboard_event_scan::col
+ (boolean~) keyboard_event_scan::$13 ← (byte) keyboard_event_scan::col != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$13) goto keyboard_event_scan::@3
+ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row) ← (byte) keyboard_event_scan::row_scan
+ goto keyboard_event_scan::@8
+keyboard_event_scan::@2:
+ (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14 ← (byte) keyboard_event_scan::keycode + (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte) keyboard_event_scan::keycode ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+keyboard_event_scan::@8:
+ (byte) keyboard_event_scan::row ← ++ (byte) keyboard_event_scan::row
+ (boolean~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$15) goto keyboard_event_scan::@1
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte~) keyboard_event_scan::$16 ← call keyboard_event_pressed (byte) KEY_LSHIFT
+ (boolean~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$18 ← ! (boolean~) keyboard_event_scan::$17
+ if((boolean~) keyboard_event_scan::$18) goto keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$19 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_LSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$19
+keyboard_event_scan::@9:
+ (byte~) keyboard_event_scan::$20 ← call keyboard_event_pressed (byte) KEY_RSHIFT
+ (boolean~) keyboard_event_scan::$21 ← (byte~) keyboard_event_scan::$20 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$22 ← ! (boolean~) keyboard_event_scan::$21
+ if((boolean~) keyboard_event_scan::$22) goto keyboard_event_scan::@10
+ (byte~) keyboard_event_scan::$23 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_RSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$23
+keyboard_event_scan::@10:
+ (byte~) keyboard_event_scan::$24 ← call keyboard_event_pressed (byte) KEY_CTRL
+ (boolean~) keyboard_event_scan::$25 ← (byte~) keyboard_event_scan::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$26 ← ! (boolean~) keyboard_event_scan::$25
+ if((boolean~) keyboard_event_scan::$26) goto keyboard_event_scan::@11
+ (byte~) keyboard_event_scan::$27 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_CTRL
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$27
+keyboard_event_scan::@11:
+ (byte~) keyboard_event_scan::$28 ← call keyboard_event_pressed (byte) KEY_COMMODORE
+ (boolean~) keyboard_event_scan::$29 ← (byte~) keyboard_event_scan::$28 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$30 ← ! (boolean~) keyboard_event_scan::$29
+ if((boolean~) keyboard_event_scan::$30) goto keyboard_event_scan::@12
+ (byte~) keyboard_event_scan::$31 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_COMMODORE
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$31
+keyboard_event_scan::@12:
+keyboard_event_scan::@return:
+ return
+endproc // keyboard_event_scan()
+proc (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
+ (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3
+ (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0)
+ (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode & (byte/signed byte/word/signed word/dword/signed dword) 7
+ (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits & *((byte[8]) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1)
+ (byte) keyboard_event_pressed::return ← (byte~) keyboard_event_pressed::$2
+ goto keyboard_event_pressed::@return
+keyboard_event_pressed::@return:
+ (byte) keyboard_event_pressed::return ← (byte) keyboard_event_pressed::return
+ return (byte) keyboard_event_pressed::return
+endproc // keyboard_event_pressed()
+proc (byte()) keyboard_event_get()
+ (boolean~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_get::$1 ← ! (boolean~) keyboard_event_get::$0
+ if((boolean~) keyboard_event_get::$1) goto keyboard_event_get::@1
+ (byte) keyboard_event_get::return ← (byte/word/signed word/dword/signed dword) 255
+ goto keyboard_event_get::@return
+ goto keyboard_event_get::@2
+keyboard_event_get::@1:
+ (byte) keyboard_events_size ← -- (byte) keyboard_events_size
+ (byte) keyboard_event_get::return ← *((byte[8]) keyboard_events + (byte) keyboard_events_size)
+ goto keyboard_event_get::@return
+keyboard_event_get::@2:
+keyboard_event_get::@return:
+ (byte) keyboard_event_get::return ← (byte) keyboard_event_get::return
+ return (byte) keyboard_event_get::return
+endproc // keyboard_event_get()
(byte*) SCREEN ← (word/signed word/dword/signed dword) 1024
proc (void()) main()
(byte*) main::sc ← (byte*) SCREEN
@@ -860,6 +1071,7 @@ endproc // plot_chargen()
call main
SYMBOLS
+(byte~) $0
(byte*) BGCOL
(byte*) BGCOL1
(byte*) BGCOL2
@@ -929,6 +1141,11 @@ SYMBOLS
(byte) KEY_LSHIFT
(byte) KEY_M
(byte) KEY_MINUS
+(byte) KEY_MODIFIER_COMMODORE
+(byte) KEY_MODIFIER_CTRL
+(byte) KEY_MODIFIER_LSHIFT
+(byte) KEY_MODIFIER_RSHIFT
+(byte) KEY_MODIFIER_SHIFT
(byte) KEY_N
(byte) KEY_O
(byte) KEY_P
@@ -991,6 +1208,74 @@ SYMBOLS
(byte) WHITE
(byte) YELLOW
(byte[]) keyboard_char_keycodes
+(byte()) keyboard_event_get()
+(boolean~) keyboard_event_get::$0
+(boolean~) keyboard_event_get::$1
+(label) keyboard_event_get::@1
+(label) keyboard_event_get::@2
+(label) keyboard_event_get::@return
+(byte) keyboard_event_get::return
+(byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
+(byte~) keyboard_event_pressed::$0
+(byte~) keyboard_event_pressed::$1
+(byte~) keyboard_event_pressed::$2
+(label) keyboard_event_pressed::@return
+(byte) keyboard_event_pressed::keycode
+(byte) keyboard_event_pressed::return
+(byte) keyboard_event_pressed::row_bits
+(void()) keyboard_event_scan()
+(byte~) keyboard_event_scan::$0
+(boolean~) keyboard_event_scan::$1
+(boolean~) keyboard_event_scan::$10
+(boolean~) keyboard_event_scan::$11
+(byte/word/dword~) keyboard_event_scan::$12
+(boolean~) keyboard_event_scan::$13
+(byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+(boolean~) keyboard_event_scan::$15
+(byte~) keyboard_event_scan::$16
+(boolean~) keyboard_event_scan::$17
+(boolean~) keyboard_event_scan::$18
+(byte~) keyboard_event_scan::$19
+(boolean~) keyboard_event_scan::$2
+(byte~) keyboard_event_scan::$20
+(boolean~) keyboard_event_scan::$21
+(boolean~) keyboard_event_scan::$22
+(byte~) keyboard_event_scan::$23
+(byte~) keyboard_event_scan::$24
+(boolean~) keyboard_event_scan::$25
+(boolean~) keyboard_event_scan::$26
+(byte~) keyboard_event_scan::$27
+(byte~) keyboard_event_scan::$28
+(boolean~) keyboard_event_scan::$29
+(byte~) keyboard_event_scan::$3
+(boolean~) keyboard_event_scan::$30
+(byte~) keyboard_event_scan::$31
+(byte~) keyboard_event_scan::$4
+(boolean~) keyboard_event_scan::$5
+(boolean~) keyboard_event_scan::$6
+(boolean~) keyboard_event_scan::$7
+(boolean~) keyboard_event_scan::$8
+(byte~) keyboard_event_scan::$9
+(label) keyboard_event_scan::@1
+(label) keyboard_event_scan::@10
+(label) keyboard_event_scan::@11
+(label) keyboard_event_scan::@12
+(label) keyboard_event_scan::@2
+(label) keyboard_event_scan::@3
+(label) keyboard_event_scan::@4
+(label) keyboard_event_scan::@5
+(label) keyboard_event_scan::@6
+(label) keyboard_event_scan::@7
+(label) keyboard_event_scan::@8
+(label) keyboard_event_scan::@9
+(label) keyboard_event_scan::@return
+(byte) keyboard_event_scan::col
+(byte) keyboard_event_scan::event_type
+(byte) keyboard_event_scan::keycode
+(byte) keyboard_event_scan::row
+(byte) keyboard_event_scan::row_scan
+(byte[8]) keyboard_events
+(byte) keyboard_events_size
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
(label) keyboard_get_keycode::@return
(byte) keyboard_get_keycode::ch
@@ -1007,7 +1292,7 @@ SYMBOLS
(byte) keyboard_key_pressed::key
(byte) keyboard_key_pressed::return
(byte) keyboard_key_pressed::rowidx
-(byte[]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -1015,6 +1300,8 @@ SYMBOLS
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte[8]) keyboard_matrix_row_bitmask
+(byte) keyboard_modifiers
+(byte[8]) keyboard_scan_values
(void()) main()
(byte*~) main::$0
(boolean~) main::$1
@@ -1588,7 +1875,7 @@ mul16s::@5: scope:[mul16s] from
(byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
(byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(byte[8]) 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_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ (byte[8]) keyboard_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
to:@6
keyboard_init: scope:[keyboard_init] from
*((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255
@@ -1619,7 +1906,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from
(byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key >> (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) keyboard_key_pressed::rowidx ← (byte~) keyboard_key_pressed::$1
(byte~) keyboard_key_pressed::$2 ← call keyboard_matrix_read (byte) keyboard_key_pressed::rowidx
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
(byte) keyboard_key_pressed::return ← (byte~) keyboard_key_pressed::$3
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed keyboard_key_pressed::@1
@@ -1640,8 +1927,175 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k
keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from
to:keyboard_get_keycode::@return
@9: scope:[] from @8
- (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024
+ (byte[8]) keyboard_events ← { fill( 8, 0) }
+ (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
+ (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+ (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+ (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+ (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
to:@10
+keyboard_event_scan: scope:[keyboard_event_scan] from
+ (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ to:keyboard_event_scan::@1
+keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8
+ (byte~) keyboard_event_scan::$0 ← call keyboard_matrix_read (byte) keyboard_event_scan::row
+ (byte) keyboard_event_scan::row_scan ← (byte~) keyboard_event_scan::$0
+ (boolean~) keyboard_event_scan::$1 ← (byte) keyboard_event_scan::row_scan != *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (boolean~) keyboard_event_scan::$2 ← ! (boolean~) keyboard_event_scan::$1
+ if((boolean~) keyboard_event_scan::$2) goto keyboard_event_scan::@2
+ to:keyboard_event_scan::@13
+keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@1 keyboard_event_scan::@19
+ (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14 ← (byte) keyboard_event_scan::keycode + (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte) keyboard_event_scan::keycode ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@1
+ (byte) keyboard_event_scan::col ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ to:keyboard_event_scan::@3
+keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@4
+ (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan ^ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (boolean~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$6 ← ! (boolean~) keyboard_event_scan::$5
+ if((boolean~) keyboard_event_scan::$6) goto keyboard_event_scan::@4
+ to:keyboard_event_scan::@14
+keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@3 keyboard_event_scan::@5
+ (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+ (byte) keyboard_event_scan::col ← ++ (byte) keyboard_event_scan::col
+ (boolean~) keyboard_event_scan::$13 ← (byte) keyboard_event_scan::col != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$13) goto keyboard_event_scan::@3
+ to:keyboard_event_scan::@18
+keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan::@3
+ (boolean~) keyboard_event_scan::$7 ← (byte) keyboard_events_size != (byte/signed byte/word/signed word/dword/signed dword) 8
+ (boolean~) keyboard_event_scan::$8 ← ! (boolean~) keyboard_event_scan::$7
+ if((boolean~) keyboard_event_scan::$8) goto keyboard_event_scan::@5
+ to:keyboard_event_scan::@15
+keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@14 keyboard_event_scan::@7
+ to:keyboard_event_scan::@4
+keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@14
+ (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_scan::row_scan & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (byte) keyboard_event_scan::event_type ← (byte~) keyboard_event_scan::$9
+ (boolean~) keyboard_event_scan::$10 ← (byte) keyboard_event_scan::event_type == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$11 ← ! (boolean~) keyboard_event_scan::$10
+ if((boolean~) keyboard_event_scan::$11) goto keyboard_event_scan::@6
+ to:keyboard_event_scan::@16
+keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@17
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte) keyboard_event_scan::keycode
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ to:keyboard_event_scan::@7
+keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15
+ (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode | (byte/signed byte/word/signed word/dword/signed dword) 64
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte/word/dword~) keyboard_event_scan::$12
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ to:keyboard_event_scan::@7
+keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan::@16 keyboard_event_scan::@6
+ to:keyboard_event_scan::@5
+keyboard_event_scan::@17: scope:[keyboard_event_scan] from
+ to:keyboard_event_scan::@6
+keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan::@4
+ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row) ← (byte) keyboard_event_scan::row_scan
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@18 keyboard_event_scan::@2
+ (byte) keyboard_event_scan::row ← ++ (byte) keyboard_event_scan::row
+ (boolean~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$15) goto keyboard_event_scan::@1
+ to:keyboard_event_scan::@20
+keyboard_event_scan::@19: scope:[keyboard_event_scan] from
+ to:keyboard_event_scan::@2
+keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@8
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte~) keyboard_event_scan::$16 ← call keyboard_event_pressed (byte) KEY_LSHIFT
+ (boolean~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$18 ← ! (boolean~) keyboard_event_scan::$17
+ if((boolean~) keyboard_event_scan::$18) goto keyboard_event_scan::@9
+ to:keyboard_event_scan::@21
+keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@20 keyboard_event_scan::@21
+ (byte~) keyboard_event_scan::$20 ← call keyboard_event_pressed (byte) KEY_RSHIFT
+ (boolean~) keyboard_event_scan::$21 ← (byte~) keyboard_event_scan::$20 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$22 ← ! (boolean~) keyboard_event_scan::$21
+ if((boolean~) keyboard_event_scan::$22) goto keyboard_event_scan::@10
+ to:keyboard_event_scan::@22
+keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@20
+ (byte~) keyboard_event_scan::$19 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_LSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$19
+ to:keyboard_event_scan::@9
+keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$24 ← call keyboard_event_pressed (byte) KEY_CTRL
+ (boolean~) keyboard_event_scan::$25 ← (byte~) keyboard_event_scan::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$26 ← ! (boolean~) keyboard_event_scan::$25
+ if((boolean~) keyboard_event_scan::$26) goto keyboard_event_scan::@11
+ to:keyboard_event_scan::@23
+keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$23 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_RSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$23
+ to:keyboard_event_scan::@10
+keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@10 keyboard_event_scan::@23
+ (byte~) keyboard_event_scan::$28 ← call keyboard_event_pressed (byte) KEY_COMMODORE
+ (boolean~) keyboard_event_scan::$29 ← (byte~) keyboard_event_scan::$28 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$30 ← ! (boolean~) keyboard_event_scan::$29
+ if((boolean~) keyboard_event_scan::$30) goto keyboard_event_scan::@12
+ to:keyboard_event_scan::@24
+keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@10
+ (byte~) keyboard_event_scan::$27 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_CTRL
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$27
+ to:keyboard_event_scan::@11
+keyboard_event_scan::@12: scope:[keyboard_event_scan] from keyboard_event_scan::@11 keyboard_event_scan::@24
+ to:keyboard_event_scan::@return
+keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@11
+ (byte~) keyboard_event_scan::$31 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_COMMODORE
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$31
+ to:keyboard_event_scan::@12
+keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@12
+ return
+ to:@return
+@10: scope:[] from @9
+ to:@11
+keyboard_event_pressed: scope:[keyboard_event_pressed] from
+ (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3
+ (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0)
+ (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode & (byte/signed byte/word/signed word/dword/signed dword) 7
+ (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits & *((byte[8]) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1)
+ (byte) keyboard_event_pressed::return ← (byte~) keyboard_event_pressed::$2
+ to:keyboard_event_pressed::@return
+keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed keyboard_event_pressed::@1
+ (byte) keyboard_event_pressed::return ← (byte) keyboard_event_pressed::return
+ return (byte) keyboard_event_pressed::return
+ to:@return
+keyboard_event_pressed::@1: scope:[keyboard_event_pressed] from
+ to:keyboard_event_pressed::@return
+@11: scope:[] from @10
+ to:@12
+keyboard_event_get: scope:[keyboard_event_get] from
+ (boolean~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_get::$1 ← ! (boolean~) keyboard_event_get::$0
+ if((boolean~) keyboard_event_get::$1) goto keyboard_event_get::@1
+ to:keyboard_event_get::@3
+keyboard_event_get::@1: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@5
+ (byte) keyboard_events_size ← -- (byte) keyboard_events_size
+ (byte) keyboard_event_get::return ← *((byte[8]) keyboard_events + (byte) keyboard_events_size)
+ to:keyboard_event_get::@return
+keyboard_event_get::@3: scope:[keyboard_event_get] from keyboard_event_get
+ (byte) keyboard_event_get::return ← (byte/word/signed word/dword/signed dword) 255
+ to:keyboard_event_get::@return
+keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get::@1 keyboard_event_get::@2 keyboard_event_get::@3
+ (byte) keyboard_event_get::return ← (byte) keyboard_event_get::return
+ return (byte) keyboard_event_get::return
+ to:@return
+keyboard_event_get::@4: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@2
+keyboard_event_get::@2: scope:[keyboard_event_get] from keyboard_event_get::@4 keyboard_event_get::@6
+ to:keyboard_event_get::@return
+keyboard_event_get::@5: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@1
+keyboard_event_get::@6: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@2
+@12: scope:[] from @11
+ (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024
+ to:@13
main: scope:[main] from
(byte*) main::sc ← (byte*) SCREEN
to:main::@1
@@ -1762,8 +2216,8 @@ main::@24: scope:[main] from main::@23
main::@return: scope:[main] from main::@24
return
to:@return
-@10: scope:[] from @9
- to:@11
+@13: scope:[] from @12
+ to:@14
print_str_at: scope:[print_str_at] from
to:print_str_at::@1
print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2
@@ -1786,8 +2240,8 @@ print_str_at::@6: scope:[print_str_at] from
print_str_at::@return: scope:[print_str_at] from print_str_at::@3
return
to:@return
-@11: scope:[] from @10
- to:@12
+@14: scope:[] from @13
+ to:@15
plot_chargen: scope:[plot_chargen] from
asm { sei }
(word~) plot_chargen::$0 ← ((word)) (byte) plot_chargen::ch
@@ -1848,16 +2302,19 @@ plot_chargen::@8: scope:[plot_chargen] from plot_chargen::@7
plot_chargen::@return: scope:[plot_chargen] from plot_chargen::@8
return
to:@return
-@12: scope:[] from @11
+@15: scope:[] from @14
call main
to:@end
-@end: scope:[] from @12
+@end: scope:[] from @15
Removing unused procedure mul8s
Removing unused procedure mul8su
Removing unused procedure mul16s
Removing unused procedure keyboard_init
+Removing unused procedure keyboard_event_scan
+Removing unused procedure keyboard_event_get
Removing unused procedure mul16u
+Removing unused procedure keyboard_event_pressed
Eliminating unused variable (byte*) PROCPORT_DDR and assignment [0] (byte*) PROCPORT_DDR ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
Eliminating unused variable (byte) PROCPORT_DDR_MEMORY_MASK and assignment [1] (byte) PROCPORT_DDR_MEMORY_MASK ← (byte/signed byte/word/signed word/dword/signed dword) 7
Eliminating unused variable (byte) PROCPORT_RAM_ALL and assignment [3] (byte) PROCPORT_RAM_ALL ← (byte/signed byte/word/signed word/dword/signed dword) 48
@@ -1928,12 +2385,22 @@ Eliminating unused variable (byte) KEY_RSHIFT and assignment [134] (byte) KEY_RS
Eliminating unused variable (byte) KEY_CTRL and assignment [140] (byte) KEY_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 58
Eliminating unused variable (byte) KEY_COMMODORE and assignment [143] (byte) KEY_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 61
Eliminating unused variable (byte) KEY_RUNSTOP and assignment [145] (byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
+Eliminating unused variable (byte[8]) keyboard_events and assignment [167] (byte[8]) keyboard_events ← { fill( 8, 0) }
+Eliminating unused variable (byte) keyboard_events_size and assignment [168] (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+Eliminating unused variable (byte) keyboard_modifiers and assignment [169] (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+Eliminating unused variable (byte) KEY_MODIFIER_CTRL and assignment [172] (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+Eliminating unused variable (byte) KEY_MODIFIER_COMMODORE and assignment [173] (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+Eliminating unused variable (byte) KEY_MODIFIER_SHIFT and assignment [175] (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+Eliminating unused variable (byte[8]) keyboard_scan_values and assignment [176] (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
Eliminating unused variable - keeping the call (void~) main::$3
Eliminating unused variable - keeping the call (void~) main::$6
Eliminating unused variable - keeping the call (void~) main::$9
Eliminating unused variable - keeping the call (void~) main::$12
Eliminating unused variable - keeping the call (void~) main::$13
Eliminating unused variable - keeping the call (void~) main::$36
+Eliminating unused variable (byte~) $0 and assignment [99] (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+Eliminating unused variable (byte) KEY_MODIFIER_LSHIFT and assignment [97] (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+Eliminating unused variable (byte) KEY_MODIFIER_RSHIFT and assignment [98] (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
Creating constant string variable for inline (const string) main::str "f1@"
Creating constant string variable for inline (const string) main::str1 "f3@"
Creating constant string variable for inline (const string) main::str2 "f5@"
@@ -1952,14 +2419,17 @@ Removing empty block @7
Removing empty block keyboard_key_pressed::@1
Removing empty block @8
Removing empty block keyboard_get_keycode::@1
+Removing empty block @9
+Removing empty block @10
+Removing empty block @11
Removing empty block main::@20
Removing empty block main::@24
-Removing empty block @10
+Removing empty block @13
Removing empty block print_str_at::@4
Removing empty block print_str_at::@3
Removing empty block print_str_at::@5
Removing empty block print_str_at::@6
-Removing empty block @11
+Removing empty block @14
PROCEDURE MODIFY VARIABLE ANALYSIS
Completing Phi functions...
@@ -2094,8 +2564,8 @@ mul8u::@return: scope:[mul8u] from mul8u::@3
(byte) KEY_Q#0 ← (byte/signed byte/word/signed word/dword/signed dword) 62
(byte[]) keyboard_char_keycodes#0 ← { (byte) KEY_AT#0, (byte) KEY_A#0, (byte) KEY_B#0, (byte) KEY_C#0, (byte) KEY_D#0, (byte) KEY_E#0, (byte) KEY_F#0, (byte) KEY_G#0, (byte) KEY_H#0, (byte) KEY_I#0, (byte) KEY_J#0, (byte) KEY_K#0, (byte) KEY_L#0, (byte) KEY_M#0, (byte) KEY_N#0, (byte) KEY_O#0, (byte) KEY_P#0, (byte) KEY_Q#0, (byte) KEY_R#0, (byte) KEY_S#0, (byte) KEY_T#0, (byte) KEY_U#0, (byte) KEY_V#0, (byte) KEY_W#0, (byte) KEY_X#0, (byte) KEY_Y#0, (byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP#0, (byte) KEY_ARROW_LEFT#0, (byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK#0, (byte) KEY_PLUS#0, (byte) KEY_COMMA#0, (byte) KEY_MINUS#0, (byte) KEY_DOT#0, (byte) KEY_SLASH#0, (byte) KEY_0#0, (byte) KEY_1#0, (byte) KEY_2#0, (byte) KEY_3#0, (byte) KEY_4#0, (byte) KEY_5#0, (byte) KEY_6#0, (byte) KEY_7#0, (byte) KEY_8#0, (byte) KEY_9#0, (byte) KEY_COLON#0, (byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(byte[8]) keyboard_matrix_row_bitmask#0 ← { (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_matrix_col_bitmask#0 ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
- to:@9
+ (byte[8]) keyboard_matrix_col_bitmask#0 ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ to:@12
keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed
(byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 )
*((byte*) CIA1_PORT_A#0) ← *((byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#1)
@@ -2122,7 +2592,7 @@ keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_presse
(byte) keyboard_key_pressed::colidx#1 ← phi( keyboard_key_pressed/(byte) keyboard_key_pressed::colidx#0 )
(byte) keyboard_matrix_read::return#4 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::return#2 )
(byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#4
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#1)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#1)
(byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$3
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
@@ -2139,11 +2609,11 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k
(byte) keyboard_get_keycode::return#1 ← (byte) keyboard_get_keycode::return#3
return
to:@return
-@9: scope:[] from @5
+@12: scope:[] from @5
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
- to:@12
-main: scope:[main] from @12
- (byte*) SCREEN#1 ← phi( @12/(byte*) SCREEN#8 )
+ to:@15
+main: scope:[main] from @15
+ (byte*) SCREEN#1 ← phi( @15/(byte*) SCREEN#8 )
(byte*) main::sc#0 ← (byte*) SCREEN#1
to:main::@1
main::@1: scope:[main] from main main::@1
@@ -2527,19 +2997,19 @@ plot_chargen::@8: scope:[plot_chargen] from plot_chargen::@7
plot_chargen::@return: scope:[plot_chargen] from plot_chargen::@8
return
to:@return
-@12: scope:[] from @9
- (byte*) SCREEN#8 ← phi( @9/(byte*) SCREEN#0 )
+@15: scope:[] from @12
+ (byte*) SCREEN#8 ← phi( @12/(byte*) SCREEN#0 )
call main param-assignment
- to:@13
-@13: scope:[] from @12
+ to:@16
+@16: scope:[] from @15
to:@end
-@end: scope:[] from @13
+@end: scope:[] from @16
SYMBOL TABLE SSA
(label) @12
-(label) @13
+(label) @15
+(label) @16
(label) @5
-(label) @9
(label) @begin
(label) @end
(byte*) CHARGEN
@@ -2751,8 +3221,8 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#9
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
-(byte[]) keyboard_matrix_col_bitmask
-(byte[]) keyboard_matrix_col_bitmask#0
+(byte[8]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask#0
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -3068,7 +3538,7 @@ SYMBOL TABLE SSA
(byte*) print_str_at::str#7
OPTIMIZING CONTROL FLOW GRAPH
-Culled Empty Block (label) @13
+Culled Empty Block (label) @16
Succesful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (boolean~) mul8u::$3 ← (byte~) mul8u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (boolean~) main::$17 ← (byte~) main::$15 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) main::$16 ← (byte~) main::$15 != (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -3402,7 +3872,7 @@ Constant (const byte) KEY_2#0 = 59
Constant (const byte) KEY_SPACE#0 = 60
Constant (const byte) KEY_Q#0 = 62
Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { 254, 253, 251, 247, 239, 223, 191, 127 }
-Constant (const byte[]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 }
+Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 }
Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const string) print_str_at::str#0 = main::str
Constant (const string) print_str_at::str#1 = main::str1
@@ -3455,7 +3925,7 @@ Eliminating unused constant (const byte) main::shift#0
Succesful SSA optimization PassNEliminateUnusedVars
Culled Empty Block (label) mul8u::@3
Culled Empty Block (label) @5
-Culled Empty Block (label) @9
+Culled Empty Block (label) @12
Culled Empty Block (label) main::@28
Culled Empty Block (label) main::@14
Not culling empty block because it shares successor with its predecessor. (label) main::@15
@@ -3713,7 +4183,7 @@ Constant inlined main::$7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed
Constant inlined main::pressed#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined plot_chargen::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
-Block Sequence Planned @begin @12 @end main main::@1 main::@13 main::@25 main::@26 main::@27 main::@2 main::@29 main::@3 main::@30 main::@15 main::@4 main::@31 main::@16 main::@5 main::@32 main::@17 main::@6 main::@33 main::@18 main::@7 main::@34 main::@19 main::@9 main::@10 main::@35 main::@21 main::@36 main::@11 main::@22 main::@12 main::@23 main::@return plot_chargen plot_chargen::@5 plot_chargen::@1 plot_chargen::@9 plot_chargen::@2 plot_chargen::@3 plot_chargen::@6 plot_chargen::@4 plot_chargen::@7 plot_chargen::@8 plot_chargen::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2
+Block Sequence Planned @begin @15 @end main main::@1 main::@13 main::@25 main::@26 main::@27 main::@2 main::@29 main::@3 main::@30 main::@15 main::@4 main::@31 main::@16 main::@5 main::@32 main::@17 main::@6 main::@33 main::@18 main::@7 main::@34 main::@19 main::@9 main::@10 main::@35 main::@21 main::@36 main::@11 main::@22 main::@12 main::@23 main::@return plot_chargen plot_chargen::@5 plot_chargen::@1 plot_chargen::@9 plot_chargen::@2 plot_chargen::@3 plot_chargen::@6 plot_chargen::@4 plot_chargen::@7 plot_chargen::@8 plot_chargen::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2
Added new block during phi lifting main::@38(between main::@1 and main::@1)
Added new block during phi lifting main::@39(between main::@29 and main::@2)
Added new block during phi lifting main::@40(between main::@23 and main::@3)
@@ -3726,9 +4196,9 @@ Added new block during phi lifting plot_chargen::@10(between plot_chargen and pl
Added new block during phi lifting plot_chargen::@11(between plot_chargen::@7 and plot_chargen::@2)
Added new block during phi lifting plot_chargen::@12(between plot_chargen::@4 and plot_chargen::@3)
Added new block during phi lifting mul8u::@10(between mul8u::@2 and mul8u::@4)
-Block Sequence Planned @begin @12 @end main main::@1 main::@13 main::@25 main::@26 main::@27 main::@2 main::@29 main::@3 main::@30 main::@15 main::@4 main::@31 main::@16 main::@5 main::@32 main::@17 main::@6 main::@33 main::@18 main::@7 main::@34 main::@19 main::@9 main::@10 main::@35 main::@21 main::@36 main::@11 main::@22 main::@12 main::@23 main::@return main::@40 main::@45 main::@44 main::@43 main::@42 main::@41 main::@39 main::@38 plot_chargen plot_chargen::@5 plot_chargen::@1 plot_chargen::@9 plot_chargen::@2 plot_chargen::@3 plot_chargen::@6 plot_chargen::@4 plot_chargen::@7 plot_chargen::@8 plot_chargen::@return plot_chargen::@11 plot_chargen::@12 plot_chargen::@10 mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 mul8u::@10 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2
+Block Sequence Planned @begin @15 @end main main::@1 main::@13 main::@25 main::@26 main::@27 main::@2 main::@29 main::@3 main::@30 main::@15 main::@4 main::@31 main::@16 main::@5 main::@32 main::@17 main::@6 main::@33 main::@18 main::@7 main::@34 main::@19 main::@9 main::@10 main::@35 main::@21 main::@36 main::@11 main::@22 main::@12 main::@23 main::@return main::@40 main::@45 main::@44 main::@43 main::@42 main::@41 main::@39 main::@38 plot_chargen plot_chargen::@5 plot_chargen::@1 plot_chargen::@9 plot_chargen::@2 plot_chargen::@3 plot_chargen::@6 plot_chargen::@4 plot_chargen::@7 plot_chargen::@8 plot_chargen::@return plot_chargen::@11 plot_chargen::@12 plot_chargen::@10 mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 mul8u::@10 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2
Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @12
+Adding NOP phi() at start of @15
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@13
@@ -3819,9 +4289,9 @@ Culled Empty Block (label) plot_chargen::@11
Culled Empty Block (label) plot_chargen::@12
Culled Empty Block (label) plot_chargen::@10
Culled Empty Block (label) mul8u::@10
-Block Sequence Planned @begin @12 @end main main::@1 main::@13 main::@25 main::@26 main::@27 main::@2 main::@29 main::@3 main::@30 main::@4 main::@31 main::@5 main::@32 main::@6 main::@33 main::@7 main::@34 main::@19 main::@9 main::@10 main::@35 main::@21 main::@36 main::@11 main::@22 main::@12 main::@23 main::@return main::@44 main::@43 main::@42 main::@41 plot_chargen plot_chargen::@5 plot_chargen::@1 plot_chargen::@9 plot_chargen::@2 plot_chargen::@3 plot_chargen::@6 plot_chargen::@4 plot_chargen::@7 plot_chargen::@8 plot_chargen::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2
+Block Sequence Planned @begin @15 @end main main::@1 main::@13 main::@25 main::@26 main::@27 main::@2 main::@29 main::@3 main::@30 main::@4 main::@31 main::@5 main::@32 main::@6 main::@33 main::@7 main::@34 main::@19 main::@9 main::@10 main::@35 main::@21 main::@36 main::@11 main::@22 main::@12 main::@23 main::@return main::@44 main::@43 main::@42 main::@41 plot_chargen plot_chargen::@5 plot_chargen::@1 plot_chargen::@9 plot_chargen::@2 plot_chargen::@3 plot_chargen::@6 plot_chargen::@4 plot_chargen::@7 plot_chargen::@8 plot_chargen::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2
Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @12
+Adding NOP phi() at start of @15
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@13
@@ -3854,14 +4324,14 @@ Propagating live ranges...
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi() [ ] ( )
- to:@12
-@12: scope:[] from @begin
+ to:@15
+@15: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
-@end: scope:[] from @12
+@end: scope:[] from @15
[3] phi() [ ] ( )
-main: scope:[main] from @12
+main: scope:[main] from @15
[4] phi() [ ] ( main:2 [ ] )
to:main::@1
main::@1: scope:[main] from main main::@1
@@ -4089,7 +4559,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@21 main::@3 main
to:keyboard_key_pressed::@2
keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_pressed
[121] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
- [122] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] )
+ [122] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] )
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
[123] return [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] )
@@ -4127,69 +4597,69 @@ print_str_at::@2: scope:[print_str_at] from print_str_at::@1
DOMINATORS
@begin dominated by @begin
-@12 dominated by @begin @12
-@end dominated by @end @begin @12
-main dominated by main @begin @12
-main::@1 dominated by main main::@1 @begin @12
-main::@13 dominated by main main::@1 @begin @12 main::@13
-main::@25 dominated by main main::@1 @begin main::@25 @12 main::@13
-main::@26 dominated by main main::@1 @begin main::@26 main::@25 @12 main::@13
-main::@27 dominated by main main::@1 @begin main::@27 main::@26 main::@25 @12 main::@13
-main::@2 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @12 main::@13
-main::@29 dominated by main main::@1 main::@2 @begin main::@27 main::@29 main::@26 main::@25 @12 main::@13
-main::@3 dominated by main main::@1 main::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 @12 main::@13
-main::@30 dominated by main main::@1 main::@2 main::@3 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @12 main::@13
-main::@4 dominated by main main::@1 main::@2 main::@3 main::@4 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @12 main::@13
-main::@31 dominated by main main::@1 main::@2 main::@3 main::@4 main::@31 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @12 main::@13
-main::@5 dominated by main main::@1 main::@2 main::@5 main::@3 main::@4 main::@31 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @12 main::@13
-main::@32 dominated by main main::@1 main::@2 main::@5 main::@3 main::@4 main::@31 main::@30 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @12 main::@13
-main::@6 dominated by main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @12 main::@13
-main::@33 dominated by main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @12 main::@13
-main::@7 dominated by main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @12 main::@13
-main::@34 dominated by main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 @12 main::@13
-main::@19 dominated by main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 @12 main::@19 main::@13
-main::@9 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 @12 main::@13
-main::@10 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 @12 main::@10 main::@13
-main::@35 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@27 main::@29 main::@26 main::@25 @12 main::@10 main::@13
-main::@21 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@21 main::@27 main::@29 main::@26 main::@25 @12 main::@10 main::@13
-main::@36 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@36 main::@21 main::@27 main::@29 main::@26 main::@25 @12 main::@10 main::@13
-main::@11 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@27 main::@29 main::@26 main::@25 @12 main::@11 main::@10 main::@13
-main::@22 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@22 main::@27 main::@29 main::@26 main::@25 @12 main::@11 main::@10 main::@13
-main::@12 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@27 main::@29 main::@26 main::@25 @12 main::@11 main::@10 main::@13 main::@12
-main::@23 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@27 main::@29 main::@23 main::@26 main::@25 @12 main::@11 main::@10 main::@13 main::@12
-main::@return dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@return main::@27 main::@29 main::@23 main::@26 main::@25 @12 main::@11 main::@10 main::@13 main::@12
-main::@44 dominated by main::@44 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @12 main::@13
-main::@43 dominated by main::@43 main main::@1 main::@2 main::@5 main::@3 main::@4 main::@31 main::@30 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @12 main::@13
-main::@42 dominated by main::@42 main main::@1 main::@2 main::@3 main::@4 main::@31 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @12 main::@13
-main::@41 dominated by main::@41 main main::@1 main::@2 main::@3 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @12 main::@13
-plot_chargen dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @12 main::@13 plot_chargen
-plot_chargen::@5 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @12 plot_chargen::@5 main::@13 plot_chargen
-plot_chargen::@1 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @12 main::@13 plot_chargen plot_chargen::@1
-plot_chargen::@9 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @12 plot_chargen::@9 main::@13 plot_chargen plot_chargen::@1
-plot_chargen::@2 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @12 plot_chargen::@9 main::@13 plot_chargen plot_chargen::@2 plot_chargen::@1
-plot_chargen::@3 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @12 plot_chargen::@9 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1
-plot_chargen::@6 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @12 plot_chargen::@9 plot_chargen::@6 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1
-plot_chargen::@4 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @12 plot_chargen::@9 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1
-plot_chargen::@7 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @12 plot_chargen::@9 plot_chargen::@7 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1
-plot_chargen::@8 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @12 plot_chargen::@9 plot_chargen::@8 plot_chargen::@7 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1
-plot_chargen::@return dominated by main main::@1 main::@2 plot_chargen::@return @begin main::@27 main::@26 main::@25 @12 plot_chargen::@9 plot_chargen::@8 plot_chargen::@7 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1
-mul8u dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @12 main::@13 plot_chargen plot_chargen::@1
-mul8u::@1 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @12 main::@13 plot_chargen plot_chargen::@1 mul8u::@1
-mul8u::@return dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @12 main::@13 mul8u::@return plot_chargen plot_chargen::@1 mul8u::@1
-mul8u::@2 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @12 main::@13 plot_chargen plot_chargen::@1 mul8u::@2 mul8u::@1
-mul8u::@7 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @12 main::@13 mul8u::@7 plot_chargen plot_chargen::@1 mul8u::@2 mul8u::@1
-mul8u::@4 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @12 main::@13 plot_chargen plot_chargen::@1 mul8u::@2 mul8u::@1 mul8u::@4
-keyboard_key_pressed dominated by main main::@1 main::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 @12 main::@13 keyboard_key_pressed
-keyboard_key_pressed::@2 dominated by main main::@1 main::@2 keyboard_key_pressed::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 @12 main::@13 keyboard_key_pressed
-keyboard_key_pressed::@return dominated by main main::@1 main::@2 keyboard_key_pressed::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 keyboard_key_pressed::@return @12 main::@13 keyboard_key_pressed
-keyboard_matrix_read dominated by main main::@1 main::@2 main::@3 @begin keyboard_matrix_read main::@27 main::@29 main::@26 main::@25 @12 main::@13 keyboard_key_pressed
-keyboard_matrix_read::@return dominated by main main::@1 main::@2 main::@3 @begin keyboard_matrix_read main::@27 main::@29 main::@26 main::@25 @12 main::@13 keyboard_matrix_read::@return keyboard_key_pressed
-keyboard_get_keycode dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 keyboard_get_keycode main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 @12 main::@10 main::@13
-keyboard_get_keycode::@return dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 keyboard_get_keycode main::@31 main::@30 main::@33 @begin main::@32 main::@34 keyboard_get_keycode::@return main::@27 main::@29 main::@26 main::@25 @12 main::@10 main::@13
-print_str_at dominated by main main::@1 @begin print_str_at @12 main::@13
-print_str_at::@1 dominated by main main::@1 @begin print_str_at @12 print_str_at::@1 main::@13
-print_str_at::@return dominated by main main::@1 @begin print_str_at @12 print_str_at::@1 main::@13 print_str_at::@return
-print_str_at::@2 dominated by main main::@1 @begin print_str_at @12 print_str_at::@1 print_str_at::@2 main::@13
+@15 dominated by @begin @15
+@end dominated by @end @begin @15
+main dominated by main @begin @15
+main::@1 dominated by main main::@1 @begin @15
+main::@13 dominated by main main::@1 @begin @15 main::@13
+main::@25 dominated by main main::@1 @begin main::@25 @15 main::@13
+main::@26 dominated by main main::@1 @begin main::@26 main::@25 @15 main::@13
+main::@27 dominated by main main::@1 @begin main::@27 main::@26 main::@25 @15 main::@13
+main::@2 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @15 main::@13
+main::@29 dominated by main main::@1 main::@2 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13
+main::@3 dominated by main main::@1 main::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13
+main::@30 dominated by main main::@1 main::@2 main::@3 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13
+main::@4 dominated by main main::@1 main::@2 main::@3 main::@4 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13
+main::@31 dominated by main main::@1 main::@2 main::@3 main::@4 main::@31 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13
+main::@5 dominated by main main::@1 main::@2 main::@5 main::@3 main::@4 main::@31 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13
+main::@32 dominated by main main::@1 main::@2 main::@5 main::@3 main::@4 main::@31 main::@30 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @15 main::@13
+main::@6 dominated by main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @15 main::@13
+main::@33 dominated by main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @15 main::@13
+main::@7 dominated by main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @15 main::@13
+main::@34 dominated by main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 @15 main::@13
+main::@19 dominated by main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 @15 main::@19 main::@13
+main::@9 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 @15 main::@13
+main::@10 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 main::@10 @15 main::@13
+main::@35 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@27 main::@29 main::@26 main::@25 main::@10 @15 main::@13
+main::@21 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@21 main::@27 main::@29 main::@26 main::@25 main::@10 @15 main::@13
+main::@36 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@36 main::@21 main::@27 main::@29 main::@26 main::@25 main::@10 @15 main::@13
+main::@11 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@27 main::@29 main::@26 main::@25 main::@11 main::@10 @15 main::@13
+main::@22 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@22 main::@27 main::@29 main::@26 main::@25 main::@11 main::@10 @15 main::@13
+main::@12 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@27 main::@29 main::@26 main::@25 main::@11 main::@10 @15 main::@13 main::@12
+main::@23 dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@27 main::@29 main::@23 main::@26 main::@25 main::@11 main::@10 @15 main::@13 main::@12
+main::@return dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@35 main::@34 main::@return main::@27 main::@29 main::@23 main::@26 main::@25 main::@11 main::@10 @15 main::@13 main::@12
+main::@44 dominated by main::@44 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 main::@31 main::@30 main::@33 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @15 main::@13
+main::@43 dominated by main::@43 main main::@1 main::@2 main::@5 main::@3 main::@4 main::@31 main::@30 @begin main::@32 main::@27 main::@29 main::@26 main::@25 @15 main::@13
+main::@42 dominated by main::@42 main main::@1 main::@2 main::@3 main::@4 main::@31 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13
+main::@41 dominated by main::@41 main main::@1 main::@2 main::@3 main::@30 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13
+plot_chargen dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @15 main::@13 plot_chargen
+plot_chargen::@5 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @15 plot_chargen::@5 main::@13 plot_chargen
+plot_chargen::@1 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 @15 main::@13 plot_chargen plot_chargen::@1
+plot_chargen::@9 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @15 main::@13 plot_chargen plot_chargen::@1
+plot_chargen::@2 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @15 main::@13 plot_chargen plot_chargen::@2 plot_chargen::@1
+plot_chargen::@3 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @15 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1
+plot_chargen::@6 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @15 plot_chargen::@6 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1
+plot_chargen::@4 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @15 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1
+plot_chargen::@7 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 @15 plot_chargen::@7 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1
+plot_chargen::@8 dominated by main main::@1 main::@2 @begin main::@27 main::@26 main::@25 plot_chargen::@9 plot_chargen::@8 @15 plot_chargen::@7 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1
+plot_chargen::@return dominated by main main::@1 main::@2 plot_chargen::@return @begin main::@27 main::@26 main::@25 plot_chargen::@9 plot_chargen::@8 @15 plot_chargen::@7 plot_chargen::@4 main::@13 plot_chargen plot_chargen::@3 plot_chargen::@2 plot_chargen::@1
+mul8u dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @15 main::@13 plot_chargen plot_chargen::@1
+mul8u::@1 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @15 main::@13 plot_chargen plot_chargen::@1 mul8u::@1
+mul8u::@return dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @15 main::@13 mul8u::@return plot_chargen plot_chargen::@1 mul8u::@1
+mul8u::@2 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @15 main::@13 plot_chargen plot_chargen::@1 mul8u::@2 mul8u::@1
+mul8u::@7 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @15 main::@13 mul8u::@7 plot_chargen plot_chargen::@1 mul8u::@2 mul8u::@1
+mul8u::@4 dominated by main main::@1 main::@2 @begin mul8u main::@27 main::@26 main::@25 @15 main::@13 plot_chargen plot_chargen::@1 mul8u::@2 mul8u::@1 mul8u::@4
+keyboard_key_pressed dominated by main main::@1 main::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13 keyboard_key_pressed
+keyboard_key_pressed::@2 dominated by main main::@1 main::@2 keyboard_key_pressed::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 @15 main::@13 keyboard_key_pressed
+keyboard_key_pressed::@return dominated by main main::@1 main::@2 keyboard_key_pressed::@2 main::@3 @begin main::@27 main::@29 main::@26 main::@25 keyboard_key_pressed::@return @15 main::@13 keyboard_key_pressed
+keyboard_matrix_read dominated by main main::@1 main::@2 main::@3 @begin keyboard_matrix_read main::@27 main::@29 main::@26 main::@25 @15 main::@13 keyboard_key_pressed
+keyboard_matrix_read::@return dominated by main main::@1 main::@2 main::@3 @begin keyboard_matrix_read main::@27 main::@29 main::@26 main::@25 @15 main::@13 keyboard_matrix_read::@return keyboard_key_pressed
+keyboard_get_keycode dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 keyboard_get_keycode main::@31 main::@30 main::@33 @begin main::@32 main::@34 main::@27 main::@29 main::@26 main::@25 main::@10 @15 main::@13
+keyboard_get_keycode::@return dominated by main::@9 main::@7 main main::@1 main::@2 main::@5 main::@6 main::@3 main::@4 keyboard_get_keycode main::@31 main::@30 main::@33 @begin main::@32 main::@34 keyboard_get_keycode::@return main::@27 main::@29 main::@26 main::@25 main::@10 @15 main::@13
+print_str_at dominated by main main::@1 @begin print_str_at @15 main::@13
+print_str_at::@1 dominated by main main::@1 @begin print_str_at @15 print_str_at::@1 main::@13
+print_str_at::@return dominated by main main::@1 @begin print_str_at @15 print_str_at::@1 main::@13 print_str_at::@return
+print_str_at::@2 dominated by main main::@1 @begin print_str_at @15 print_str_at::@1 print_str_at::@2 main::@13
NATURAL LOOPS
Found back edge: Loop head: main::@1 tails: main::@1 blocks: null
@@ -4329,7 +4799,7 @@ VARIABLE REGISTER WEIGHTS
(byte) keyboard_key_pressed::return#2 22.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 4.0
-(byte[]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte) keyboard_matrix_read::return
(byte) keyboard_matrix_read::return#0 1.3333333333333333
@@ -4647,17 +5117,17 @@ INITIAL ASM
.label SCREEN = $400
//SEG2 @begin
bbegin:
-//SEG3 [1] phi from @begin to @12 [phi:@begin->@12]
-b12_from_bbegin:
- jmp b12
-//SEG4 @12
-b12:
+//SEG3 [1] phi from @begin to @15 [phi:@begin->@15]
+b15_from_bbegin:
+ jmp b15
+//SEG4 @15
+b15:
//SEG5 [2] call main param-assignment [ ] ( )
-//SEG6 [4] phi from @12 to main [phi:@12->main]
-main_from_b12:
+//SEG6 [4] phi from @15 to main [phi:@15->main]
+main_from_b15:
jsr main
-//SEG7 [3] phi from @12 to @end [phi:@12->@end]
-bend_from_b12:
+//SEG7 [3] phi from @15 to @end [phi:@15->@end]
+bend_from_b15:
jmp bend
//SEG8 @end
bend:
@@ -5429,7 +5899,7 @@ keyboard_key_pressed: {
//SEG261 [121] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ) -- vbuz1=vbuz2
lda keyboard_matrix_read.return_2
sta _2
- //SEG262 [122] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] ) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3
+ //SEG262 [122] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] ) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3
lda _2
ldy colidx
and keyboard_matrix_col_bitmask,y
@@ -5558,7 +6028,7 @@ Statement [116] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pr
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:25 [ keyboard_key_pressed::key#6 keyboard_key_pressed::key#5 ]
Statement [117] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#6 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:54 [ keyboard_key_pressed::colidx#0 ]
-Statement [122] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
+Statement [122] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
Statement [124] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_key_pressed:23::keyboard_matrix_read:119 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:28::keyboard_matrix_read:119 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:119 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:38::keyboard_matrix_read:119 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:43::keyboard_matrix_read:119 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:56::keyboard_matrix_read:119 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
Statement [125] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:23::keyboard_matrix_read:119 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:28::keyboard_matrix_read:119 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:119 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:38::keyboard_matrix_read:119 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:43::keyboard_matrix_read:119 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:56::keyboard_matrix_read:119 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a
Statement [131] if(*((byte*) print_str_at::str#5)!=(byte) '@') goto print_str_at::@2 [ print_str_at::str#5 print_str_at::at#5 ] ( main:2::print_str_at:10 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:12 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:14 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:16 [ print_str_at::str#5 print_str_at::at#5 ] ) always clobbers reg byte a reg byte y
@@ -5582,7 +6052,7 @@ Statement [109] (byte~) mul8u::$1 ← (byte) mul8u::a#2 & (byte/signed byte/word
Statement [111] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2 [ mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ( main:2::plot_chargen:19::mul8u:83 [ main::i#2 plot_chargen::chargen#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] main:2::plot_chargen:64::mul8u:83 [ main::cur_pos#12 main::shift#10 main::ch#2 plot_chargen::chargen#5 mul8u::a#2 mul8u::mb#2 mul8u::res#1 ] ) always clobbers reg byte a
Statement [116] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#6 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::key#6 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
Statement [117] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#6 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a
-Statement [122] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
+Statement [122] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
Statement [124] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::keyboard_key_pressed:23::keyboard_matrix_read:119 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:28::keyboard_matrix_read:119 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:119 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:38::keyboard_matrix_read:119 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:43::keyboard_matrix_read:119 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 ] main:2::keyboard_key_pressed:56::keyboard_matrix_read:119 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
Statement [125] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:23::keyboard_matrix_read:119 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:28::keyboard_matrix_read:119 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:33::keyboard_matrix_read:119 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:38::keyboard_matrix_read:119 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:43::keyboard_matrix_read:119 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:56::keyboard_matrix_read:119 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a
Statement [131] if(*((byte*) print_str_at::str#5)!=(byte) '@') goto print_str_at::@2 [ print_str_at::str#5 print_str_at::at#5 ] ( main:2::print_str_at:10 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:12 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:14 [ print_str_at::str#5 print_str_at::at#5 ] main:2::print_str_at:16 [ print_str_at::str#5 print_str_at::at#5 ] ) always clobbers reg byte a reg byte y
@@ -5782,17 +6252,17 @@ ASSEMBLER BEFORE OPTIMIZATION
.label SCREEN = $400
//SEG2 @begin
bbegin:
-//SEG3 [1] phi from @begin to @12 [phi:@begin->@12]
-b12_from_bbegin:
- jmp b12
-//SEG4 @12
-b12:
+//SEG3 [1] phi from @begin to @15 [phi:@begin->@15]
+b15_from_bbegin:
+ jmp b15
+//SEG4 @15
+b15:
//SEG5 [2] call main param-assignment [ ] ( )
-//SEG6 [4] phi from @12 to main [phi:@12->main]
-main_from_b12:
+//SEG6 [4] phi from @15 to main [phi:@15->main]
+main_from_b15:
jsr main
-//SEG7 [3] phi from @12 to @end [phi:@12->@end]
-bend_from_b12:
+//SEG7 [3] phi from @15 to @end [phi:@15->@end]
+bend_from_b15:
jmp bend
//SEG8 @end
bend:
@@ -6489,7 +6959,7 @@ keyboard_key_pressed: {
b2:
//SEG261 [121] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
// (byte~) keyboard_key_pressed::$2 = (byte) keyboard_matrix_read::return#2 // register copy reg byte a
- //SEG262 [122] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy
+ //SEG262 [122] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy
and keyboard_matrix_col_bitmask,y
jmp breturn
//SEG263 keyboard_key_pressed::@return
@@ -6567,7 +7037,7 @@ print_str_at: {
keyboard_char_keycodes: .byte KEY_AT, KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, KEY_M, KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, $3f, KEY_POUND, $3f, KEY_ARROW_UP, KEY_ARROW_LEFT, KEY_SPACE, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, KEY_ASTERISK, KEY_PLUS, KEY_COMMA, KEY_MINUS, KEY_DOT, KEY_SLASH, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_COLON, KEY_SEMICOLON, $3f, KEY_EQUALS, $3f, $3f
ASSEMBLER OPTIMIZATIONS
-Removing instruction jmp b12
+Removing instruction jmp b15
Removing instruction jmp bend
Removing instruction jmp b1
Removing instruction jmp b13
@@ -6640,9 +7110,9 @@ Replacing label b2_from_b7 with b2
Replacing label b4_from_b2 with b4
Replacing label b1_from_b2 with b1
Removing instruction bbegin:
-Removing instruction b12_from_bbegin:
-Removing instruction main_from_b12:
-Removing instruction bend_from_b12:
+Removing instruction b15_from_bbegin:
+Removing instruction main_from_b15:
+Removing instruction bend_from_b15:
Removing instruction b1_from_b1:
Removing instruction b13_from_b1:
Removing instruction print_str_at_from_b13:
@@ -6682,7 +7152,7 @@ Removing instruction b4_from_b7:
Removing instruction b1_from_print_str_at:
Removing instruction b1_from_b2:
Succesful ASM optimization Pass5RedundantLabelElimination
-Removing instruction b12:
+Removing instruction b15:
Removing instruction bend:
Removing instruction b1_from_main:
Removing instruction b13:
@@ -6761,7 +7231,7 @@ Removing unreachable instruction jmp b4
Succesful ASM optimization Pass5UnreachableCodeElimination
FINAL SYMBOL TABLE
-(label) @12
+(label) @15
(label) @begin
(label) @end
(byte*) CHARGEN
@@ -6912,8 +7382,8 @@ FINAL SYMBOL TABLE
(byte) keyboard_key_pressed::return#2 reg byte a 22.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(byte[]) keyboard_matrix_col_bitmask
-(const byte[]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+(byte[8]) keyboard_matrix_col_bitmask
+(const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -7181,12 +7651,12 @@ Score: 628899
.const KEY_Q = $3e
.label SCREEN = $400
//SEG2 @begin
-//SEG3 [1] phi from @begin to @12 [phi:@begin->@12]
-//SEG4 @12
+//SEG3 [1] phi from @begin to @15 [phi:@begin->@15]
+//SEG4 @15
//SEG5 [2] call main param-assignment [ ] ( )
-//SEG6 [4] phi from @12 to main [phi:@12->main]
+//SEG6 [4] phi from @15 to main [phi:@15->main]
jsr main
-//SEG7 [3] phi from @12 to @end [phi:@12->@end]
+//SEG7 [3] phi from @15 to @end [phi:@15->@end]
//SEG8 @end
//SEG9 main
main: {
@@ -7740,7 +8210,7 @@ keyboard_key_pressed: {
//SEG260 keyboard_key_pressed::@2
//SEG261 [121] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
// (byte~) keyboard_key_pressed::$2 = (byte) keyboard_matrix_read::return#2 // register copy reg byte a
- //SEG262 [122] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy
+ //SEG262 [122] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy
and keyboard_matrix_col_bitmask,y
//SEG263 keyboard_key_pressed::@return
//SEG264 [123] return [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:23 [ main::cur_pos#24 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:28 [ main::cur_pos#22 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:33 [ main::cur_pos#20 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:38 [ main::cur_pos#18 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:43 [ main::cur_pos#12 keyboard_key_pressed::return#0 ] main:2::keyboard_key_pressed:56 [ main::cur_pos#12 main::shift#10 main::ch#2 keyboard_key_pressed::return#0 ] )
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.sym b/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.sym
index 54010e30d..736eb10f1 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.sym
+++ b/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.sym
@@ -1,4 +1,4 @@
-(label) @12
+(label) @15
(label) @begin
(label) @end
(byte*) CHARGEN
@@ -149,8 +149,8 @@
(byte) keyboard_key_pressed::return#2 reg byte a 22.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(byte[]) keyboard_matrix_col_bitmask
-(const byte[]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+(byte[8]) keyboard_matrix_col_bitmask
+(const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.cfg b/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.cfg
index ebfdb49f7..7f1a4ea3b 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.cfg
+++ b/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.cfg
@@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
- to:@7
-@7: scope:[] from @begin
+ to:@10
+@10: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
-@end: scope:[] from @7
+@end: scope:[] from @10
[3] phi() [ ] ( )
-main: scope:[main] from @7
+main: scope:[main] from @10
[4] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] )
to:main::@1
main::@1: scope:[main] from main main::@2
@@ -81,7 +81,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from menu::@2 menu::@4 menu:
to:keyboard_key_pressed::@2
keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_pressed
[40] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
- [41] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] )
+ [41] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] )
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
[42] return [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] )
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.log b/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.log
index ad864cbbf..1421088fd 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.log
+++ b/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.log
@@ -157,7 +157,7 @@ const byte[] keyboard_char_keycodes = {
byte[8] keyboard_matrix_row_bitmask = { %11111110, %11111101, %11111011, %11110111, %11101111, %11011111, %10111111, %01111111 };
// Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7)
-byte[] keyboard_matrix_col_bitmask = { %00000001, %00000010, %00000100, %00001000, %00010000, %00100000, %01000000, %10000000 };
+byte[8] keyboard_matrix_col_bitmask = { %00000001, %00000010, %00000100, %00001000, %00010000, %00100000, %01000000, %10000000 };
// Initialize keyboard reading by setting CIA#$ Data Direction Registers
void keyboard_init() {
@@ -177,7 +177,7 @@ byte keyboard_matrix_read(byte rowid) {
return row_pressed_bits;
}
-// Determines whether a specific key is currently pressed
+// Determines whether a specific key is currently pressed by accessing the matrix directly
// The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7)
// All keys exist as as KEY_XXX constants.
// Returns zero if the key is not pressed and a non-zero value if the key is currently pressed
@@ -194,6 +194,97 @@ byte keyboard_key_pressed(byte key) {
byte keyboard_get_keycode(byte ch) {
return keyboard_char_keycodes[ch];
}
+
+// Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan()
+byte[8] keyboard_events;
+// Keyboard event buffer size. The number of events currently in the event buffer
+byte keyboard_events_size = 0;
+// Current keyboard modifiers (left shift, right shift, ctrl, commodore)
+byte keyboard_modifiers = 0;
+// Left shift is pressed
+const byte KEY_MODIFIER_LSHIFT = 1;
+// Right shift is pressed
+const byte KEY_MODIFIER_RSHIFT = 2;
+// CTRL is pressed
+const byte KEY_MODIFIER_CTRL = 4;
+// Commodore is pressed
+const byte KEY_MODIFIER_COMMODORE = 8;
+// Any shift is pressed
+const byte KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT;
+// The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event()
+byte[8] keyboard_scan_values;
+
+// Scans the entire matrix to determine which keys have been pressed/depressed.
+// Generates keyboard events into the event buffer. Events can be read using keyboard_event_get().
+// Handles debounce and only generates events when the status of a key changes.
+// Also stores current status of modifiers in keyboard_modifiers.
+void keyboard_event_scan() {
+ byte keycode = 0;
+ for(byte row : 0..7) {
+ byte row_scan = keyboard_matrix_read(row);
+ if(row_scan!=keyboard_scan_values[row]) {
+ // Something has changed on the keyboard row - check each column
+ for(byte col : 0..7){
+ // XOR of row scan with the last seen row scan AND'ed with the col bitmask will be non-0 if the key status is changed
+ if(((row_scan^keyboard_scan_values[row])&keyboard_matrix_col_bitmask[col])!=0) {
+ // Key(row, col) status has changed. We have an event.
+ // Only process event if there is still room in the buffer
+ if(keyboard_events_size!=8) {
+ // AND of row scan and bit mask determines if key is pressed or released
+ byte event_type = row_scan&keyboard_matrix_col_bitmask[col];
+ if(event_type==0) {
+ // Key released
+ keyboard_events[keyboard_events_size++] = keycode|$40;
+ } else {
+ // Key pressed
+ keyboard_events[keyboard_events_size++] = keycode;
+ }
+ }
+ }
+ keycode++;
+ }
+ // Store the current keyboard status for the row to debounce
+ keyboard_scan_values[row] = row_scan;
+ } else {
+ // Update current keycode
+ keycode = keycode + 8;
+ }
+ }
+ // Update the keyboard modifiers
+ keyboard_modifiers = 0;
+ if(keyboard_event_pressed(KEY_LSHIFT)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_LSHIFT;
+ }
+ if(keyboard_event_pressed(KEY_RSHIFT)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_RSHIFT;
+ }
+ if(keyboard_event_pressed(KEY_CTRL)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_CTRL;
+ }
+ if(keyboard_event_pressed(KEY_COMMODORE)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_COMMODORE;
+ }
+}
+
+// Determine if a specific key is currently pressed based on the last keyboard_event_scan()
+// Returns 0 is not pressed and non-0 if pressed
+byte keyboard_event_pressed(byte keycode) {
+ byte row_bits = keyboard_scan_values[keycode>>3];
+ return row_bits & keyboard_matrix_col_bitmask[keycode&7];
+}
+
+// Get the next event from the keyboard event buffer.
+// Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process.
+// The buffer is filled by keyboard_scan()
+byte keyboard_event_get() {
+ if(keyboard_events_size==0) {
+ return $ff;
+ } else {
+ return keyboard_events[--keyboard_events_size];
+ }
+}
+
+
Importing c64.kc
PARSING src/test/java/dk/camelot64/kickc/test/kc/c64.kc
// Commodore 64 Registers and Constants
@@ -290,6 +381,10 @@ const byte LIGHT_GREEN = $d;
const byte LIGHT_BLUE = $e;
const byte LIGHT_GREY = $f;
+Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+Adding pre/post-modifier (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+Adding pre/post-modifier (byte) keyboard_events_size ← -- (byte) keyboard_events_size
Importing c64.kc
Adding pre/post-modifier *((byte*) SCREEN) ← ++ *((byte*) SCREEN)
Adding pre/post-modifier *((byte*) BGCOL) ← ++ *((byte*) BGCOL)
@@ -426,7 +521,7 @@ STATEMENTS
(byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
(byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(byte[8]) 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_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ (byte[8]) keyboard_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
proc (void()) keyboard_init()
*((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255
*((byte*) CIA1_PORT_B_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -449,7 +544,7 @@ proc (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
(byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key >> (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) keyboard_key_pressed::rowidx ← (byte~) keyboard_key_pressed::$1
(byte~) keyboard_key_pressed::$2 ← call keyboard_matrix_read (byte) keyboard_key_pressed::rowidx
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
(byte) keyboard_key_pressed::return ← (byte~) keyboard_key_pressed::$3
goto keyboard_key_pressed::@return
keyboard_key_pressed::@return:
@@ -463,6 +558,122 @@ keyboard_get_keycode::@return:
(byte) keyboard_get_keycode::return ← (byte) keyboard_get_keycode::return
return (byte) keyboard_get_keycode::return
endproc // keyboard_get_keycode()
+ (byte[8]) keyboard_events ← { fill( 8, 0) }
+ (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
+ (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+ (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+ (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+ (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
+proc (void()) keyboard_event_scan()
+ (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0
+keyboard_event_scan::@1:
+ (byte~) keyboard_event_scan::$0 ← call keyboard_matrix_read (byte) keyboard_event_scan::row
+ (byte) keyboard_event_scan::row_scan ← (byte~) keyboard_event_scan::$0
+ (boolean~) keyboard_event_scan::$1 ← (byte) keyboard_event_scan::row_scan != *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (boolean~) keyboard_event_scan::$2 ← ! (boolean~) keyboard_event_scan::$1
+ if((boolean~) keyboard_event_scan::$2) goto keyboard_event_scan::@2
+ (byte) keyboard_event_scan::col ← (byte/signed byte/word/signed word/dword/signed dword) 0
+keyboard_event_scan::@3:
+ (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan ^ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (boolean~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$6 ← ! (boolean~) keyboard_event_scan::$5
+ if((boolean~) keyboard_event_scan::$6) goto keyboard_event_scan::@4
+ (boolean~) keyboard_event_scan::$7 ← (byte) keyboard_events_size != (byte/signed byte/word/signed word/dword/signed dword) 8
+ (boolean~) keyboard_event_scan::$8 ← ! (boolean~) keyboard_event_scan::$7
+ if((boolean~) keyboard_event_scan::$8) goto keyboard_event_scan::@5
+ (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_scan::row_scan & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (byte) keyboard_event_scan::event_type ← (byte~) keyboard_event_scan::$9
+ (boolean~) keyboard_event_scan::$10 ← (byte) keyboard_event_scan::event_type == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$11 ← ! (boolean~) keyboard_event_scan::$10
+ if((boolean~) keyboard_event_scan::$11) goto keyboard_event_scan::@6
+ (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode | (byte/signed byte/word/signed word/dword/signed dword) 64
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte/word/dword~) keyboard_event_scan::$12
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ goto keyboard_event_scan::@7
+keyboard_event_scan::@6:
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte) keyboard_event_scan::keycode
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+keyboard_event_scan::@7:
+keyboard_event_scan::@5:
+keyboard_event_scan::@4:
+ (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+ (byte) keyboard_event_scan::col ← ++ (byte) keyboard_event_scan::col
+ (boolean~) keyboard_event_scan::$13 ← (byte) keyboard_event_scan::col != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$13) goto keyboard_event_scan::@3
+ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row) ← (byte) keyboard_event_scan::row_scan
+ goto keyboard_event_scan::@8
+keyboard_event_scan::@2:
+ (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14 ← (byte) keyboard_event_scan::keycode + (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte) keyboard_event_scan::keycode ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+keyboard_event_scan::@8:
+ (byte) keyboard_event_scan::row ← ++ (byte) keyboard_event_scan::row
+ (boolean~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$15) goto keyboard_event_scan::@1
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte~) keyboard_event_scan::$16 ← call keyboard_event_pressed (byte) KEY_LSHIFT
+ (boolean~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$18 ← ! (boolean~) keyboard_event_scan::$17
+ if((boolean~) keyboard_event_scan::$18) goto keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$19 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_LSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$19
+keyboard_event_scan::@9:
+ (byte~) keyboard_event_scan::$20 ← call keyboard_event_pressed (byte) KEY_RSHIFT
+ (boolean~) keyboard_event_scan::$21 ← (byte~) keyboard_event_scan::$20 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$22 ← ! (boolean~) keyboard_event_scan::$21
+ if((boolean~) keyboard_event_scan::$22) goto keyboard_event_scan::@10
+ (byte~) keyboard_event_scan::$23 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_RSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$23
+keyboard_event_scan::@10:
+ (byte~) keyboard_event_scan::$24 ← call keyboard_event_pressed (byte) KEY_CTRL
+ (boolean~) keyboard_event_scan::$25 ← (byte~) keyboard_event_scan::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$26 ← ! (boolean~) keyboard_event_scan::$25
+ if((boolean~) keyboard_event_scan::$26) goto keyboard_event_scan::@11
+ (byte~) keyboard_event_scan::$27 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_CTRL
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$27
+keyboard_event_scan::@11:
+ (byte~) keyboard_event_scan::$28 ← call keyboard_event_pressed (byte) KEY_COMMODORE
+ (boolean~) keyboard_event_scan::$29 ← (byte~) keyboard_event_scan::$28 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$30 ← ! (boolean~) keyboard_event_scan::$29
+ if((boolean~) keyboard_event_scan::$30) goto keyboard_event_scan::@12
+ (byte~) keyboard_event_scan::$31 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_COMMODORE
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$31
+keyboard_event_scan::@12:
+keyboard_event_scan::@return:
+ return
+endproc // keyboard_event_scan()
+proc (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
+ (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3
+ (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0)
+ (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode & (byte/signed byte/word/signed word/dword/signed dword) 7
+ (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits & *((byte[8]) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1)
+ (byte) keyboard_event_pressed::return ← (byte~) keyboard_event_pressed::$2
+ goto keyboard_event_pressed::@return
+keyboard_event_pressed::@return:
+ (byte) keyboard_event_pressed::return ← (byte) keyboard_event_pressed::return
+ return (byte) keyboard_event_pressed::return
+endproc // keyboard_event_pressed()
+proc (byte()) keyboard_event_get()
+ (boolean~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_get::$1 ← ! (boolean~) keyboard_event_get::$0
+ if((boolean~) keyboard_event_get::$1) goto keyboard_event_get::@1
+ (byte) keyboard_event_get::return ← (byte/word/signed word/dword/signed dword) 255
+ goto keyboard_event_get::@return
+ goto keyboard_event_get::@2
+keyboard_event_get::@1:
+ (byte) keyboard_events_size ← -- (byte) keyboard_events_size
+ (byte) keyboard_event_get::return ← *((byte[8]) keyboard_events + (byte) keyboard_events_size)
+ goto keyboard_event_get::@return
+keyboard_event_get::@2:
+keyboard_event_get::@return:
+ (byte) keyboard_event_get::return ← (byte) keyboard_event_get::return
+ return (byte) keyboard_event_get::return
+endproc // keyboard_event_get()
proc (void()) main()
*((byte*) BORDERCOL) ← (byte) GREEN
main::@1:
@@ -530,6 +741,7 @@ endproc // pressed()
call main
SYMBOLS
+(byte~) $0
(byte*) BGCOL
(byte*) BGCOL1
(byte*) BGCOL2
@@ -599,6 +811,11 @@ SYMBOLS
(byte) KEY_LSHIFT
(byte) KEY_M
(byte) KEY_MINUS
+(byte) KEY_MODIFIER_COMMODORE
+(byte) KEY_MODIFIER_CTRL
+(byte) KEY_MODIFIER_LSHIFT
+(byte) KEY_MODIFIER_RSHIFT
+(byte) KEY_MODIFIER_SHIFT
(byte) KEY_N
(byte) KEY_O
(byte) KEY_P
@@ -661,6 +878,74 @@ SYMBOLS
(byte) WHITE
(byte) YELLOW
(byte[]) keyboard_char_keycodes
+(byte()) keyboard_event_get()
+(boolean~) keyboard_event_get::$0
+(boolean~) keyboard_event_get::$1
+(label) keyboard_event_get::@1
+(label) keyboard_event_get::@2
+(label) keyboard_event_get::@return
+(byte) keyboard_event_get::return
+(byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
+(byte~) keyboard_event_pressed::$0
+(byte~) keyboard_event_pressed::$1
+(byte~) keyboard_event_pressed::$2
+(label) keyboard_event_pressed::@return
+(byte) keyboard_event_pressed::keycode
+(byte) keyboard_event_pressed::return
+(byte) keyboard_event_pressed::row_bits
+(void()) keyboard_event_scan()
+(byte~) keyboard_event_scan::$0
+(boolean~) keyboard_event_scan::$1
+(boolean~) keyboard_event_scan::$10
+(boolean~) keyboard_event_scan::$11
+(byte/word/dword~) keyboard_event_scan::$12
+(boolean~) keyboard_event_scan::$13
+(byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+(boolean~) keyboard_event_scan::$15
+(byte~) keyboard_event_scan::$16
+(boolean~) keyboard_event_scan::$17
+(boolean~) keyboard_event_scan::$18
+(byte~) keyboard_event_scan::$19
+(boolean~) keyboard_event_scan::$2
+(byte~) keyboard_event_scan::$20
+(boolean~) keyboard_event_scan::$21
+(boolean~) keyboard_event_scan::$22
+(byte~) keyboard_event_scan::$23
+(byte~) keyboard_event_scan::$24
+(boolean~) keyboard_event_scan::$25
+(boolean~) keyboard_event_scan::$26
+(byte~) keyboard_event_scan::$27
+(byte~) keyboard_event_scan::$28
+(boolean~) keyboard_event_scan::$29
+(byte~) keyboard_event_scan::$3
+(boolean~) keyboard_event_scan::$30
+(byte~) keyboard_event_scan::$31
+(byte~) keyboard_event_scan::$4
+(boolean~) keyboard_event_scan::$5
+(boolean~) keyboard_event_scan::$6
+(boolean~) keyboard_event_scan::$7
+(boolean~) keyboard_event_scan::$8
+(byte~) keyboard_event_scan::$9
+(label) keyboard_event_scan::@1
+(label) keyboard_event_scan::@10
+(label) keyboard_event_scan::@11
+(label) keyboard_event_scan::@12
+(label) keyboard_event_scan::@2
+(label) keyboard_event_scan::@3
+(label) keyboard_event_scan::@4
+(label) keyboard_event_scan::@5
+(label) keyboard_event_scan::@6
+(label) keyboard_event_scan::@7
+(label) keyboard_event_scan::@8
+(label) keyboard_event_scan::@9
+(label) keyboard_event_scan::@return
+(byte) keyboard_event_scan::col
+(byte) keyboard_event_scan::event_type
+(byte) keyboard_event_scan::keycode
+(byte) keyboard_event_scan::row
+(byte) keyboard_event_scan::row_scan
+(byte[8]) keyboard_events
+(byte) keyboard_events_size
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
(label) keyboard_get_keycode::@return
(byte) keyboard_get_keycode::ch
@@ -677,7 +962,7 @@ SYMBOLS
(byte) keyboard_key_pressed::key
(byte) keyboard_key_pressed::return
(byte) keyboard_key_pressed::rowidx
-(byte[]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -685,6 +970,8 @@ SYMBOLS
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte[8]) keyboard_matrix_row_bitmask
+(byte) keyboard_modifiers
+(byte[8]) keyboard_scan_values
(void()) main()
(void~) main::$0
(label) main::@1
@@ -889,7 +1176,7 @@ INITIAL CONTROL FLOW GRAPH
(byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
(byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(byte[8]) 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_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ (byte[8]) keyboard_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
to:@1
keyboard_init: scope:[keyboard_init] from
*((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255
@@ -920,7 +1207,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from
(byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key >> (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) keyboard_key_pressed::rowidx ← (byte~) keyboard_key_pressed::$1
(byte~) keyboard_key_pressed::$2 ← call keyboard_matrix_read (byte) keyboard_key_pressed::rowidx
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
(byte) keyboard_key_pressed::return ← (byte~) keyboard_key_pressed::$3
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed keyboard_key_pressed::@1
@@ -941,7 +1228,174 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k
keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from
to:keyboard_get_keycode::@return
@4: scope:[] from @3
+ (byte[8]) keyboard_events ← { fill( 8, 0) }
+ (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
+ (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+ (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+ (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+ (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
to:@5
+keyboard_event_scan: scope:[keyboard_event_scan] from
+ (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ to:keyboard_event_scan::@1
+keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8
+ (byte~) keyboard_event_scan::$0 ← call keyboard_matrix_read (byte) keyboard_event_scan::row
+ (byte) keyboard_event_scan::row_scan ← (byte~) keyboard_event_scan::$0
+ (boolean~) keyboard_event_scan::$1 ← (byte) keyboard_event_scan::row_scan != *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (boolean~) keyboard_event_scan::$2 ← ! (boolean~) keyboard_event_scan::$1
+ if((boolean~) keyboard_event_scan::$2) goto keyboard_event_scan::@2
+ to:keyboard_event_scan::@13
+keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@1 keyboard_event_scan::@19
+ (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14 ← (byte) keyboard_event_scan::keycode + (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte) keyboard_event_scan::keycode ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@1
+ (byte) keyboard_event_scan::col ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ to:keyboard_event_scan::@3
+keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@4
+ (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan ^ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (boolean~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$6 ← ! (boolean~) keyboard_event_scan::$5
+ if((boolean~) keyboard_event_scan::$6) goto keyboard_event_scan::@4
+ to:keyboard_event_scan::@14
+keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@3 keyboard_event_scan::@5
+ (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+ (byte) keyboard_event_scan::col ← ++ (byte) keyboard_event_scan::col
+ (boolean~) keyboard_event_scan::$13 ← (byte) keyboard_event_scan::col != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$13) goto keyboard_event_scan::@3
+ to:keyboard_event_scan::@18
+keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan::@3
+ (boolean~) keyboard_event_scan::$7 ← (byte) keyboard_events_size != (byte/signed byte/word/signed word/dword/signed dword) 8
+ (boolean~) keyboard_event_scan::$8 ← ! (boolean~) keyboard_event_scan::$7
+ if((boolean~) keyboard_event_scan::$8) goto keyboard_event_scan::@5
+ to:keyboard_event_scan::@15
+keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@14 keyboard_event_scan::@7
+ to:keyboard_event_scan::@4
+keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@14
+ (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_scan::row_scan & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (byte) keyboard_event_scan::event_type ← (byte~) keyboard_event_scan::$9
+ (boolean~) keyboard_event_scan::$10 ← (byte) keyboard_event_scan::event_type == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$11 ← ! (boolean~) keyboard_event_scan::$10
+ if((boolean~) keyboard_event_scan::$11) goto keyboard_event_scan::@6
+ to:keyboard_event_scan::@16
+keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@17
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte) keyboard_event_scan::keycode
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ to:keyboard_event_scan::@7
+keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15
+ (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode | (byte/signed byte/word/signed word/dword/signed dword) 64
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte/word/dword~) keyboard_event_scan::$12
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ to:keyboard_event_scan::@7
+keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan::@16 keyboard_event_scan::@6
+ to:keyboard_event_scan::@5
+keyboard_event_scan::@17: scope:[keyboard_event_scan] from
+ to:keyboard_event_scan::@6
+keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan::@4
+ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row) ← (byte) keyboard_event_scan::row_scan
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@18 keyboard_event_scan::@2
+ (byte) keyboard_event_scan::row ← ++ (byte) keyboard_event_scan::row
+ (boolean~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$15) goto keyboard_event_scan::@1
+ to:keyboard_event_scan::@20
+keyboard_event_scan::@19: scope:[keyboard_event_scan] from
+ to:keyboard_event_scan::@2
+keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@8
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte~) keyboard_event_scan::$16 ← call keyboard_event_pressed (byte) KEY_LSHIFT
+ (boolean~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$18 ← ! (boolean~) keyboard_event_scan::$17
+ if((boolean~) keyboard_event_scan::$18) goto keyboard_event_scan::@9
+ to:keyboard_event_scan::@21
+keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@20 keyboard_event_scan::@21
+ (byte~) keyboard_event_scan::$20 ← call keyboard_event_pressed (byte) KEY_RSHIFT
+ (boolean~) keyboard_event_scan::$21 ← (byte~) keyboard_event_scan::$20 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$22 ← ! (boolean~) keyboard_event_scan::$21
+ if((boolean~) keyboard_event_scan::$22) goto keyboard_event_scan::@10
+ to:keyboard_event_scan::@22
+keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@20
+ (byte~) keyboard_event_scan::$19 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_LSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$19
+ to:keyboard_event_scan::@9
+keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$24 ← call keyboard_event_pressed (byte) KEY_CTRL
+ (boolean~) keyboard_event_scan::$25 ← (byte~) keyboard_event_scan::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$26 ← ! (boolean~) keyboard_event_scan::$25
+ if((boolean~) keyboard_event_scan::$26) goto keyboard_event_scan::@11
+ to:keyboard_event_scan::@23
+keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$23 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_RSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$23
+ to:keyboard_event_scan::@10
+keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@10 keyboard_event_scan::@23
+ (byte~) keyboard_event_scan::$28 ← call keyboard_event_pressed (byte) KEY_COMMODORE
+ (boolean~) keyboard_event_scan::$29 ← (byte~) keyboard_event_scan::$28 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$30 ← ! (boolean~) keyboard_event_scan::$29
+ if((boolean~) keyboard_event_scan::$30) goto keyboard_event_scan::@12
+ to:keyboard_event_scan::@24
+keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@10
+ (byte~) keyboard_event_scan::$27 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_CTRL
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$27
+ to:keyboard_event_scan::@11
+keyboard_event_scan::@12: scope:[keyboard_event_scan] from keyboard_event_scan::@11 keyboard_event_scan::@24
+ to:keyboard_event_scan::@return
+keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@11
+ (byte~) keyboard_event_scan::$31 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_COMMODORE
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$31
+ to:keyboard_event_scan::@12
+keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@12
+ return
+ to:@return
+@5: scope:[] from @4
+ to:@6
+keyboard_event_pressed: scope:[keyboard_event_pressed] from
+ (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3
+ (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0)
+ (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode & (byte/signed byte/word/signed word/dword/signed dword) 7
+ (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits & *((byte[8]) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1)
+ (byte) keyboard_event_pressed::return ← (byte~) keyboard_event_pressed::$2
+ to:keyboard_event_pressed::@return
+keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed keyboard_event_pressed::@1
+ (byte) keyboard_event_pressed::return ← (byte) keyboard_event_pressed::return
+ return (byte) keyboard_event_pressed::return
+ to:@return
+keyboard_event_pressed::@1: scope:[keyboard_event_pressed] from
+ to:keyboard_event_pressed::@return
+@6: scope:[] from @5
+ to:@7
+keyboard_event_get: scope:[keyboard_event_get] from
+ (boolean~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_get::$1 ← ! (boolean~) keyboard_event_get::$0
+ if((boolean~) keyboard_event_get::$1) goto keyboard_event_get::@1
+ to:keyboard_event_get::@3
+keyboard_event_get::@1: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@5
+ (byte) keyboard_events_size ← -- (byte) keyboard_events_size
+ (byte) keyboard_event_get::return ← *((byte[8]) keyboard_events + (byte) keyboard_events_size)
+ to:keyboard_event_get::@return
+keyboard_event_get::@3: scope:[keyboard_event_get] from keyboard_event_get
+ (byte) keyboard_event_get::return ← (byte/word/signed word/dword/signed dword) 255
+ to:keyboard_event_get::@return
+keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get::@1 keyboard_event_get::@2 keyboard_event_get::@3
+ (byte) keyboard_event_get::return ← (byte) keyboard_event_get::return
+ return (byte) keyboard_event_get::return
+ to:@return
+keyboard_event_get::@4: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@2
+keyboard_event_get::@2: scope:[keyboard_event_get] from keyboard_event_get::@4 keyboard_event_get::@6
+ to:keyboard_event_get::@return
+keyboard_event_get::@5: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@1
+keyboard_event_get::@6: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@2
+@7: scope:[] from @6
+ to:@8
main: scope:[main] from
*((byte*) BORDERCOL) ← (byte) GREEN
to:main::@1
@@ -962,9 +1416,9 @@ main::@6: scope:[main] from
main::@return: scope:[main] from main::@3
return
to:@return
-@5: scope:[] from @4
+@8: scope:[] from @7
(byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024
- to:@6
+ to:@9
menu: scope:[menu] from
to:menu::@1
menu::@1: scope:[menu] from menu menu::@6
@@ -1019,8 +1473,8 @@ menu::@14: scope:[menu] from
to:menu::@6
menu::@15: scope:[menu] from
to:menu::@3
-@6: scope:[] from @5
- to:@7
+@9: scope:[] from @8
+ to:@10
pressed: scope:[pressed] from
*((byte*) BGCOL) ← ++ *((byte*) BGCOL)
to:pressed::@1
@@ -1050,13 +1504,16 @@ pressed::@8: scope:[pressed] from
to:pressed::@4
pressed::@9: scope:[pressed] from
to:pressed::@3
-@7: scope:[] from @6
+@10: scope:[] from @9
call main
to:@end
-@end: scope:[] from @7
+@end: scope:[] from @10
Removing unused procedure keyboard_init
Removing unused procedure keyboard_get_keycode
+Removing unused procedure keyboard_event_scan
+Removing unused procedure keyboard_event_get
+Removing unused procedure keyboard_event_pressed
Eliminating unused variable (byte*) PROCPORT_DDR and assignment [0] (byte*) PROCPORT_DDR ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
Eliminating unused variable (byte) PROCPORT_DDR_MEMORY_MASK and assignment [1] (byte) PROCPORT_DDR_MEMORY_MASK ← (byte/signed byte/word/signed word/dword/signed dword) 7
Eliminating unused variable (byte*) PROCPORT and assignment [2] (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
@@ -1131,6 +1588,13 @@ Eliminating unused variable (byte) KEY_CTRL and assignment [123] (byte) KEY_CTRL
Eliminating unused variable (byte) KEY_COMMODORE and assignment [126] (byte) KEY_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 61
Eliminating unused variable (byte) KEY_RUNSTOP and assignment [128] (byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
Eliminating unused variable (byte[]) keyboard_char_keycodes and assignment [129] (byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
+Eliminating unused variable (byte[8]) keyboard_events and assignment [147] (byte[8]) keyboard_events ← { fill( 8, 0) }
+Eliminating unused variable (byte) keyboard_events_size and assignment [148] (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+Eliminating unused variable (byte) keyboard_modifiers and assignment [149] (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+Eliminating unused variable (byte) KEY_MODIFIER_CTRL and assignment [152] (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+Eliminating unused variable (byte) KEY_MODIFIER_COMMODORE and assignment [153] (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+Eliminating unused variable (byte) KEY_MODIFIER_SHIFT and assignment [155] (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+Eliminating unused variable (byte[8]) keyboard_scan_values and assignment [156] (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
Eliminating unused variable - keeping the call (void~) main::$0
Eliminating unused variable - keeping the call (void~) menu::$3
Eliminating unused variable (byte) KEY_3 and assignment [6] (byte) KEY_3 ← (byte/signed byte/word/signed word/dword/signed dword) 8
@@ -1179,12 +1643,18 @@ Eliminating unused variable (byte) KEY_1 and assignment [51] (byte) KEY_1 ← (b
Eliminating unused variable (byte) KEY_ARROW_LEFT and assignment [52] (byte) KEY_ARROW_LEFT ← (byte/signed byte/word/signed word/dword/signed dword) 57
Eliminating unused variable (byte) KEY_2 and assignment [53] (byte) KEY_2 ← (byte/signed byte/word/signed word/dword/signed dword) 59
Eliminating unused variable (byte) KEY_Q and assignment [55] (byte) KEY_Q ← (byte/signed byte/word/signed word/dword/signed dword) 62
+Eliminating unused variable (byte~) $0 and assignment [75] (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+Eliminating unused variable (byte) KEY_MODIFIER_LSHIFT and assignment [27] (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+Eliminating unused variable (byte) KEY_MODIFIER_RSHIFT and assignment [28] (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
Removing empty block @1
Removing empty block keyboard_matrix_read::@1
Removing empty block @2
Removing empty block keyboard_key_pressed::@1
Removing empty block @3
Removing empty block @4
+Removing empty block @5
+Removing empty block @6
+Removing empty block @7
Removing empty block main::@4
Removing empty block main::@3
Removing empty block main::@5
@@ -1196,7 +1666,7 @@ Removing empty block menu::@10
Removing empty block menu::@12
Removing empty block menu::@14
Removing empty block menu::@15
-Removing empty block @6
+Removing empty block @9
Removing empty block pressed::@5
Removing empty block pressed::@3
Removing empty block pressed::@6
@@ -1232,8 +1702,8 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
(byte) KEY_I#0 ← (byte/signed byte/word/signed word/dword/signed dword) 33
(byte) KEY_SPACE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 60
(byte[8]) keyboard_matrix_row_bitmask#0 ← { (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_matrix_col_bitmask#0 ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
- to:@5
+ (byte[8]) keyboard_matrix_col_bitmask#0 ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ to:@8
keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed
(byte) keyboard_matrix_read::rowid#1 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::rowid#0 )
*((byte*) CIA1_PORT_A#0) ← *((byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#1)
@@ -1260,7 +1730,7 @@ keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_presse
(byte) keyboard_key_pressed::colidx#1 ← phi( keyboard_key_pressed/(byte) keyboard_key_pressed::colidx#0 )
(byte) keyboard_matrix_read::return#4 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::return#2 )
(byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#4
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#1)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#1)
(byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$3
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
@@ -1268,8 +1738,8 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p
(byte) keyboard_key_pressed::return#1 ← (byte) keyboard_key_pressed::return#6
return
to:@return
-main: scope:[main] from @7
- (byte*) SCREEN#12 ← phi( @7/(byte*) SCREEN#14 )
+main: scope:[main] from @10
+ (byte*) SCREEN#12 ← phi( @10/(byte*) SCREEN#14 )
*((byte*) BORDERCOL#0) ← (byte) GREEN#0
to:main::@1
main::@1: scope:[main] from main main::@7
@@ -1286,9 +1756,9 @@ main::@7: scope:[main] from main::@2
main::@return: scope:[main] from main::@1
return
to:@return
-@5: scope:[] from @begin
+@8: scope:[] from @begin
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
- to:@7
+ to:@10
menu: scope:[menu] from main::@2
(byte*) SCREEN#9 ← phi( main::@2/(byte*) SCREEN#10 )
to:menu::@1
@@ -1381,17 +1851,17 @@ pressed::@4: scope:[pressed] from pressed::@10
pressed::@return: scope:[pressed] from pressed::@1 pressed::@10
return
to:@return
-@7: scope:[] from @5
- (byte*) SCREEN#14 ← phi( @5/(byte*) SCREEN#0 )
+@10: scope:[] from @8
+ (byte*) SCREEN#14 ← phi( @8/(byte*) SCREEN#0 )
call main param-assignment
- to:@8
-@8: scope:[] from @7
+ to:@11
+@11: scope:[] from @10
to:@end
-@end: scope:[] from @8
+@end: scope:[] from @11
SYMBOL TABLE SSA
-(label) @5
-(label) @7
+(label) @10
+(label) @11
(label) @8
(label) @begin
(label) @end
@@ -1461,8 +1931,8 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#9
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
-(byte[]) keyboard_matrix_col_bitmask
-(byte[]) keyboard_matrix_col_bitmask#0
+(byte[8]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask#0
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -1520,7 +1990,7 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) menu::@18
Culled Empty Block (label) pressed::@4
-Culled Empty Block (label) @8
+Culled Empty Block (label) @11
Succesful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (boolean~) menu::$2 ← (byte~) menu::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) menu::$1 ← (byte~) menu::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (boolean~) menu::$6 ← (byte~) menu::$4 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) menu::$5 ← (byte~) menu::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -1603,7 +2073,7 @@ Constant (const byte) KEY_C#0 = 20
Constant (const byte) KEY_I#0 = 33
Constant (const byte) KEY_SPACE#0 = 60
Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { 254, 253, 251, 247, 239, 223, 191, 127 }
-Constant (const byte[]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 }
+Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 }
Constant (const byte*) SCREEN#0 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) keyboard_key_pressed::key#0 = KEY_C#0
@@ -1612,7 +2082,7 @@ Constant (const byte) keyboard_key_pressed::key#2 = KEY_E#0
Constant (const byte) keyboard_key_pressed::key#3 = KEY_SPACE#0
Succesful SSA optimization Pass2ConstantIdentification
Culled Empty Block (label) main::@7
-Culled Empty Block (label) @5
+Culled Empty Block (label) @8
Succesful SSA optimization Pass2CullEmptyBlocks
Not aliassing across scopes: keyboard_matrix_read::rowid#0 keyboard_key_pressed::rowidx#0
Not aliassing across scopes: keyboard_matrix_read::return#2 keyboard_matrix_read::return#0
@@ -1646,10 +2116,10 @@ Constant inlined keyboard_key_pressed::key#1 = (const byte) KEY_I#0
Constant inlined keyboard_key_pressed::key#2 = (const byte) KEY_E#0
Constant inlined keyboard_key_pressed::key#3 = (const byte) KEY_SPACE#0
Succesful SSA optimization Pass2ConstantInlining
-Block Sequence Planned @begin @7 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@return menu::@2 menu::@16 menu::@9 menu::@4 menu::@17 menu::@11 menu::@5 menu::@19 menu::@13 menu::@6 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return pressed pressed::@1 pressed::@return pressed::@2 pressed::@10
-Block Sequence Planned @begin @7 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@return menu::@2 menu::@16 menu::@9 menu::@4 menu::@17 menu::@11 menu::@5 menu::@19 menu::@13 menu::@6 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return pressed pressed::@1 pressed::@return pressed::@2 pressed::@10
+Block Sequence Planned @begin @10 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@return menu::@2 menu::@16 menu::@9 menu::@4 menu::@17 menu::@11 menu::@5 menu::@19 menu::@13 menu::@6 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return pressed pressed::@1 pressed::@return pressed::@2 pressed::@10
+Block Sequence Planned @begin @10 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@return menu::@2 menu::@16 menu::@9 menu::@4 menu::@17 menu::@11 menu::@5 menu::@19 menu::@13 menu::@6 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return pressed pressed::@1 pressed::@return pressed::@2 pressed::@10
Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @7
+Adding NOP phi() at start of @10
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of menu
@@ -1674,9 +2144,9 @@ Propagating live ranges...
Propagating live ranges...
Created 1 initial phi equivalence classes
Coalesced down to 1 phi equivalence classes
-Block Sequence Planned @begin @7 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@return menu::@2 menu::@16 menu::@9 menu::@4 menu::@17 menu::@11 menu::@5 menu::@19 menu::@13 menu::@6 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return pressed pressed::@1 pressed::@return pressed::@2 pressed::@10
+Block Sequence Planned @begin @10 @end main main::@1 main::@return main::@2 menu menu::@1 menu::@return menu::@2 menu::@16 menu::@9 menu::@4 menu::@17 menu::@11 menu::@5 menu::@19 menu::@13 menu::@6 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return pressed pressed::@1 pressed::@return pressed::@2 pressed::@10
Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @7
+Adding NOP phi() at start of @10
Adding NOP phi() at start of @end
Adding NOP phi() at start of main::@2
Adding NOP phi() at start of menu
@@ -1696,14 +2166,14 @@ Propagating live ranges...
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi() [ ] ( )
- to:@7
-@7: scope:[] from @begin
+ to:@10
+@10: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
-@end: scope:[] from @7
+@end: scope:[] from @10
[3] phi() [ ] ( )
-main: scope:[main] from @7
+main: scope:[main] from @10
[4] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] )
to:main::@1
main::@1: scope:[main] from main main::@2
@@ -1777,7 +2247,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from menu::@2 menu::@4 menu:
to:keyboard_key_pressed::@2
keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_pressed
[40] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
- [41] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] )
+ [41] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] )
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
[42] return [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] )
@@ -1810,35 +2280,35 @@ pressed::@10: scope:[pressed] from pressed::@2
DOMINATORS
@begin dominated by @begin
-@7 dominated by @begin @7
-@end dominated by @end @begin @7
-main dominated by main @begin @7
-main::@1 dominated by main main::@1 @begin @7
-main::@return dominated by main::@return main main::@1 @begin @7
-main::@2 dominated by main main::@1 main::@2 @begin @7
-menu dominated by main main::@1 main::@2 @begin menu @7
-menu::@1 dominated by main main::@1 main::@2 @begin menu::@1 menu @7
-menu::@return dominated by main main::@1 main::@2 @begin menu::@1 menu::@return menu @7
-menu::@2 dominated by main main::@1 main::@2 @begin menu::@1 menu::@2 menu @7
-menu::@16 dominated by main main::@1 main::@2 @begin menu::@1 menu::@2 menu @7 menu::@16
-menu::@9 dominated by main main::@1 main::@2 @begin menu::@1 menu::@2 menu menu::@9 @7 menu::@16
-menu::@4 dominated by main main::@1 main::@2 @begin menu::@4 menu::@1 menu::@2 menu @7 menu::@16
-menu::@17 dominated by main main::@1 main::@2 @begin menu::@4 menu::@1 menu::@2 menu @7 menu::@17 menu::@16
-menu::@11 dominated by main main::@1 main::@2 @begin menu::@4 menu::@1 menu::@2 menu @7 menu::@11 menu::@17 menu::@16
-menu::@5 dominated by main main::@1 main::@2 menu::@5 @begin menu::@4 menu::@1 menu::@2 menu @7 menu::@17 menu::@16
-menu::@19 dominated by main main::@1 main::@2 menu::@5 @begin menu::@4 menu::@1 menu::@2 menu menu::@19 @7 menu::@17 menu::@16
-menu::@13 dominated by main main::@1 main::@2 menu::@5 @begin menu::@4 menu::@1 menu::@2 menu menu::@19 @7 menu::@13 menu::@17 menu::@16
-menu::@6 dominated by main main::@1 main::@2 menu::@5 @begin menu::@6 menu::@4 menu::@1 menu::@2 menu menu::@19 @7 menu::@17 menu::@16
-keyboard_key_pressed dominated by main main::@1 main::@2 @begin menu::@1 menu::@2 menu keyboard_key_pressed @7
-keyboard_key_pressed::@2 dominated by main main::@1 main::@2 keyboard_key_pressed::@2 @begin menu::@1 menu::@2 menu keyboard_key_pressed @7
-keyboard_key_pressed::@return dominated by main keyboard_key_pressed::@return main::@1 main::@2 keyboard_key_pressed::@2 @begin menu::@1 menu::@2 menu keyboard_key_pressed @7
-keyboard_matrix_read dominated by keyboard_matrix_read main main::@1 main::@2 @begin menu::@1 menu::@2 menu keyboard_key_pressed @7
-keyboard_matrix_read::@return dominated by keyboard_matrix_read main main::@1 main::@2 @begin menu::@1 menu::@2 menu keyboard_matrix_read::@return keyboard_key_pressed @7
-pressed dominated by main main::@1 main::@2 @begin pressed menu::@1 menu::@2 menu menu::@9 @7 menu::@16
-pressed::@1 dominated by main main::@1 main::@2 pressed::@1 @begin pressed menu::@1 menu::@2 menu menu::@9 @7 menu::@16
-pressed::@return dominated by main main::@1 main::@2 pressed::@1 @begin pressed menu::@1 menu::@2 menu menu::@9 pressed::@return @7 menu::@16
-pressed::@2 dominated by main main::@1 pressed::@2 main::@2 pressed::@1 @begin pressed menu::@1 menu::@2 menu menu::@9 @7 menu::@16
-pressed::@10 dominated by pressed::@10 main main::@1 pressed::@2 main::@2 pressed::@1 @begin pressed menu::@1 menu::@2 menu menu::@9 @7 menu::@16
+@10 dominated by @10 @begin
+@end dominated by @end @10 @begin
+main dominated by main @10 @begin
+main::@1 dominated by main main::@1 @10 @begin
+main::@return dominated by main::@return main main::@1 @10 @begin
+main::@2 dominated by main main::@1 main::@2 @10 @begin
+menu dominated by main main::@1 main::@2 @10 @begin menu
+menu::@1 dominated by main main::@1 main::@2 @10 @begin menu::@1 menu
+menu::@return dominated by main main::@1 main::@2 @10 @begin menu::@1 menu::@return menu
+menu::@2 dominated by main main::@1 main::@2 @10 @begin menu::@1 menu::@2 menu
+menu::@16 dominated by main main::@1 main::@2 @10 @begin menu::@1 menu::@2 menu menu::@16
+menu::@9 dominated by main main::@1 main::@2 @10 @begin menu::@1 menu::@2 menu menu::@9 menu::@16
+menu::@4 dominated by main main::@1 main::@2 @10 @begin menu::@4 menu::@1 menu::@2 menu menu::@16
+menu::@17 dominated by main main::@1 main::@2 @10 @begin menu::@4 menu::@1 menu::@2 menu menu::@17 menu::@16
+menu::@11 dominated by main main::@1 main::@2 @10 @begin menu::@4 menu::@1 menu::@2 menu menu::@11 menu::@17 menu::@16
+menu::@5 dominated by main main::@1 main::@2 @10 menu::@5 @begin menu::@4 menu::@1 menu::@2 menu menu::@17 menu::@16
+menu::@19 dominated by main main::@1 main::@2 @10 menu::@5 @begin menu::@4 menu::@1 menu::@2 menu menu::@19 menu::@17 menu::@16
+menu::@13 dominated by main main::@1 main::@2 @10 menu::@5 @begin menu::@4 menu::@1 menu::@2 menu menu::@19 menu::@13 menu::@17 menu::@16
+menu::@6 dominated by main main::@1 main::@2 @10 menu::@5 @begin menu::@6 menu::@4 menu::@1 menu::@2 menu menu::@19 menu::@17 menu::@16
+keyboard_key_pressed dominated by main main::@1 main::@2 @10 @begin menu::@1 menu::@2 menu keyboard_key_pressed
+keyboard_key_pressed::@2 dominated by main main::@1 main::@2 keyboard_key_pressed::@2 @10 @begin menu::@1 menu::@2 menu keyboard_key_pressed
+keyboard_key_pressed::@return dominated by main keyboard_key_pressed::@return main::@1 main::@2 keyboard_key_pressed::@2 @10 @begin menu::@1 menu::@2 menu keyboard_key_pressed
+keyboard_matrix_read dominated by keyboard_matrix_read main main::@1 main::@2 @10 @begin menu::@1 menu::@2 menu keyboard_key_pressed
+keyboard_matrix_read::@return dominated by keyboard_matrix_read main main::@1 main::@2 @10 @begin menu::@1 menu::@2 menu keyboard_matrix_read::@return keyboard_key_pressed
+pressed dominated by main main::@1 main::@2 @10 @begin pressed menu::@1 menu::@2 menu menu::@9 menu::@16
+pressed::@1 dominated by main main::@1 main::@2 @10 pressed::@1 @begin pressed menu::@1 menu::@2 menu menu::@9 menu::@16
+pressed::@return dominated by main main::@1 main::@2 @10 pressed::@1 @begin pressed menu::@1 menu::@2 menu menu::@9 pressed::@return menu::@16
+pressed::@2 dominated by main main::@1 pressed::@2 main::@2 @10 pressed::@1 @begin pressed menu::@1 menu::@2 menu menu::@9 menu::@16
+pressed::@10 dominated by pressed::@10 main main::@1 pressed::@2 main::@2 @10 pressed::@1 @begin pressed menu::@1 menu::@2 menu menu::@9 menu::@16
NATURAL LOOPS
Found back edge: Loop head: main::@1 tails: main::@2 blocks: null
@@ -1893,7 +2363,7 @@ VARIABLE REGISTER WEIGHTS
(byte) keyboard_key_pressed::return#4 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 4.0
-(byte[]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte) keyboard_matrix_read::return
(byte) keyboard_matrix_read::return#0 1.3333333333333333
@@ -1980,15 +2450,15 @@ INITIAL ASM
.label SCREEN = $400
//SEG2 @begin
bbegin:
-//SEG3 [1] phi from @begin to @7 [phi:@begin->@7]
-b7_from_bbegin:
- jmp b7
-//SEG4 @7
-b7:
+//SEG3 [1] phi from @begin to @10 [phi:@begin->@10]
+b10_from_bbegin:
+ jmp b10
+//SEG4 @10
+b10:
//SEG5 [2] call main param-assignment [ ] ( )
jsr main
-//SEG6 [3] phi from @7 to @end [phi:@7->@end]
-bend_from_b7:
+//SEG6 [3] phi from @10 to @end [phi:@10->@end]
+bend_from_b10:
jmp bend
//SEG7 @end
bend:
@@ -2172,7 +2642,7 @@ keyboard_key_pressed: {
//SEG68 [40] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ) -- vbuz1=vbuz2
lda keyboard_matrix_read.return_2
sta _2
- //SEG69 [41] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] ) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3
+ //SEG69 [41] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] ) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3
lda _2
ldy colidx
and keyboard_matrix_col_bitmask,y
@@ -2254,7 +2724,7 @@ Statement [35] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pre
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ keyboard_key_pressed::key#4 ]
Statement [36] (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:8::keyboard_key_pressed:13 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ keyboard_key_pressed::colidx#0 ]
-Statement [41] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
+Statement [41] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
Statement [43] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:8::keyboard_key_pressed:13::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 ] main:2::menu:8::keyboard_key_pressed:20::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 ] main:2::menu:8::keyboard_key_pressed:27::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
Statement [44] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:8::keyboard_key_pressed:20::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:8::keyboard_key_pressed:27::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a
Statement [4] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
@@ -2262,7 +2732,7 @@ Statement [24] *((const byte*) BORDERCOL#0) ← (const byte) RED#0 [ ] ( main:2:
Statement [31] *((const byte*) BORDERCOL#0) ← (const byte) GREEN#0 [ ] ( main:2::menu:8 [ ] ) always clobbers reg byte a
Statement [35] (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:8::keyboard_key_pressed:13 [ keyboard_key_pressed::key#4 keyboard_key_pressed::colidx#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::key#4 keyboard_key_pressed::colidx#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::key#4 keyboard_key_pressed::colidx#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::key#4 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
Statement [36] (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:8::keyboard_key_pressed:13 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a
-Statement [41] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
+Statement [41] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
Statement [43] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#0) [ ] ( main:2::menu:8::keyboard_key_pressed:13::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 ] main:2::menu:8::keyboard_key_pressed:20::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 ] main:2::menu:8::keyboard_key_pressed:27::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
Statement [44] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:8::keyboard_key_pressed:20::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:8::keyboard_key_pressed:27::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50::keyboard_matrix_read:38 [ keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a
Potential registers zp ZP_BYTE:2 [ keyboard_key_pressed::key#4 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
@@ -2327,15 +2797,15 @@ ASSEMBLER BEFORE OPTIMIZATION
.label SCREEN = $400
//SEG2 @begin
bbegin:
-//SEG3 [1] phi from @begin to @7 [phi:@begin->@7]
-b7_from_bbegin:
- jmp b7
-//SEG4 @7
-b7:
+//SEG3 [1] phi from @begin to @10 [phi:@begin->@10]
+b10_from_bbegin:
+ jmp b10
+//SEG4 @10
+b10:
//SEG5 [2] call main param-assignment [ ] ( )
jsr main
-//SEG6 [3] phi from @7 to @end [phi:@7->@end]
-bend_from_b7:
+//SEG6 [3] phi from @10 to @end [phi:@10->@end]
+bend_from_b10:
jmp bend
//SEG7 @end
bend:
@@ -2494,7 +2964,7 @@ keyboard_key_pressed: {
b2:
//SEG68 [40] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
// (byte~) keyboard_key_pressed::$2 = (byte) keyboard_matrix_read::return#2 // register copy reg byte a
- //SEG69 [41] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy
+ //SEG69 [41] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy
and keyboard_matrix_col_bitmask,y
jmp breturn
//SEG70 keyboard_key_pressed::@return
@@ -2557,7 +3027,7 @@ pressed: {
keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80
ASSEMBLER OPTIMIZATIONS
-Removing instruction jmp b7
+Removing instruction jmp b10
Removing instruction jmp bend
Removing instruction jmp b1
Removing instruction jmp breturn
@@ -2587,8 +3057,8 @@ Replacing label b4_from_b16 with b4
Replacing label b5_from_b17 with b5
Replacing label b2_from_b1 with b2
Removing instruction bbegin:
-Removing instruction b7_from_bbegin:
-Removing instruction bend_from_b7:
+Removing instruction b10_from_bbegin:
+Removing instruction bend_from_b10:
Removing instruction b2_from_b1:
Removing instruction menu_from_b2:
Removing instruction b2_from_b1:
@@ -2601,7 +3071,7 @@ Removing instruction keyboard_key_pressed_from_b5:
Removing instruction b2_from_b1:
Removing instruction keyboard_key_pressed_from_b2:
Succesful ASM optimization Pass5RedundantLabelElimination
-Removing instruction b7:
+Removing instruction b10:
Removing instruction bend:
Removing instruction breturn:
Removing instruction b16:
@@ -2630,7 +3100,7 @@ Removing instruction b1:
Succesful ASM optimization Pass5UnusedLabelElimination
FINAL SYMBOL TABLE
-(label) @7
+(label) @10
(label) @begin
(label) @end
(byte*) BGCOL
@@ -2671,8 +3141,8 @@ FINAL SYMBOL TABLE
(byte) keyboard_key_pressed::return#4 reg byte a 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(byte[]) keyboard_matrix_col_bitmask
-(const byte[]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+(byte[8]) keyboard_matrix_col_bitmask
+(const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -2748,11 +3218,11 @@ Score: 3754
.const KEY_SPACE = $3c
.label SCREEN = $400
//SEG2 @begin
-//SEG3 [1] phi from @begin to @7 [phi:@begin->@7]
-//SEG4 @7
+//SEG3 [1] phi from @begin to @10 [phi:@begin->@10]
+//SEG4 @10
//SEG5 [2] call main param-assignment [ ] ( )
jsr main
-//SEG6 [3] phi from @7 to @end [phi:@7->@end]
+//SEG6 [3] phi from @10 to @end [phi:@10->@end]
//SEG7 @end
//SEG8 main
main: {
@@ -2873,7 +3343,7 @@ keyboard_key_pressed: {
//SEG67 keyboard_key_pressed::@2
//SEG68 [40] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
// (byte~) keyboard_key_pressed::$2 = (byte) keyboard_matrix_read::return#2 // register copy reg byte a
- //SEG69 [41] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy
+ //SEG69 [41] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuyy
and keyboard_matrix_col_bitmask,y
//SEG70 keyboard_key_pressed::@return
//SEG71 [42] return [ keyboard_key_pressed::return#0 ] ( main:2::menu:8::keyboard_key_pressed:13 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:20 [ keyboard_key_pressed::return#0 ] main:2::menu:8::keyboard_key_pressed:27 [ keyboard_key_pressed::return#0 ] main:2::menu:8::pressed:18::keyboard_key_pressed:50 [ keyboard_key_pressed::return#0 ] )
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.sym b/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.sym
index f9c9cb21c..42a9f5d2c 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.sym
+++ b/src/test/java/dk/camelot64/kickc/test/ref/keyboard-glitch.sym
@@ -1,4 +1,4 @@
-(label) @7
+(label) @10
(label) @begin
(label) @end
(byte*) BGCOL
@@ -39,8 +39,8 @@
(byte) keyboard_key_pressed::return#4 reg byte a 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(byte[]) keyboard_matrix_col_bitmask
-(const byte[]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+(byte[8]) keyboard_matrix_col_bitmask
+(const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.cfg b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.cfg
index 2b663a003..e1bbc1ed4 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.cfg
+++ b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.cfg
@@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
- to:@5
-@5: scope:[] from @begin
+ to:@8
+@8: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
-@end: scope:[] from @5
+@end: scope:[] from @8
[3] phi() [ ] ( )
-main: scope:[main] from @5
+main: scope:[main] from @8
[4] phi() [ ] ( main:2 [ ] )
[5] call keyboard_init param-assignment [ ] ( main:2 [ ] )
to:main::@1
@@ -42,7 +42,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@9
to:keyboard_key_pressed::@2
keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_pressed
[19] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::$2 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::$2 ] )
- [20] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] )
+ [20] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] )
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
[21] return [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] )
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.log b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.log
index 97730267e..1ed214b1a 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.log
+++ b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.log
@@ -121,7 +121,7 @@ const byte[] keyboard_char_keycodes = {
byte[8] keyboard_matrix_row_bitmask = { %11111110, %11111101, %11111011, %11110111, %11101111, %11011111, %10111111, %01111111 };
// Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7)
-byte[] keyboard_matrix_col_bitmask = { %00000001, %00000010, %00000100, %00001000, %00010000, %00100000, %01000000, %10000000 };
+byte[8] keyboard_matrix_col_bitmask = { %00000001, %00000010, %00000100, %00001000, %00010000, %00100000, %01000000, %10000000 };
// Initialize keyboard reading by setting CIA#$ Data Direction Registers
void keyboard_init() {
@@ -141,7 +141,7 @@ byte keyboard_matrix_read(byte rowid) {
return row_pressed_bits;
}
-// Determines whether a specific key is currently pressed
+// Determines whether a specific key is currently pressed by accessing the matrix directly
// The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7)
// All keys exist as as KEY_XXX constants.
// Returns zero if the key is not pressed and a non-zero value if the key is currently pressed
@@ -158,6 +158,97 @@ byte keyboard_key_pressed(byte key) {
byte keyboard_get_keycode(byte ch) {
return keyboard_char_keycodes[ch];
}
+
+// Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan()
+byte[8] keyboard_events;
+// Keyboard event buffer size. The number of events currently in the event buffer
+byte keyboard_events_size = 0;
+// Current keyboard modifiers (left shift, right shift, ctrl, commodore)
+byte keyboard_modifiers = 0;
+// Left shift is pressed
+const byte KEY_MODIFIER_LSHIFT = 1;
+// Right shift is pressed
+const byte KEY_MODIFIER_RSHIFT = 2;
+// CTRL is pressed
+const byte KEY_MODIFIER_CTRL = 4;
+// Commodore is pressed
+const byte KEY_MODIFIER_COMMODORE = 8;
+// Any shift is pressed
+const byte KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT;
+// The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event()
+byte[8] keyboard_scan_values;
+
+// Scans the entire matrix to determine which keys have been pressed/depressed.
+// Generates keyboard events into the event buffer. Events can be read using keyboard_event_get().
+// Handles debounce and only generates events when the status of a key changes.
+// Also stores current status of modifiers in keyboard_modifiers.
+void keyboard_event_scan() {
+ byte keycode = 0;
+ for(byte row : 0..7) {
+ byte row_scan = keyboard_matrix_read(row);
+ if(row_scan!=keyboard_scan_values[row]) {
+ // Something has changed on the keyboard row - check each column
+ for(byte col : 0..7){
+ // XOR of row scan with the last seen row scan AND'ed with the col bitmask will be non-0 if the key status is changed
+ if(((row_scan^keyboard_scan_values[row])&keyboard_matrix_col_bitmask[col])!=0) {
+ // Key(row, col) status has changed. We have an event.
+ // Only process event if there is still room in the buffer
+ if(keyboard_events_size!=8) {
+ // AND of row scan and bit mask determines if key is pressed or released
+ byte event_type = row_scan&keyboard_matrix_col_bitmask[col];
+ if(event_type==0) {
+ // Key released
+ keyboard_events[keyboard_events_size++] = keycode|$40;
+ } else {
+ // Key pressed
+ keyboard_events[keyboard_events_size++] = keycode;
+ }
+ }
+ }
+ keycode++;
+ }
+ // Store the current keyboard status for the row to debounce
+ keyboard_scan_values[row] = row_scan;
+ } else {
+ // Update current keycode
+ keycode = keycode + 8;
+ }
+ }
+ // Update the keyboard modifiers
+ keyboard_modifiers = 0;
+ if(keyboard_event_pressed(KEY_LSHIFT)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_LSHIFT;
+ }
+ if(keyboard_event_pressed(KEY_RSHIFT)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_RSHIFT;
+ }
+ if(keyboard_event_pressed(KEY_CTRL)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_CTRL;
+ }
+ if(keyboard_event_pressed(KEY_COMMODORE)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_COMMODORE;
+ }
+}
+
+// Determine if a specific key is currently pressed based on the last keyboard_event_scan()
+// Returns 0 is not pressed and non-0 if pressed
+byte keyboard_event_pressed(byte keycode) {
+ byte row_bits = keyboard_scan_values[keycode>>3];
+ return row_bits & keyboard_matrix_col_bitmask[keycode&7];
+}
+
+// Get the next event from the keyboard event buffer.
+// Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process.
+// The buffer is filled by keyboard_scan()
+byte keyboard_event_get() {
+ if(keyboard_events_size==0) {
+ return $ff;
+ } else {
+ return keyboard_events[--keyboard_events_size];
+ }
+}
+
+
Importing c64.kc
PARSING src/test/java/dk/camelot64/kickc/test/kc/c64.kc
// Commodore 64 Registers and Constants
@@ -254,6 +345,10 @@ const byte LIGHT_GREEN = $d;
const byte LIGHT_BLUE = $e;
const byte LIGHT_GREY = $f;
+Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+Adding pre/post-modifier (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+Adding pre/post-modifier (byte) keyboard_events_size ← -- (byte) keyboard_events_size
STATEMENTS
(byte*) PROCPORT_DDR ← (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -387,7 +482,7 @@ STATEMENTS
(byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
(byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(byte[8]) 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_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ (byte[8]) keyboard_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
proc (void()) keyboard_init()
*((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255
*((byte*) CIA1_PORT_B_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -410,7 +505,7 @@ proc (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
(byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key >> (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) keyboard_key_pressed::rowidx ← (byte~) keyboard_key_pressed::$1
(byte~) keyboard_key_pressed::$2 ← call keyboard_matrix_read (byte) keyboard_key_pressed::rowidx
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
(byte) keyboard_key_pressed::return ← (byte~) keyboard_key_pressed::$3
goto keyboard_key_pressed::@return
keyboard_key_pressed::@return:
@@ -424,6 +519,122 @@ keyboard_get_keycode::@return:
(byte) keyboard_get_keycode::return ← (byte) keyboard_get_keycode::return
return (byte) keyboard_get_keycode::return
endproc // keyboard_get_keycode()
+ (byte[8]) keyboard_events ← { fill( 8, 0) }
+ (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
+ (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+ (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+ (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+ (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
+proc (void()) keyboard_event_scan()
+ (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0
+keyboard_event_scan::@1:
+ (byte~) keyboard_event_scan::$0 ← call keyboard_matrix_read (byte) keyboard_event_scan::row
+ (byte) keyboard_event_scan::row_scan ← (byte~) keyboard_event_scan::$0
+ (boolean~) keyboard_event_scan::$1 ← (byte) keyboard_event_scan::row_scan != *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (boolean~) keyboard_event_scan::$2 ← ! (boolean~) keyboard_event_scan::$1
+ if((boolean~) keyboard_event_scan::$2) goto keyboard_event_scan::@2
+ (byte) keyboard_event_scan::col ← (byte/signed byte/word/signed word/dword/signed dword) 0
+keyboard_event_scan::@3:
+ (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan ^ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (boolean~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$6 ← ! (boolean~) keyboard_event_scan::$5
+ if((boolean~) keyboard_event_scan::$6) goto keyboard_event_scan::@4
+ (boolean~) keyboard_event_scan::$7 ← (byte) keyboard_events_size != (byte/signed byte/word/signed word/dword/signed dword) 8
+ (boolean~) keyboard_event_scan::$8 ← ! (boolean~) keyboard_event_scan::$7
+ if((boolean~) keyboard_event_scan::$8) goto keyboard_event_scan::@5
+ (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_scan::row_scan & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (byte) keyboard_event_scan::event_type ← (byte~) keyboard_event_scan::$9
+ (boolean~) keyboard_event_scan::$10 ← (byte) keyboard_event_scan::event_type == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$11 ← ! (boolean~) keyboard_event_scan::$10
+ if((boolean~) keyboard_event_scan::$11) goto keyboard_event_scan::@6
+ (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode | (byte/signed byte/word/signed word/dword/signed dword) 64
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte/word/dword~) keyboard_event_scan::$12
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ goto keyboard_event_scan::@7
+keyboard_event_scan::@6:
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte) keyboard_event_scan::keycode
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+keyboard_event_scan::@7:
+keyboard_event_scan::@5:
+keyboard_event_scan::@4:
+ (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+ (byte) keyboard_event_scan::col ← ++ (byte) keyboard_event_scan::col
+ (boolean~) keyboard_event_scan::$13 ← (byte) keyboard_event_scan::col != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$13) goto keyboard_event_scan::@3
+ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row) ← (byte) keyboard_event_scan::row_scan
+ goto keyboard_event_scan::@8
+keyboard_event_scan::@2:
+ (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14 ← (byte) keyboard_event_scan::keycode + (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte) keyboard_event_scan::keycode ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+keyboard_event_scan::@8:
+ (byte) keyboard_event_scan::row ← ++ (byte) keyboard_event_scan::row
+ (boolean~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$15) goto keyboard_event_scan::@1
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte~) keyboard_event_scan::$16 ← call keyboard_event_pressed (byte) KEY_LSHIFT
+ (boolean~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$18 ← ! (boolean~) keyboard_event_scan::$17
+ if((boolean~) keyboard_event_scan::$18) goto keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$19 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_LSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$19
+keyboard_event_scan::@9:
+ (byte~) keyboard_event_scan::$20 ← call keyboard_event_pressed (byte) KEY_RSHIFT
+ (boolean~) keyboard_event_scan::$21 ← (byte~) keyboard_event_scan::$20 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$22 ← ! (boolean~) keyboard_event_scan::$21
+ if((boolean~) keyboard_event_scan::$22) goto keyboard_event_scan::@10
+ (byte~) keyboard_event_scan::$23 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_RSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$23
+keyboard_event_scan::@10:
+ (byte~) keyboard_event_scan::$24 ← call keyboard_event_pressed (byte) KEY_CTRL
+ (boolean~) keyboard_event_scan::$25 ← (byte~) keyboard_event_scan::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$26 ← ! (boolean~) keyboard_event_scan::$25
+ if((boolean~) keyboard_event_scan::$26) goto keyboard_event_scan::@11
+ (byte~) keyboard_event_scan::$27 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_CTRL
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$27
+keyboard_event_scan::@11:
+ (byte~) keyboard_event_scan::$28 ← call keyboard_event_pressed (byte) KEY_COMMODORE
+ (boolean~) keyboard_event_scan::$29 ← (byte~) keyboard_event_scan::$28 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$30 ← ! (boolean~) keyboard_event_scan::$29
+ if((boolean~) keyboard_event_scan::$30) goto keyboard_event_scan::@12
+ (byte~) keyboard_event_scan::$31 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_COMMODORE
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$31
+keyboard_event_scan::@12:
+keyboard_event_scan::@return:
+ return
+endproc // keyboard_event_scan()
+proc (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
+ (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3
+ (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0)
+ (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode & (byte/signed byte/word/signed word/dword/signed dword) 7
+ (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits & *((byte[8]) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1)
+ (byte) keyboard_event_pressed::return ← (byte~) keyboard_event_pressed::$2
+ goto keyboard_event_pressed::@return
+keyboard_event_pressed::@return:
+ (byte) keyboard_event_pressed::return ← (byte) keyboard_event_pressed::return
+ return (byte) keyboard_event_pressed::return
+endproc // keyboard_event_pressed()
+proc (byte()) keyboard_event_get()
+ (boolean~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_get::$1 ← ! (boolean~) keyboard_event_get::$0
+ if((boolean~) keyboard_event_get::$1) goto keyboard_event_get::@1
+ (byte) keyboard_event_get::return ← (byte/word/signed word/dword/signed dword) 255
+ goto keyboard_event_get::@return
+ goto keyboard_event_get::@2
+keyboard_event_get::@1:
+ (byte) keyboard_events_size ← -- (byte) keyboard_events_size
+ (byte) keyboard_event_get::return ← *((byte[8]) keyboard_events + (byte) keyboard_events_size)
+ goto keyboard_event_get::@return
+keyboard_event_get::@2:
+keyboard_event_get::@return:
+ (byte) keyboard_event_get::return ← (byte) keyboard_event_get::return
+ return (byte) keyboard_event_get::return
+endproc // keyboard_event_get()
proc (void()) main()
(void~) main::$0 ← call keyboard_init
main::@1:
@@ -450,6 +661,7 @@ endproc // main()
call main
SYMBOLS
+(byte~) $0
(byte*) BGCOL
(byte*) BGCOL1
(byte*) BGCOL2
@@ -519,6 +731,11 @@ SYMBOLS
(byte) KEY_LSHIFT
(byte) KEY_M
(byte) KEY_MINUS
+(byte) KEY_MODIFIER_COMMODORE
+(byte) KEY_MODIFIER_CTRL
+(byte) KEY_MODIFIER_LSHIFT
+(byte) KEY_MODIFIER_RSHIFT
+(byte) KEY_MODIFIER_SHIFT
(byte) KEY_N
(byte) KEY_O
(byte) KEY_P
@@ -580,6 +797,74 @@ SYMBOLS
(byte) WHITE
(byte) YELLOW
(byte[]) keyboard_char_keycodes
+(byte()) keyboard_event_get()
+(boolean~) keyboard_event_get::$0
+(boolean~) keyboard_event_get::$1
+(label) keyboard_event_get::@1
+(label) keyboard_event_get::@2
+(label) keyboard_event_get::@return
+(byte) keyboard_event_get::return
+(byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
+(byte~) keyboard_event_pressed::$0
+(byte~) keyboard_event_pressed::$1
+(byte~) keyboard_event_pressed::$2
+(label) keyboard_event_pressed::@return
+(byte) keyboard_event_pressed::keycode
+(byte) keyboard_event_pressed::return
+(byte) keyboard_event_pressed::row_bits
+(void()) keyboard_event_scan()
+(byte~) keyboard_event_scan::$0
+(boolean~) keyboard_event_scan::$1
+(boolean~) keyboard_event_scan::$10
+(boolean~) keyboard_event_scan::$11
+(byte/word/dword~) keyboard_event_scan::$12
+(boolean~) keyboard_event_scan::$13
+(byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+(boolean~) keyboard_event_scan::$15
+(byte~) keyboard_event_scan::$16
+(boolean~) keyboard_event_scan::$17
+(boolean~) keyboard_event_scan::$18
+(byte~) keyboard_event_scan::$19
+(boolean~) keyboard_event_scan::$2
+(byte~) keyboard_event_scan::$20
+(boolean~) keyboard_event_scan::$21
+(boolean~) keyboard_event_scan::$22
+(byte~) keyboard_event_scan::$23
+(byte~) keyboard_event_scan::$24
+(boolean~) keyboard_event_scan::$25
+(boolean~) keyboard_event_scan::$26
+(byte~) keyboard_event_scan::$27
+(byte~) keyboard_event_scan::$28
+(boolean~) keyboard_event_scan::$29
+(byte~) keyboard_event_scan::$3
+(boolean~) keyboard_event_scan::$30
+(byte~) keyboard_event_scan::$31
+(byte~) keyboard_event_scan::$4
+(boolean~) keyboard_event_scan::$5
+(boolean~) keyboard_event_scan::$6
+(boolean~) keyboard_event_scan::$7
+(boolean~) keyboard_event_scan::$8
+(byte~) keyboard_event_scan::$9
+(label) keyboard_event_scan::@1
+(label) keyboard_event_scan::@10
+(label) keyboard_event_scan::@11
+(label) keyboard_event_scan::@12
+(label) keyboard_event_scan::@2
+(label) keyboard_event_scan::@3
+(label) keyboard_event_scan::@4
+(label) keyboard_event_scan::@5
+(label) keyboard_event_scan::@6
+(label) keyboard_event_scan::@7
+(label) keyboard_event_scan::@8
+(label) keyboard_event_scan::@9
+(label) keyboard_event_scan::@return
+(byte) keyboard_event_scan::col
+(byte) keyboard_event_scan::event_type
+(byte) keyboard_event_scan::keycode
+(byte) keyboard_event_scan::row
+(byte) keyboard_event_scan::row_scan
+(byte[8]) keyboard_events
+(byte) keyboard_events_size
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
(label) keyboard_get_keycode::@return
(byte) keyboard_get_keycode::ch
@@ -596,7 +881,7 @@ SYMBOLS
(byte) keyboard_key_pressed::key
(byte) keyboard_key_pressed::return
(byte) keyboard_key_pressed::rowidx
-(byte[]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -604,6 +889,8 @@ SYMBOLS
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte[8]) keyboard_matrix_row_bitmask
+(byte) keyboard_modifiers
+(byte[8]) keyboard_scan_values
(void()) main()
(void~) main::$0
(boolean~) main::$1
@@ -787,7 +1074,7 @@ INITIAL CONTROL FLOW GRAPH
(byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
(byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(byte[8]) 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_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ (byte[8]) keyboard_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
to:@1
keyboard_init: scope:[keyboard_init] from
*((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255
@@ -818,7 +1105,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from
(byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key >> (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) keyboard_key_pressed::rowidx ← (byte~) keyboard_key_pressed::$1
(byte~) keyboard_key_pressed::$2 ← call keyboard_matrix_read (byte) keyboard_key_pressed::rowidx
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
(byte) keyboard_key_pressed::return ← (byte~) keyboard_key_pressed::$3
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed keyboard_key_pressed::@1
@@ -839,7 +1126,174 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k
keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from
to:keyboard_get_keycode::@return
@4: scope:[] from @3
+ (byte[8]) keyboard_events ← { fill( 8, 0) }
+ (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
+ (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+ (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+ (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+ (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
to:@5
+keyboard_event_scan: scope:[keyboard_event_scan] from
+ (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ to:keyboard_event_scan::@1
+keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8
+ (byte~) keyboard_event_scan::$0 ← call keyboard_matrix_read (byte) keyboard_event_scan::row
+ (byte) keyboard_event_scan::row_scan ← (byte~) keyboard_event_scan::$0
+ (boolean~) keyboard_event_scan::$1 ← (byte) keyboard_event_scan::row_scan != *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (boolean~) keyboard_event_scan::$2 ← ! (boolean~) keyboard_event_scan::$1
+ if((boolean~) keyboard_event_scan::$2) goto keyboard_event_scan::@2
+ to:keyboard_event_scan::@13
+keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@1 keyboard_event_scan::@19
+ (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14 ← (byte) keyboard_event_scan::keycode + (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte) keyboard_event_scan::keycode ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@1
+ (byte) keyboard_event_scan::col ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ to:keyboard_event_scan::@3
+keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@4
+ (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan ^ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (boolean~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$6 ← ! (boolean~) keyboard_event_scan::$5
+ if((boolean~) keyboard_event_scan::$6) goto keyboard_event_scan::@4
+ to:keyboard_event_scan::@14
+keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@3 keyboard_event_scan::@5
+ (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+ (byte) keyboard_event_scan::col ← ++ (byte) keyboard_event_scan::col
+ (boolean~) keyboard_event_scan::$13 ← (byte) keyboard_event_scan::col != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$13) goto keyboard_event_scan::@3
+ to:keyboard_event_scan::@18
+keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan::@3
+ (boolean~) keyboard_event_scan::$7 ← (byte) keyboard_events_size != (byte/signed byte/word/signed word/dword/signed dword) 8
+ (boolean~) keyboard_event_scan::$8 ← ! (boolean~) keyboard_event_scan::$7
+ if((boolean~) keyboard_event_scan::$8) goto keyboard_event_scan::@5
+ to:keyboard_event_scan::@15
+keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@14 keyboard_event_scan::@7
+ to:keyboard_event_scan::@4
+keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@14
+ (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_scan::row_scan & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (byte) keyboard_event_scan::event_type ← (byte~) keyboard_event_scan::$9
+ (boolean~) keyboard_event_scan::$10 ← (byte) keyboard_event_scan::event_type == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$11 ← ! (boolean~) keyboard_event_scan::$10
+ if((boolean~) keyboard_event_scan::$11) goto keyboard_event_scan::@6
+ to:keyboard_event_scan::@16
+keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@17
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte) keyboard_event_scan::keycode
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ to:keyboard_event_scan::@7
+keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15
+ (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode | (byte/signed byte/word/signed word/dword/signed dword) 64
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte/word/dword~) keyboard_event_scan::$12
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ to:keyboard_event_scan::@7
+keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan::@16 keyboard_event_scan::@6
+ to:keyboard_event_scan::@5
+keyboard_event_scan::@17: scope:[keyboard_event_scan] from
+ to:keyboard_event_scan::@6
+keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan::@4
+ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row) ← (byte) keyboard_event_scan::row_scan
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@18 keyboard_event_scan::@2
+ (byte) keyboard_event_scan::row ← ++ (byte) keyboard_event_scan::row
+ (boolean~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$15) goto keyboard_event_scan::@1
+ to:keyboard_event_scan::@20
+keyboard_event_scan::@19: scope:[keyboard_event_scan] from
+ to:keyboard_event_scan::@2
+keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@8
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte~) keyboard_event_scan::$16 ← call keyboard_event_pressed (byte) KEY_LSHIFT
+ (boolean~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$18 ← ! (boolean~) keyboard_event_scan::$17
+ if((boolean~) keyboard_event_scan::$18) goto keyboard_event_scan::@9
+ to:keyboard_event_scan::@21
+keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@20 keyboard_event_scan::@21
+ (byte~) keyboard_event_scan::$20 ← call keyboard_event_pressed (byte) KEY_RSHIFT
+ (boolean~) keyboard_event_scan::$21 ← (byte~) keyboard_event_scan::$20 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$22 ← ! (boolean~) keyboard_event_scan::$21
+ if((boolean~) keyboard_event_scan::$22) goto keyboard_event_scan::@10
+ to:keyboard_event_scan::@22
+keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@20
+ (byte~) keyboard_event_scan::$19 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_LSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$19
+ to:keyboard_event_scan::@9
+keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$24 ← call keyboard_event_pressed (byte) KEY_CTRL
+ (boolean~) keyboard_event_scan::$25 ← (byte~) keyboard_event_scan::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$26 ← ! (boolean~) keyboard_event_scan::$25
+ if((boolean~) keyboard_event_scan::$26) goto keyboard_event_scan::@11
+ to:keyboard_event_scan::@23
+keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$23 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_RSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$23
+ to:keyboard_event_scan::@10
+keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@10 keyboard_event_scan::@23
+ (byte~) keyboard_event_scan::$28 ← call keyboard_event_pressed (byte) KEY_COMMODORE
+ (boolean~) keyboard_event_scan::$29 ← (byte~) keyboard_event_scan::$28 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$30 ← ! (boolean~) keyboard_event_scan::$29
+ if((boolean~) keyboard_event_scan::$30) goto keyboard_event_scan::@12
+ to:keyboard_event_scan::@24
+keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@10
+ (byte~) keyboard_event_scan::$27 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_CTRL
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$27
+ to:keyboard_event_scan::@11
+keyboard_event_scan::@12: scope:[keyboard_event_scan] from keyboard_event_scan::@11 keyboard_event_scan::@24
+ to:keyboard_event_scan::@return
+keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@11
+ (byte~) keyboard_event_scan::$31 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_COMMODORE
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$31
+ to:keyboard_event_scan::@12
+keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@12
+ return
+ to:@return
+@5: scope:[] from @4
+ to:@6
+keyboard_event_pressed: scope:[keyboard_event_pressed] from
+ (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3
+ (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0)
+ (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode & (byte/signed byte/word/signed word/dword/signed dword) 7
+ (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits & *((byte[8]) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1)
+ (byte) keyboard_event_pressed::return ← (byte~) keyboard_event_pressed::$2
+ to:keyboard_event_pressed::@return
+keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed keyboard_event_pressed::@1
+ (byte) keyboard_event_pressed::return ← (byte) keyboard_event_pressed::return
+ return (byte) keyboard_event_pressed::return
+ to:@return
+keyboard_event_pressed::@1: scope:[keyboard_event_pressed] from
+ to:keyboard_event_pressed::@return
+@6: scope:[] from @5
+ to:@7
+keyboard_event_get: scope:[keyboard_event_get] from
+ (boolean~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_get::$1 ← ! (boolean~) keyboard_event_get::$0
+ if((boolean~) keyboard_event_get::$1) goto keyboard_event_get::@1
+ to:keyboard_event_get::@3
+keyboard_event_get::@1: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@5
+ (byte) keyboard_events_size ← -- (byte) keyboard_events_size
+ (byte) keyboard_event_get::return ← *((byte[8]) keyboard_events + (byte) keyboard_events_size)
+ to:keyboard_event_get::@return
+keyboard_event_get::@3: scope:[keyboard_event_get] from keyboard_event_get
+ (byte) keyboard_event_get::return ← (byte/word/signed word/dword/signed dword) 255
+ to:keyboard_event_get::@return
+keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get::@1 keyboard_event_get::@2 keyboard_event_get::@3
+ (byte) keyboard_event_get::return ← (byte) keyboard_event_get::return
+ return (byte) keyboard_event_get::return
+ to:@return
+keyboard_event_get::@4: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@2
+keyboard_event_get::@2: scope:[keyboard_event_get] from keyboard_event_get::@4 keyboard_event_get::@6
+ to:keyboard_event_get::@return
+keyboard_event_get::@5: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@1
+keyboard_event_get::@6: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@2
+@7: scope:[] from @6
+ to:@8
main: scope:[main] from
(void~) main::$0 ← call keyboard_init
to:main::@1
@@ -879,12 +1333,15 @@ main::@12: scope:[main] from
main::@return: scope:[main] from main::@3
return
to:@return
-@5: scope:[] from @4
+@8: scope:[] from @7
call main
to:@end
-@end: scope:[] from @5
+@end: scope:[] from @8
Removing unused procedure keyboard_get_keycode
+Removing unused procedure keyboard_event_scan
+Removing unused procedure keyboard_event_get
+Removing unused procedure keyboard_event_pressed
Eliminating unused variable (byte*) PROCPORT_DDR and assignment [0] (byte*) PROCPORT_DDR ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
Eliminating unused variable (byte) PROCPORT_DDR_MEMORY_MASK and assignment [1] (byte) PROCPORT_DDR_MEMORY_MASK ← (byte/signed byte/word/signed word/dword/signed dword) 7
Eliminating unused variable (byte*) PROCPORT and assignment [2] (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
@@ -957,6 +1414,13 @@ Eliminating unused variable (byte) KEY_CTRL and assignment [123] (byte) KEY_CTRL
Eliminating unused variable (byte) KEY_COMMODORE and assignment [126] (byte) KEY_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 61
Eliminating unused variable (byte) KEY_RUNSTOP and assignment [128] (byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
Eliminating unused variable (byte[]) keyboard_char_keycodes and assignment [129] (byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
+Eliminating unused variable (byte[8]) keyboard_events and assignment [150] (byte[8]) keyboard_events ← { fill( 8, 0) }
+Eliminating unused variable (byte) keyboard_events_size and assignment [151] (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+Eliminating unused variable (byte) keyboard_modifiers and assignment [152] (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+Eliminating unused variable (byte) KEY_MODIFIER_CTRL and assignment [155] (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+Eliminating unused variable (byte) KEY_MODIFIER_COMMODORE and assignment [156] (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+Eliminating unused variable (byte) KEY_MODIFIER_SHIFT and assignment [158] (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+Eliminating unused variable (byte[8]) keyboard_scan_values and assignment [159] (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
Eliminating unused variable - keeping the call (void~) main::$0
Eliminating unused variable (byte) KEY_3 and assignment [8] (byte) KEY_3 ← (byte/signed byte/word/signed word/dword/signed dword) 8
Eliminating unused variable (byte) KEY_W and assignment [9] (byte) KEY_W ← (byte/signed byte/word/signed word/dword/signed dword) 9
@@ -1007,12 +1471,18 @@ Eliminating unused variable (byte) KEY_1 and assignment [53] (byte) KEY_1 ← (b
Eliminating unused variable (byte) KEY_ARROW_LEFT and assignment [54] (byte) KEY_ARROW_LEFT ← (byte/signed byte/word/signed word/dword/signed dword) 57
Eliminating unused variable (byte) KEY_2 and assignment [55] (byte) KEY_2 ← (byte/signed byte/word/signed word/dword/signed dword) 59
Eliminating unused variable (byte) KEY_Q and assignment [57] (byte) KEY_Q ← (byte/signed byte/word/signed word/dword/signed dword) 62
+Eliminating unused variable (byte~) $0 and assignment [80] (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+Eliminating unused variable (byte) KEY_MODIFIER_LSHIFT and assignment [29] (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+Eliminating unused variable (byte) KEY_MODIFIER_RSHIFT and assignment [30] (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
Removing empty block @1
Removing empty block keyboard_matrix_read::@1
Removing empty block @2
Removing empty block keyboard_key_pressed::@1
Removing empty block @3
Removing empty block @4
+Removing empty block @5
+Removing empty block @6
+Removing empty block @7
Removing empty block main::@7
Removing empty block main::@3
Removing empty block main::@8
@@ -1035,8 +1505,8 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
(byte) BLUE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 6
(byte) KEY_SPACE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 60
(byte[8]) keyboard_matrix_row_bitmask#0 ← { (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_matrix_col_bitmask#0 ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
- to:@5
+ (byte[8]) keyboard_matrix_col_bitmask#0 ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ to:@8
keyboard_init: scope:[keyboard_init] from main
*((byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255
*((byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -1070,7 +1540,7 @@ keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_presse
(byte) keyboard_key_pressed::colidx#1 ← phi( keyboard_key_pressed/(byte) keyboard_key_pressed::colidx#0 )
(byte) keyboard_matrix_read::return#4 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::return#2 )
(byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#4
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#1)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#1)
(byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$3
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
@@ -1078,7 +1548,7 @@ keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_p
(byte) keyboard_key_pressed::return#1 ← (byte) keyboard_key_pressed::return#3
return
to:@return
-main: scope:[main] from @5
+main: scope:[main] from @8
call keyboard_init param-assignment
to:main::@13
main::@13: scope:[main] from main
@@ -1113,16 +1583,16 @@ main::@10: scope:[main] from main::@14
main::@return: scope:[main] from main::@1
return
to:@return
-@5: scope:[] from @begin
+@8: scope:[] from @begin
call main param-assignment
- to:@6
-@6: scope:[] from @5
+ to:@9
+@9: scope:[] from @8
to:@end
-@end: scope:[] from @6
+@end: scope:[] from @9
SYMBOL TABLE SSA
-(label) @5
-(label) @6
+(label) @8
+(label) @9
(label) @begin
(label) @end
(byte*) BGCOL
@@ -1166,8 +1636,8 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#4
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
-(byte[]) keyboard_matrix_col_bitmask
-(byte[]) keyboard_matrix_col_bitmask#0
+(byte[8]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask#0
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -1202,7 +1672,7 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) main::@13
Culled Empty Block (label) main::@2
-Culled Empty Block (label) @6
+Culled Empty Block (label) @9
Succesful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (boolean~) main::$4 ← (byte~) main::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) main::$3 ← (byte~) main::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2UnaryNotSimplification
@@ -1245,7 +1715,7 @@ Constant (const byte) GREEN#0 = 5
Constant (const byte) BLUE#0 = 6
Constant (const byte) KEY_SPACE#0 = 60
Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { 254, 253, 251, 247, 239, 223, 191, 127 }
-Constant (const byte[]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 }
+Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 }
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) keyboard_key_pressed::key#0 = KEY_SPACE#0
Succesful SSA optimization Pass2ConstantIdentification
@@ -1265,10 +1735,10 @@ OPTIMIZING CONTROL FLOW GRAPH
Constant inlined keyboard_key_pressed::key#0 = (const byte) KEY_SPACE#0
Constant inlined keyboard_matrix_read::rowid#0 = (const byte) keyboard_key_pressed::rowidx#0
Succesful SSA optimization Pass2ConstantInlining
-Block Sequence Planned @begin @5 @end main main::@1 main::@return main::@4 main::@9 main::@14 main::@10 main::@5 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_init keyboard_init::@return
-Block Sequence Planned @begin @5 @end main main::@1 main::@return main::@4 main::@9 main::@14 main::@10 main::@5 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_init keyboard_init::@return
+Block Sequence Planned @begin @8 @end main main::@1 main::@return main::@4 main::@9 main::@14 main::@10 main::@5 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_init keyboard_init::@return
+Block Sequence Planned @begin @8 @end main main::@1 main::@return main::@4 main::@9 main::@14 main::@10 main::@5 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_init keyboard_init::@return
Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @5
+Adding NOP phi() at start of @8
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@9
@@ -1283,9 +1753,9 @@ Propagating live ranges...
Propagating live ranges...
Created 0 initial phi equivalence classes
Coalesced down to 0 phi equivalence classes
-Block Sequence Planned @begin @5 @end main main::@1 main::@return main::@4 main::@9 main::@14 main::@10 main::@5 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_init keyboard_init::@return
+Block Sequence Planned @begin @8 @end main main::@1 main::@return main::@4 main::@9 main::@14 main::@10 main::@5 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_init keyboard_init::@return
Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @5
+Adding NOP phi() at start of @8
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@9
@@ -1297,14 +1767,14 @@ Propagating live ranges...
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi() [ ] ( )
- to:@5
-@5: scope:[] from @begin
+ to:@8
+@8: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
-@end: scope:[] from @5
+@end: scope:[] from @8
[3] phi() [ ] ( )
-main: scope:[main] from @5
+main: scope:[main] from @8
[4] phi() [ ] ( main:2 [ ] )
[5] call keyboard_init param-assignment [ ] ( main:2 [ ] )
to:main::@1
@@ -1339,7 +1809,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@9
to:keyboard_key_pressed::@2
keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_pressed
[19] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::$2 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::$2 ] )
- [20] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] )
+ [20] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] )
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
[21] return [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] )
@@ -1361,23 +1831,23 @@ keyboard_init::@return: scope:[keyboard_init] from keyboard_init
DOMINATORS
@begin dominated by @begin
-@5 dominated by @begin @5
-@end dominated by @begin @end @5
-main dominated by @begin main @5
-main::@1 dominated by @begin main @5 main::@1
-main::@return dominated by main::@return @begin main @5 main::@1
-main::@4 dominated by @begin main @5 main::@1 main::@4
-main::@9 dominated by main::@9 @begin main @5 main::@1 main::@4
-main::@14 dominated by main::@9 @begin main main::@14 @5 main::@1 main::@4
-main::@10 dominated by main::@9 @begin main::@10 main main::@14 @5 main::@1 main::@4
-main::@5 dominated by main::@9 @begin main main::@14 @5 main::@1 main::@5 main::@4
-keyboard_key_pressed dominated by main::@9 @begin main keyboard_key_pressed @5 main::@1 main::@4
-keyboard_key_pressed::@2 dominated by main::@9 @begin main keyboard_key_pressed @5 main::@1 keyboard_key_pressed::@2 main::@4
-keyboard_key_pressed::@return dominated by main::@9 @begin main keyboard_key_pressed keyboard_key_pressed::@return @5 main::@1 keyboard_key_pressed::@2 main::@4
-keyboard_matrix_read dominated by main::@9 @begin keyboard_matrix_read main keyboard_key_pressed @5 main::@1 main::@4
-keyboard_matrix_read::@return dominated by main::@9 @begin keyboard_matrix_read main keyboard_matrix_read::@return keyboard_key_pressed @5 main::@1 main::@4
-keyboard_init dominated by @begin main keyboard_init @5
-keyboard_init::@return dominated by @begin main keyboard_init @5 keyboard_init::@return
+@8 dominated by @begin @8
+@end dominated by @begin @end @8
+main dominated by @begin main @8
+main::@1 dominated by @begin main @8 main::@1
+main::@return dominated by main::@return @begin main @8 main::@1
+main::@4 dominated by @begin main @8 main::@1 main::@4
+main::@9 dominated by main::@9 @begin main @8 main::@1 main::@4
+main::@14 dominated by main::@9 @begin main main::@14 @8 main::@1 main::@4
+main::@10 dominated by main::@9 @begin main::@10 main main::@14 @8 main::@1 main::@4
+main::@5 dominated by main::@9 @begin main main::@14 @8 main::@1 main::@5 main::@4
+keyboard_key_pressed dominated by main::@9 @begin main keyboard_key_pressed @8 main::@1 main::@4
+keyboard_key_pressed::@2 dominated by main::@9 @begin main keyboard_key_pressed @8 main::@1 keyboard_key_pressed::@2 main::@4
+keyboard_key_pressed::@return dominated by main::@9 @begin main keyboard_key_pressed keyboard_key_pressed::@return @8 main::@1 keyboard_key_pressed::@2 main::@4
+keyboard_matrix_read dominated by main::@9 @begin keyboard_matrix_read main keyboard_key_pressed @8 main::@1 main::@4
+keyboard_matrix_read::@return dominated by main::@9 @begin keyboard_matrix_read main keyboard_matrix_read::@return keyboard_key_pressed @8 main::@1 main::@4
+keyboard_init dominated by @begin main keyboard_init @8
+keyboard_init::@return dominated by @begin main keyboard_init @8 keyboard_init::@return
NATURAL LOOPS
Found back edge: Loop head: main::@4 tails: main::@4 blocks: null
@@ -1421,7 +1891,7 @@ VARIABLE REGISTER WEIGHTS
(byte) keyboard_key_pressed::return#0 4.333333333333333
(byte) keyboard_key_pressed::return#2 22.0
(byte) keyboard_key_pressed::rowidx
-(byte[]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte) keyboard_matrix_read::return
(byte) keyboard_matrix_read::return#0 1.3333333333333333
@@ -1470,17 +1940,17 @@ INITIAL ASM
.const KEY_SPACE = $3c
//SEG2 @begin
bbegin:
-//SEG3 [1] phi from @begin to @5 [phi:@begin->@5]
-b5_from_bbegin:
- jmp b5
-//SEG4 @5
-b5:
+//SEG3 [1] phi from @begin to @8 [phi:@begin->@8]
+b8_from_bbegin:
+ jmp b8
+//SEG4 @8
+b8:
//SEG5 [2] call main param-assignment [ ] ( )
-//SEG6 [4] phi from @5 to main [phi:@5->main]
-main_from_b5:
+//SEG6 [4] phi from @8 to main [phi:@8->main]
+main_from_b8:
jsr main
-//SEG7 [3] phi from @5 to @end [phi:@5->@end]
-bend_from_b5:
+//SEG7 [3] phi from @8 to @end [phi:@8->@end]
+bend_from_b8:
jmp bend
//SEG8 @end
bend:
@@ -1558,7 +2028,7 @@ keyboard_key_pressed: {
//SEG33 [19] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::$2 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::$2 ] ) -- vbuz1=vbuz2
lda keyboard_matrix_read.return_2
sta _2
- //SEG34 [20] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] ) -- vbuz1=vbuz2_band__deref_pbuc1
+ //SEG34 [20] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] ) -- vbuz1=vbuz2_band__deref_pbuc1
lda keyboard_matrix_col_bitmask+colidx
and _2
sta return
@@ -1606,7 +2076,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS
Statement [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [14] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [15] *((const byte*) BGCOL#0) ← (const byte) BLUE#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
-Statement [20] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
+Statement [20] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
Statement [22] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0+(const byte) keyboard_key_pressed::rowidx#0) [ ] ( main:2::keyboard_key_pressed:10::keyboard_matrix_read:17 [ ] ) always clobbers reg byte a
Statement [23] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_key_pressed:10::keyboard_matrix_read:17 [ keyboard_matrix_read::return#0 ] ) always clobbers reg byte a
Statement [25] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:2::keyboard_init:5 [ ] ) always clobbers reg byte a
@@ -1648,17 +2118,17 @@ ASSEMBLER BEFORE OPTIMIZATION
.const KEY_SPACE = $3c
//SEG2 @begin
bbegin:
-//SEG3 [1] phi from @begin to @5 [phi:@begin->@5]
-b5_from_bbegin:
- jmp b5
-//SEG4 @5
-b5:
+//SEG3 [1] phi from @begin to @8 [phi:@begin->@8]
+b8_from_bbegin:
+ jmp b8
+//SEG4 @8
+b8:
//SEG5 [2] call main param-assignment [ ] ( )
-//SEG6 [4] phi from @5 to main [phi:@5->main]
-main_from_b5:
+//SEG6 [4] phi from @8 to main [phi:@8->main]
+main_from_b8:
jsr main
-//SEG7 [3] phi from @5 to @end [phi:@5->@end]
-bend_from_b5:
+//SEG7 [3] phi from @8 to @end [phi:@8->@end]
+bend_from_b8:
jmp bend
//SEG8 @end
bend:
@@ -1728,7 +2198,7 @@ keyboard_key_pressed: {
b2:
//SEG33 [19] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::$2 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::$2 ] )
// (byte~) keyboard_key_pressed::$2 = (byte) keyboard_matrix_read::return#2 // register copy reg byte a
- //SEG34 [20] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band__deref_pbuc1
+ //SEG34 [20] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band__deref_pbuc1
and keyboard_matrix_col_bitmask+colidx
jmp breturn
//SEG35 keyboard_key_pressed::@return
@@ -1768,7 +2238,7 @@ keyboard_init: {
keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80
ASSEMBLER OPTIMIZATIONS
-Removing instruction jmp b5
+Removing instruction jmp b8
Removing instruction jmp bend
Removing instruction jmp b1
Removing instruction jmp breturn
@@ -1781,13 +2251,13 @@ Removing instruction jmp breturn
Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction bbegin:
-Removing instruction b5_from_bbegin:
-Removing instruction main_from_b5:
-Removing instruction bend_from_b5:
+Removing instruction b8_from_bbegin:
+Removing instruction main_from_b8:
+Removing instruction bend_from_b8:
Removing instruction b9_from_b4:
Removing instruction keyboard_key_pressed_from_b9:
Succesful ASM optimization Pass5RedundantLabelElimination
-Removing instruction b5:
+Removing instruction b8:
Removing instruction bend:
Removing instruction breturn:
Removing instruction b9:
@@ -1809,7 +2279,7 @@ Removing instruction b1:
Succesful ASM optimization Pass5RedundantLabelElimination
FINAL SYMBOL TABLE
-(label) @5
+(label) @8
(label) @begin
(label) @end
(byte*) BGCOL
@@ -1844,8 +2314,8 @@ FINAL SYMBOL TABLE
(byte) keyboard_key_pressed::return#2 reg byte a 22.0
(byte) keyboard_key_pressed::rowidx
(const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE#0>>(byte/signed byte/word/signed word/dword/signed dword) 3
-(byte[]) keyboard_matrix_col_bitmask
-(const byte[]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+(byte[8]) keyboard_matrix_col_bitmask
+(const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -1891,12 +2361,12 @@ Score: 1147
.const BLUE = 6
.const KEY_SPACE = $3c
//SEG2 @begin
-//SEG3 [1] phi from @begin to @5 [phi:@begin->@5]
-//SEG4 @5
+//SEG3 [1] phi from @begin to @8 [phi:@begin->@8]
+//SEG4 @8
//SEG5 [2] call main param-assignment [ ] ( )
-//SEG6 [4] phi from @5 to main [phi:@5->main]
+//SEG6 [4] phi from @8 to main [phi:@8->main]
jsr main
-//SEG7 [3] phi from @5 to @end [phi:@5->@end]
+//SEG7 [3] phi from @8 to @end [phi:@8->@end]
//SEG8 @end
//SEG9 main
main: {
@@ -1948,7 +2418,7 @@ keyboard_key_pressed: {
//SEG32 keyboard_key_pressed::@2
//SEG33 [19] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::$2 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::$2 ] )
// (byte~) keyboard_key_pressed::$2 = (byte) keyboard_matrix_read::return#2 // register copy reg byte a
- //SEG34 [20] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band__deref_pbuc1
+ //SEG34 [20] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band__deref_pbuc1
and keyboard_matrix_col_bitmask+colidx
//SEG35 keyboard_key_pressed::@return
//SEG36 [21] return [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:10 [ keyboard_key_pressed::return#0 ] )
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.sym b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.sym
index 540745dd4..b23bbc74e 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.sym
+++ b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard-space.sym
@@ -1,4 +1,4 @@
-(label) @5
+(label) @8
(label) @begin
(label) @end
(byte*) BGCOL
@@ -33,8 +33,8 @@
(byte) keyboard_key_pressed::return#2 reg byte a 22.0
(byte) keyboard_key_pressed::rowidx
(const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE#0>>(byte/signed byte/word/signed word/dword/signed dword) 3
-(byte[]) keyboard_matrix_col_bitmask
-(const byte[]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+(byte[8]) keyboard_matrix_col_bitmask
+(const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.cfg b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.cfg
index cd2eddf71..98526b07e 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.cfg
+++ b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.cfg
@@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
- to:@5
-@5: scope:[] from @begin
+ to:@8
+@8: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
-@end: scope:[] from @5
+@end: scope:[] from @8
[3] phi() [ ] ( )
-main: scope:[main] from @5
+main: scope:[main] from @8
[4] phi() [ ] ( main:2 [ ] )
to:main::@1
main::@1: scope:[main] from main main::@1
@@ -108,7 +108,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@22
to:keyboard_key_pressed::@2
keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_pressed
[56] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
- [57] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] )
+ [57] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] )
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
[58] return [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] )
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.log b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.log
index 0a58b1885..b84531ec1 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.log
+++ b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.log
@@ -152,7 +152,7 @@ const byte[] keyboard_char_keycodes = {
byte[8] keyboard_matrix_row_bitmask = { %11111110, %11111101, %11111011, %11110111, %11101111, %11011111, %10111111, %01111111 };
// Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7)
-byte[] keyboard_matrix_col_bitmask = { %00000001, %00000010, %00000100, %00001000, %00010000, %00100000, %01000000, %10000000 };
+byte[8] keyboard_matrix_col_bitmask = { %00000001, %00000010, %00000100, %00001000, %00010000, %00100000, %01000000, %10000000 };
// Initialize keyboard reading by setting CIA#$ Data Direction Registers
void keyboard_init() {
@@ -172,7 +172,7 @@ byte keyboard_matrix_read(byte rowid) {
return row_pressed_bits;
}
-// Determines whether a specific key is currently pressed
+// Determines whether a specific key is currently pressed by accessing the matrix directly
// The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7)
// All keys exist as as KEY_XXX constants.
// Returns zero if the key is not pressed and a non-zero value if the key is currently pressed
@@ -189,6 +189,97 @@ byte keyboard_key_pressed(byte key) {
byte keyboard_get_keycode(byte ch) {
return keyboard_char_keycodes[ch];
}
+
+// Keyboard event buffer. Contains keycodes for key presses/releases. Presses are represented by the keycode. Releases by keycode | $40. The buffer is filled by keyboard_scan()
+byte[8] keyboard_events;
+// Keyboard event buffer size. The number of events currently in the event buffer
+byte keyboard_events_size = 0;
+// Current keyboard modifiers (left shift, right shift, ctrl, commodore)
+byte keyboard_modifiers = 0;
+// Left shift is pressed
+const byte KEY_MODIFIER_LSHIFT = 1;
+// Right shift is pressed
+const byte KEY_MODIFIER_RSHIFT = 2;
+// CTRL is pressed
+const byte KEY_MODIFIER_CTRL = 4;
+// Commodore is pressed
+const byte KEY_MODIFIER_COMMODORE = 8;
+// Any shift is pressed
+const byte KEY_MODIFIER_SHIFT = KEY_MODIFIER_LSHIFT|KEY_MODIFIER_RSHIFT;
+// The values scanned values for each row. Set by keyboard_scan() and used by keyboard_get_event()
+byte[8] keyboard_scan_values;
+
+// Scans the entire matrix to determine which keys have been pressed/depressed.
+// Generates keyboard events into the event buffer. Events can be read using keyboard_event_get().
+// Handles debounce and only generates events when the status of a key changes.
+// Also stores current status of modifiers in keyboard_modifiers.
+void keyboard_event_scan() {
+ byte keycode = 0;
+ for(byte row : 0..7) {
+ byte row_scan = keyboard_matrix_read(row);
+ if(row_scan!=keyboard_scan_values[row]) {
+ // Something has changed on the keyboard row - check each column
+ for(byte col : 0..7){
+ // XOR of row scan with the last seen row scan AND'ed with the col bitmask will be non-0 if the key status is changed
+ if(((row_scan^keyboard_scan_values[row])&keyboard_matrix_col_bitmask[col])!=0) {
+ // Key(row, col) status has changed. We have an event.
+ // Only process event if there is still room in the buffer
+ if(keyboard_events_size!=8) {
+ // AND of row scan and bit mask determines if key is pressed or released
+ byte event_type = row_scan&keyboard_matrix_col_bitmask[col];
+ if(event_type==0) {
+ // Key released
+ keyboard_events[keyboard_events_size++] = keycode|$40;
+ } else {
+ // Key pressed
+ keyboard_events[keyboard_events_size++] = keycode;
+ }
+ }
+ }
+ keycode++;
+ }
+ // Store the current keyboard status for the row to debounce
+ keyboard_scan_values[row] = row_scan;
+ } else {
+ // Update current keycode
+ keycode = keycode + 8;
+ }
+ }
+ // Update the keyboard modifiers
+ keyboard_modifiers = 0;
+ if(keyboard_event_pressed(KEY_LSHIFT)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_LSHIFT;
+ }
+ if(keyboard_event_pressed(KEY_RSHIFT)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_RSHIFT;
+ }
+ if(keyboard_event_pressed(KEY_CTRL)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_CTRL;
+ }
+ if(keyboard_event_pressed(KEY_COMMODORE)!= 0) {
+ keyboard_modifiers = keyboard_modifiers | KEY_MODIFIER_COMMODORE;
+ }
+}
+
+// Determine if a specific key is currently pressed based on the last keyboard_event_scan()
+// Returns 0 is not pressed and non-0 if pressed
+byte keyboard_event_pressed(byte keycode) {
+ byte row_bits = keyboard_scan_values[keycode>>3];
+ return row_bits & keyboard_matrix_col_bitmask[keycode&7];
+}
+
+// Get the next event from the keyboard event buffer.
+// Returns $ff if there is no event waiting. As all events are <$7f it is enough to examine bit 7 when determining if there is any event to process.
+// The buffer is filled by keyboard_scan()
+byte keyboard_event_get() {
+ if(keyboard_events_size==0) {
+ return $ff;
+ } else {
+ return keyboard_events[--keyboard_events_size];
+ }
+}
+
+
Importing c64.kc
PARSING src/test/java/dk/camelot64/kickc/test/kc/c64.kc
// Commodore 64 Registers and Constants
@@ -285,6 +376,10 @@ const byte LIGHT_GREEN = $d;
const byte LIGHT_BLUE = $e;
const byte LIGHT_GREY = $f;
+Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+Adding pre/post-modifier (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+Adding pre/post-modifier (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+Adding pre/post-modifier (byte) keyboard_events_size ← -- (byte) keyboard_events_size
Adding pre/post-modifier (byte*) main::sc ← ++ (byte*) main::sc
Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i
Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i
@@ -421,7 +516,7 @@ STATEMENTS
(byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
(byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(byte[8]) 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_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ (byte[8]) keyboard_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
proc (void()) keyboard_init()
*((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255
*((byte*) CIA1_PORT_B_DDR) ← (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -444,7 +539,7 @@ proc (byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
(byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key >> (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) keyboard_key_pressed::rowidx ← (byte~) keyboard_key_pressed::$1
(byte~) keyboard_key_pressed::$2 ← call keyboard_matrix_read (byte) keyboard_key_pressed::rowidx
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
(byte) keyboard_key_pressed::return ← (byte~) keyboard_key_pressed::$3
goto keyboard_key_pressed::@return
keyboard_key_pressed::@return:
@@ -458,6 +553,122 @@ keyboard_get_keycode::@return:
(byte) keyboard_get_keycode::return ← (byte) keyboard_get_keycode::return
return (byte) keyboard_get_keycode::return
endproc // keyboard_get_keycode()
+ (byte[8]) keyboard_events ← { fill( 8, 0) }
+ (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
+ (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+ (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+ (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+ (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
+proc (void()) keyboard_event_scan()
+ (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0
+keyboard_event_scan::@1:
+ (byte~) keyboard_event_scan::$0 ← call keyboard_matrix_read (byte) keyboard_event_scan::row
+ (byte) keyboard_event_scan::row_scan ← (byte~) keyboard_event_scan::$0
+ (boolean~) keyboard_event_scan::$1 ← (byte) keyboard_event_scan::row_scan != *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (boolean~) keyboard_event_scan::$2 ← ! (boolean~) keyboard_event_scan::$1
+ if((boolean~) keyboard_event_scan::$2) goto keyboard_event_scan::@2
+ (byte) keyboard_event_scan::col ← (byte/signed byte/word/signed word/dword/signed dword) 0
+keyboard_event_scan::@3:
+ (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan ^ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (boolean~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$6 ← ! (boolean~) keyboard_event_scan::$5
+ if((boolean~) keyboard_event_scan::$6) goto keyboard_event_scan::@4
+ (boolean~) keyboard_event_scan::$7 ← (byte) keyboard_events_size != (byte/signed byte/word/signed word/dword/signed dword) 8
+ (boolean~) keyboard_event_scan::$8 ← ! (boolean~) keyboard_event_scan::$7
+ if((boolean~) keyboard_event_scan::$8) goto keyboard_event_scan::@5
+ (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_scan::row_scan & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (byte) keyboard_event_scan::event_type ← (byte~) keyboard_event_scan::$9
+ (boolean~) keyboard_event_scan::$10 ← (byte) keyboard_event_scan::event_type == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$11 ← ! (boolean~) keyboard_event_scan::$10
+ if((boolean~) keyboard_event_scan::$11) goto keyboard_event_scan::@6
+ (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode | (byte/signed byte/word/signed word/dword/signed dword) 64
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte/word/dword~) keyboard_event_scan::$12
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ goto keyboard_event_scan::@7
+keyboard_event_scan::@6:
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte) keyboard_event_scan::keycode
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+keyboard_event_scan::@7:
+keyboard_event_scan::@5:
+keyboard_event_scan::@4:
+ (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+ (byte) keyboard_event_scan::col ← ++ (byte) keyboard_event_scan::col
+ (boolean~) keyboard_event_scan::$13 ← (byte) keyboard_event_scan::col != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$13) goto keyboard_event_scan::@3
+ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row) ← (byte) keyboard_event_scan::row_scan
+ goto keyboard_event_scan::@8
+keyboard_event_scan::@2:
+ (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14 ← (byte) keyboard_event_scan::keycode + (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte) keyboard_event_scan::keycode ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+keyboard_event_scan::@8:
+ (byte) keyboard_event_scan::row ← ++ (byte) keyboard_event_scan::row
+ (boolean~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$15) goto keyboard_event_scan::@1
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte~) keyboard_event_scan::$16 ← call keyboard_event_pressed (byte) KEY_LSHIFT
+ (boolean~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$18 ← ! (boolean~) keyboard_event_scan::$17
+ if((boolean~) keyboard_event_scan::$18) goto keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$19 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_LSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$19
+keyboard_event_scan::@9:
+ (byte~) keyboard_event_scan::$20 ← call keyboard_event_pressed (byte) KEY_RSHIFT
+ (boolean~) keyboard_event_scan::$21 ← (byte~) keyboard_event_scan::$20 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$22 ← ! (boolean~) keyboard_event_scan::$21
+ if((boolean~) keyboard_event_scan::$22) goto keyboard_event_scan::@10
+ (byte~) keyboard_event_scan::$23 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_RSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$23
+keyboard_event_scan::@10:
+ (byte~) keyboard_event_scan::$24 ← call keyboard_event_pressed (byte) KEY_CTRL
+ (boolean~) keyboard_event_scan::$25 ← (byte~) keyboard_event_scan::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$26 ← ! (boolean~) keyboard_event_scan::$25
+ if((boolean~) keyboard_event_scan::$26) goto keyboard_event_scan::@11
+ (byte~) keyboard_event_scan::$27 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_CTRL
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$27
+keyboard_event_scan::@11:
+ (byte~) keyboard_event_scan::$28 ← call keyboard_event_pressed (byte) KEY_COMMODORE
+ (boolean~) keyboard_event_scan::$29 ← (byte~) keyboard_event_scan::$28 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$30 ← ! (boolean~) keyboard_event_scan::$29
+ if((boolean~) keyboard_event_scan::$30) goto keyboard_event_scan::@12
+ (byte~) keyboard_event_scan::$31 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_COMMODORE
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$31
+keyboard_event_scan::@12:
+keyboard_event_scan::@return:
+ return
+endproc // keyboard_event_scan()
+proc (byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
+ (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3
+ (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0)
+ (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode & (byte/signed byte/word/signed word/dword/signed dword) 7
+ (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits & *((byte[8]) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1)
+ (byte) keyboard_event_pressed::return ← (byte~) keyboard_event_pressed::$2
+ goto keyboard_event_pressed::@return
+keyboard_event_pressed::@return:
+ (byte) keyboard_event_pressed::return ← (byte) keyboard_event_pressed::return
+ return (byte) keyboard_event_pressed::return
+endproc // keyboard_event_pressed()
+proc (byte()) keyboard_event_get()
+ (boolean~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_get::$1 ← ! (boolean~) keyboard_event_get::$0
+ if((boolean~) keyboard_event_get::$1) goto keyboard_event_get::@1
+ (byte) keyboard_event_get::return ← (byte/word/signed word/dword/signed dword) 255
+ goto keyboard_event_get::@return
+ goto keyboard_event_get::@2
+keyboard_event_get::@1:
+ (byte) keyboard_events_size ← -- (byte) keyboard_events_size
+ (byte) keyboard_event_get::return ← *((byte[8]) keyboard_events + (byte) keyboard_events_size)
+ goto keyboard_event_get::@return
+keyboard_event_get::@2:
+keyboard_event_get::@return:
+ (byte) keyboard_event_get::return ← (byte) keyboard_event_get::return
+ return (byte) keyboard_event_get::return
+endproc // keyboard_event_get()
proc (void()) main()
(byte*) main::sc ← (word/signed word/dword/signed dword) 1024
main::@1:
@@ -534,6 +745,7 @@ endproc // main()
call main
SYMBOLS
+(byte~) $0
(byte*) BGCOL
(byte*) BGCOL1
(byte*) BGCOL2
@@ -603,6 +815,11 @@ SYMBOLS
(byte) KEY_LSHIFT
(byte) KEY_M
(byte) KEY_MINUS
+(byte) KEY_MODIFIER_COMMODORE
+(byte) KEY_MODIFIER_CTRL
+(byte) KEY_MODIFIER_LSHIFT
+(byte) KEY_MODIFIER_RSHIFT
+(byte) KEY_MODIFIER_SHIFT
(byte) KEY_N
(byte) KEY_O
(byte) KEY_P
@@ -664,6 +881,74 @@ SYMBOLS
(byte) WHITE
(byte) YELLOW
(byte[]) keyboard_char_keycodes
+(byte()) keyboard_event_get()
+(boolean~) keyboard_event_get::$0
+(boolean~) keyboard_event_get::$1
+(label) keyboard_event_get::@1
+(label) keyboard_event_get::@2
+(label) keyboard_event_get::@return
+(byte) keyboard_event_get::return
+(byte()) keyboard_event_pressed((byte) keyboard_event_pressed::keycode)
+(byte~) keyboard_event_pressed::$0
+(byte~) keyboard_event_pressed::$1
+(byte~) keyboard_event_pressed::$2
+(label) keyboard_event_pressed::@return
+(byte) keyboard_event_pressed::keycode
+(byte) keyboard_event_pressed::return
+(byte) keyboard_event_pressed::row_bits
+(void()) keyboard_event_scan()
+(byte~) keyboard_event_scan::$0
+(boolean~) keyboard_event_scan::$1
+(boolean~) keyboard_event_scan::$10
+(boolean~) keyboard_event_scan::$11
+(byte/word/dword~) keyboard_event_scan::$12
+(boolean~) keyboard_event_scan::$13
+(byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+(boolean~) keyboard_event_scan::$15
+(byte~) keyboard_event_scan::$16
+(boolean~) keyboard_event_scan::$17
+(boolean~) keyboard_event_scan::$18
+(byte~) keyboard_event_scan::$19
+(boolean~) keyboard_event_scan::$2
+(byte~) keyboard_event_scan::$20
+(boolean~) keyboard_event_scan::$21
+(boolean~) keyboard_event_scan::$22
+(byte~) keyboard_event_scan::$23
+(byte~) keyboard_event_scan::$24
+(boolean~) keyboard_event_scan::$25
+(boolean~) keyboard_event_scan::$26
+(byte~) keyboard_event_scan::$27
+(byte~) keyboard_event_scan::$28
+(boolean~) keyboard_event_scan::$29
+(byte~) keyboard_event_scan::$3
+(boolean~) keyboard_event_scan::$30
+(byte~) keyboard_event_scan::$31
+(byte~) keyboard_event_scan::$4
+(boolean~) keyboard_event_scan::$5
+(boolean~) keyboard_event_scan::$6
+(boolean~) keyboard_event_scan::$7
+(boolean~) keyboard_event_scan::$8
+(byte~) keyboard_event_scan::$9
+(label) keyboard_event_scan::@1
+(label) keyboard_event_scan::@10
+(label) keyboard_event_scan::@11
+(label) keyboard_event_scan::@12
+(label) keyboard_event_scan::@2
+(label) keyboard_event_scan::@3
+(label) keyboard_event_scan::@4
+(label) keyboard_event_scan::@5
+(label) keyboard_event_scan::@6
+(label) keyboard_event_scan::@7
+(label) keyboard_event_scan::@8
+(label) keyboard_event_scan::@9
+(label) keyboard_event_scan::@return
+(byte) keyboard_event_scan::col
+(byte) keyboard_event_scan::event_type
+(byte) keyboard_event_scan::keycode
+(byte) keyboard_event_scan::row
+(byte) keyboard_event_scan::row_scan
+(byte[8]) keyboard_events
+(byte) keyboard_events_size
(byte()) keyboard_get_keycode((byte) keyboard_get_keycode::ch)
(label) keyboard_get_keycode::@return
(byte) keyboard_get_keycode::ch
@@ -680,7 +965,7 @@ SYMBOLS
(byte) keyboard_key_pressed::key
(byte) keyboard_key_pressed::return
(byte) keyboard_key_pressed::rowidx
-(byte[]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -688,6 +973,8 @@ SYMBOLS
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(byte[8]) keyboard_matrix_row_bitmask
+(byte) keyboard_modifiers
+(byte[8]) keyboard_scan_values
(void()) main()
(word/signed word/dword/signed dword~) main::$0
(boolean~) main::$1
@@ -904,7 +1191,7 @@ INITIAL CONTROL FLOW GRAPH
(byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
(byte[]) keyboard_char_keycodes ← { (byte) KEY_AT, (byte) KEY_A, (byte) KEY_B, (byte) KEY_C, (byte) KEY_D, (byte) KEY_E, (byte) KEY_F, (byte) KEY_G, (byte) KEY_H, (byte) KEY_I, (byte) KEY_J, (byte) KEY_K, (byte) KEY_L, (byte) KEY_M, (byte) KEY_N, (byte) KEY_O, (byte) KEY_P, (byte) KEY_Q, (byte) KEY_R, (byte) KEY_S, (byte) KEY_T, (byte) KEY_U, (byte) KEY_V, (byte) KEY_W, (byte) KEY_X, (byte) KEY_Y, (byte) KEY_Z, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP, (byte) KEY_ARROW_LEFT, (byte) KEY_SPACE, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK, (byte) KEY_PLUS, (byte) KEY_COMMA, (byte) KEY_MINUS, (byte) KEY_DOT, (byte) KEY_SLASH, (byte) KEY_0, (byte) KEY_1, (byte) KEY_2, (byte) KEY_3, (byte) KEY_4, (byte) KEY_5, (byte) KEY_6, (byte) KEY_7, (byte) KEY_8, (byte) KEY_9, (byte) KEY_COLON, (byte) KEY_SEMICOLON, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(byte[8]) 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_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ (byte[8]) keyboard_matrix_col_bitmask ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
to:@1
keyboard_init: scope:[keyboard_init] from
*((byte*) CIA1_PORT_A_DDR) ← (byte/word/signed word/dword/signed dword) 255
@@ -935,7 +1222,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from
(byte~) keyboard_key_pressed::$1 ← (byte) keyboard_key_pressed::key >> (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) keyboard_key_pressed::rowidx ← (byte~) keyboard_key_pressed::$1
(byte~) keyboard_key_pressed::$2 ← call keyboard_matrix_read (byte) keyboard_key_pressed::rowidx
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_key_pressed::colidx)
(byte) keyboard_key_pressed::return ← (byte~) keyboard_key_pressed::$3
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed keyboard_key_pressed::@1
@@ -956,7 +1243,174 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k
keyboard_get_keycode::@1: scope:[keyboard_get_keycode] from
to:keyboard_get_keycode::@return
@4: scope:[] from @3
+ (byte[8]) keyboard_events ← { fill( 8, 0) }
+ (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+ (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
+ (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+ (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+ (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+ (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
to:@5
+keyboard_event_scan: scope:[keyboard_event_scan] from
+ (byte) keyboard_event_scan::keycode ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte) keyboard_event_scan::row ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ to:keyboard_event_scan::@1
+keyboard_event_scan::@1: scope:[keyboard_event_scan] from keyboard_event_scan keyboard_event_scan::@8
+ (byte~) keyboard_event_scan::$0 ← call keyboard_matrix_read (byte) keyboard_event_scan::row
+ (byte) keyboard_event_scan::row_scan ← (byte~) keyboard_event_scan::$0
+ (boolean~) keyboard_event_scan::$1 ← (byte) keyboard_event_scan::row_scan != *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (boolean~) keyboard_event_scan::$2 ← ! (boolean~) keyboard_event_scan::$1
+ if((boolean~) keyboard_event_scan::$2) goto keyboard_event_scan::@2
+ to:keyboard_event_scan::@13
+keyboard_event_scan::@2: scope:[keyboard_event_scan] from keyboard_event_scan::@1 keyboard_event_scan::@19
+ (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14 ← (byte) keyboard_event_scan::keycode + (byte/signed byte/word/signed word/dword/signed dword) 8
+ (byte) keyboard_event_scan::keycode ← (byte/signed word/word/dword/signed dword~) keyboard_event_scan::$14
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@13: scope:[keyboard_event_scan] from keyboard_event_scan::@1
+ (byte) keyboard_event_scan::col ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ to:keyboard_event_scan::@3
+keyboard_event_scan::@3: scope:[keyboard_event_scan] from keyboard_event_scan::@13 keyboard_event_scan::@4
+ (byte~) keyboard_event_scan::$3 ← (byte) keyboard_event_scan::row_scan ^ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row)
+ (byte~) keyboard_event_scan::$4 ← (byte~) keyboard_event_scan::$3 & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (boolean~) keyboard_event_scan::$5 ← (byte~) keyboard_event_scan::$4 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$6 ← ! (boolean~) keyboard_event_scan::$5
+ if((boolean~) keyboard_event_scan::$6) goto keyboard_event_scan::@4
+ to:keyboard_event_scan::@14
+keyboard_event_scan::@4: scope:[keyboard_event_scan] from keyboard_event_scan::@3 keyboard_event_scan::@5
+ (byte) keyboard_event_scan::keycode ← ++ (byte) keyboard_event_scan::keycode
+ (byte) keyboard_event_scan::col ← ++ (byte) keyboard_event_scan::col
+ (boolean~) keyboard_event_scan::$13 ← (byte) keyboard_event_scan::col != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$13) goto keyboard_event_scan::@3
+ to:keyboard_event_scan::@18
+keyboard_event_scan::@14: scope:[keyboard_event_scan] from keyboard_event_scan::@3
+ (boolean~) keyboard_event_scan::$7 ← (byte) keyboard_events_size != (byte/signed byte/word/signed word/dword/signed dword) 8
+ (boolean~) keyboard_event_scan::$8 ← ! (boolean~) keyboard_event_scan::$7
+ if((boolean~) keyboard_event_scan::$8) goto keyboard_event_scan::@5
+ to:keyboard_event_scan::@15
+keyboard_event_scan::@5: scope:[keyboard_event_scan] from keyboard_event_scan::@14 keyboard_event_scan::@7
+ to:keyboard_event_scan::@4
+keyboard_event_scan::@15: scope:[keyboard_event_scan] from keyboard_event_scan::@14
+ (byte~) keyboard_event_scan::$9 ← (byte) keyboard_event_scan::row_scan & *((byte[8]) keyboard_matrix_col_bitmask + (byte) keyboard_event_scan::col)
+ (byte) keyboard_event_scan::event_type ← (byte~) keyboard_event_scan::$9
+ (boolean~) keyboard_event_scan::$10 ← (byte) keyboard_event_scan::event_type == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$11 ← ! (boolean~) keyboard_event_scan::$10
+ if((boolean~) keyboard_event_scan::$11) goto keyboard_event_scan::@6
+ to:keyboard_event_scan::@16
+keyboard_event_scan::@6: scope:[keyboard_event_scan] from keyboard_event_scan::@15 keyboard_event_scan::@17
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte) keyboard_event_scan::keycode
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ to:keyboard_event_scan::@7
+keyboard_event_scan::@16: scope:[keyboard_event_scan] from keyboard_event_scan::@15
+ (byte/word/dword~) keyboard_event_scan::$12 ← (byte) keyboard_event_scan::keycode | (byte/signed byte/word/signed word/dword/signed dword) 64
+ *((byte[8]) keyboard_events + (byte) keyboard_events_size) ← (byte/word/dword~) keyboard_event_scan::$12
+ (byte) keyboard_events_size ← ++ (byte) keyboard_events_size
+ to:keyboard_event_scan::@7
+keyboard_event_scan::@7: scope:[keyboard_event_scan] from keyboard_event_scan::@16 keyboard_event_scan::@6
+ to:keyboard_event_scan::@5
+keyboard_event_scan::@17: scope:[keyboard_event_scan] from
+ to:keyboard_event_scan::@6
+keyboard_event_scan::@18: scope:[keyboard_event_scan] from keyboard_event_scan::@4
+ *((byte[8]) keyboard_scan_values + (byte) keyboard_event_scan::row) ← (byte) keyboard_event_scan::row_scan
+ to:keyboard_event_scan::@8
+keyboard_event_scan::@8: scope:[keyboard_event_scan] from keyboard_event_scan::@18 keyboard_event_scan::@2
+ (byte) keyboard_event_scan::row ← ++ (byte) keyboard_event_scan::row
+ (boolean~) keyboard_event_scan::$15 ← (byte) keyboard_event_scan::row != (byte/signed byte/word/signed word/dword/signed dword) 8
+ if((boolean~) keyboard_event_scan::$15) goto keyboard_event_scan::@1
+ to:keyboard_event_scan::@20
+keyboard_event_scan::@19: scope:[keyboard_event_scan] from
+ to:keyboard_event_scan::@2
+keyboard_event_scan::@20: scope:[keyboard_event_scan] from keyboard_event_scan::@8
+ (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+ (byte~) keyboard_event_scan::$16 ← call keyboard_event_pressed (byte) KEY_LSHIFT
+ (boolean~) keyboard_event_scan::$17 ← (byte~) keyboard_event_scan::$16 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$18 ← ! (boolean~) keyboard_event_scan::$17
+ if((boolean~) keyboard_event_scan::$18) goto keyboard_event_scan::@9
+ to:keyboard_event_scan::@21
+keyboard_event_scan::@9: scope:[keyboard_event_scan] from keyboard_event_scan::@20 keyboard_event_scan::@21
+ (byte~) keyboard_event_scan::$20 ← call keyboard_event_pressed (byte) KEY_RSHIFT
+ (boolean~) keyboard_event_scan::$21 ← (byte~) keyboard_event_scan::$20 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$22 ← ! (boolean~) keyboard_event_scan::$21
+ if((boolean~) keyboard_event_scan::$22) goto keyboard_event_scan::@10
+ to:keyboard_event_scan::@22
+keyboard_event_scan::@21: scope:[keyboard_event_scan] from keyboard_event_scan::@20
+ (byte~) keyboard_event_scan::$19 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_LSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$19
+ to:keyboard_event_scan::@9
+keyboard_event_scan::@10: scope:[keyboard_event_scan] from keyboard_event_scan::@22 keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$24 ← call keyboard_event_pressed (byte) KEY_CTRL
+ (boolean~) keyboard_event_scan::$25 ← (byte~) keyboard_event_scan::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$26 ← ! (boolean~) keyboard_event_scan::$25
+ if((boolean~) keyboard_event_scan::$26) goto keyboard_event_scan::@11
+ to:keyboard_event_scan::@23
+keyboard_event_scan::@22: scope:[keyboard_event_scan] from keyboard_event_scan::@9
+ (byte~) keyboard_event_scan::$23 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_RSHIFT
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$23
+ to:keyboard_event_scan::@10
+keyboard_event_scan::@11: scope:[keyboard_event_scan] from keyboard_event_scan::@10 keyboard_event_scan::@23
+ (byte~) keyboard_event_scan::$28 ← call keyboard_event_pressed (byte) KEY_COMMODORE
+ (boolean~) keyboard_event_scan::$29 ← (byte~) keyboard_event_scan::$28 != (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_scan::$30 ← ! (boolean~) keyboard_event_scan::$29
+ if((boolean~) keyboard_event_scan::$30) goto keyboard_event_scan::@12
+ to:keyboard_event_scan::@24
+keyboard_event_scan::@23: scope:[keyboard_event_scan] from keyboard_event_scan::@10
+ (byte~) keyboard_event_scan::$27 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_CTRL
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$27
+ to:keyboard_event_scan::@11
+keyboard_event_scan::@12: scope:[keyboard_event_scan] from keyboard_event_scan::@11 keyboard_event_scan::@24
+ to:keyboard_event_scan::@return
+keyboard_event_scan::@24: scope:[keyboard_event_scan] from keyboard_event_scan::@11
+ (byte~) keyboard_event_scan::$31 ← (byte) keyboard_modifiers | (byte) KEY_MODIFIER_COMMODORE
+ (byte) keyboard_modifiers ← (byte~) keyboard_event_scan::$31
+ to:keyboard_event_scan::@12
+keyboard_event_scan::@return: scope:[keyboard_event_scan] from keyboard_event_scan::@12
+ return
+ to:@return
+@5: scope:[] from @4
+ to:@6
+keyboard_event_pressed: scope:[keyboard_event_pressed] from
+ (byte~) keyboard_event_pressed::$0 ← (byte) keyboard_event_pressed::keycode >> (byte/signed byte/word/signed word/dword/signed dword) 3
+ (byte) keyboard_event_pressed::row_bits ← *((byte[8]) keyboard_scan_values + (byte~) keyboard_event_pressed::$0)
+ (byte~) keyboard_event_pressed::$1 ← (byte) keyboard_event_pressed::keycode & (byte/signed byte/word/signed word/dword/signed dword) 7
+ (byte~) keyboard_event_pressed::$2 ← (byte) keyboard_event_pressed::row_bits & *((byte[8]) keyboard_matrix_col_bitmask + (byte~) keyboard_event_pressed::$1)
+ (byte) keyboard_event_pressed::return ← (byte~) keyboard_event_pressed::$2
+ to:keyboard_event_pressed::@return
+keyboard_event_pressed::@return: scope:[keyboard_event_pressed] from keyboard_event_pressed keyboard_event_pressed::@1
+ (byte) keyboard_event_pressed::return ← (byte) keyboard_event_pressed::return
+ return (byte) keyboard_event_pressed::return
+ to:@return
+keyboard_event_pressed::@1: scope:[keyboard_event_pressed] from
+ to:keyboard_event_pressed::@return
+@6: scope:[] from @5
+ to:@7
+keyboard_event_get: scope:[keyboard_event_get] from
+ (boolean~) keyboard_event_get::$0 ← (byte) keyboard_events_size == (byte/signed byte/word/signed word/dword/signed dword) 0
+ (boolean~) keyboard_event_get::$1 ← ! (boolean~) keyboard_event_get::$0
+ if((boolean~) keyboard_event_get::$1) goto keyboard_event_get::@1
+ to:keyboard_event_get::@3
+keyboard_event_get::@1: scope:[keyboard_event_get] from keyboard_event_get keyboard_event_get::@5
+ (byte) keyboard_events_size ← -- (byte) keyboard_events_size
+ (byte) keyboard_event_get::return ← *((byte[8]) keyboard_events + (byte) keyboard_events_size)
+ to:keyboard_event_get::@return
+keyboard_event_get::@3: scope:[keyboard_event_get] from keyboard_event_get
+ (byte) keyboard_event_get::return ← (byte/word/signed word/dword/signed dword) 255
+ to:keyboard_event_get::@return
+keyboard_event_get::@return: scope:[keyboard_event_get] from keyboard_event_get::@1 keyboard_event_get::@2 keyboard_event_get::@3
+ (byte) keyboard_event_get::return ← (byte) keyboard_event_get::return
+ return (byte) keyboard_event_get::return
+ to:@return
+keyboard_event_get::@4: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@2
+keyboard_event_get::@2: scope:[keyboard_event_get] from keyboard_event_get::@4 keyboard_event_get::@6
+ to:keyboard_event_get::@return
+keyboard_event_get::@5: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@1
+keyboard_event_get::@6: scope:[keyboard_event_get] from
+ to:keyboard_event_get::@2
+@7: scope:[] from @6
+ to:@8
main: scope:[main] from
(byte*) main::sc ← ((byte*)) (word/signed word/dword/signed dword) 1024
to:main::@1
@@ -1067,11 +1521,14 @@ main::@26: scope:[main] from
main::@return: scope:[main] from main::@4
return
to:@return
-@5: scope:[] from @4
+@8: scope:[] from @7
call main
to:@end
-@end: scope:[] from @5
+@end: scope:[] from @8
+Removing unused procedure keyboard_event_scan
+Removing unused procedure keyboard_event_get
+Removing unused procedure keyboard_event_pressed
Eliminating unused variable (byte*) PROCPORT_DDR and assignment [0] (byte*) PROCPORT_DDR ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
Eliminating unused variable (byte) PROCPORT_DDR_MEMORY_MASK and assignment [1] (byte) PROCPORT_DDR_MEMORY_MASK ← (byte/signed byte/word/signed word/dword/signed dword) 7
Eliminating unused variable (byte*) PROCPORT and assignment [2] (byte*) PROCPORT ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
@@ -1146,7 +1603,17 @@ Eliminating unused variable (byte) KEY_RSHIFT and assignment [117] (byte) KEY_RS
Eliminating unused variable (byte) KEY_CTRL and assignment [123] (byte) KEY_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 58
Eliminating unused variable (byte) KEY_COMMODORE and assignment [126] (byte) KEY_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 61
Eliminating unused variable (byte) KEY_RUNSTOP and assignment [128] (byte) KEY_RUNSTOP ← (byte/signed byte/word/signed word/dword/signed dword) 63
+Eliminating unused variable (byte[8]) keyboard_events and assignment [153] (byte[8]) keyboard_events ← { fill( 8, 0) }
+Eliminating unused variable (byte) keyboard_events_size and assignment [154] (byte) keyboard_events_size ← (byte/signed byte/word/signed word/dword/signed dword) 0
+Eliminating unused variable (byte) keyboard_modifiers and assignment [155] (byte) keyboard_modifiers ← (byte/signed byte/word/signed word/dword/signed dword) 0
+Eliminating unused variable (byte) KEY_MODIFIER_CTRL and assignment [158] (byte) KEY_MODIFIER_CTRL ← (byte/signed byte/word/signed word/dword/signed dword) 4
+Eliminating unused variable (byte) KEY_MODIFIER_COMMODORE and assignment [159] (byte) KEY_MODIFIER_COMMODORE ← (byte/signed byte/word/signed word/dword/signed dword) 8
+Eliminating unused variable (byte) KEY_MODIFIER_SHIFT and assignment [161] (byte) KEY_MODIFIER_SHIFT ← (byte~) $0
+Eliminating unused variable (byte[8]) keyboard_scan_values and assignment [162] (byte[8]) keyboard_scan_values ← { fill( 8, 0) }
Eliminating unused variable - keeping the call (void~) main::$2
+Eliminating unused variable (byte~) $0 and assignment [81] (byte~) $0 ← (byte) KEY_MODIFIER_LSHIFT | (byte) KEY_MODIFIER_RSHIFT
+Eliminating unused variable (byte) KEY_MODIFIER_LSHIFT and assignment [79] (byte) KEY_MODIFIER_LSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 1
+Eliminating unused variable (byte) KEY_MODIFIER_RSHIFT and assignment [80] (byte) KEY_MODIFIER_RSHIFT ← (byte/signed byte/word/signed word/dword/signed dword) 2
Removing empty block @1
Removing empty block keyboard_matrix_read::@1
Removing empty block @2
@@ -1154,6 +1621,9 @@ Removing empty block keyboard_key_pressed::@1
Removing empty block @3
Removing empty block keyboard_get_keycode::@1
Removing empty block @4
+Removing empty block @5
+Removing empty block @6
+Removing empty block @7
Removing empty block main::@15
Removing empty block main::@4
Removing empty block main::@16
@@ -1228,8 +1698,8 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
(byte) KEY_Q#0 ← (byte/signed byte/word/signed word/dword/signed dword) 62
(byte[]) keyboard_char_keycodes#0 ← { (byte) KEY_AT#0, (byte) KEY_A#0, (byte) KEY_B#0, (byte) KEY_C#0, (byte) KEY_D#0, (byte) KEY_E#0, (byte) KEY_F#0, (byte) KEY_G#0, (byte) KEY_H#0, (byte) KEY_I#0, (byte) KEY_J#0, (byte) KEY_K#0, (byte) KEY_L#0, (byte) KEY_M#0, (byte) KEY_N#0, (byte) KEY_O#0, (byte) KEY_P#0, (byte) KEY_Q#0, (byte) KEY_R#0, (byte) KEY_S#0, (byte) KEY_T#0, (byte) KEY_U#0, (byte) KEY_V#0, (byte) KEY_W#0, (byte) KEY_X#0, (byte) KEY_Y#0, (byte) KEY_Z#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_POUND#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ARROW_UP#0, (byte) KEY_ARROW_LEFT#0, (byte) KEY_SPACE#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_ASTERISK#0, (byte) KEY_PLUS#0, (byte) KEY_COMMA#0, (byte) KEY_MINUS#0, (byte) KEY_DOT#0, (byte) KEY_SLASH#0, (byte) KEY_0#0, (byte) KEY_1#0, (byte) KEY_2#0, (byte) KEY_3#0, (byte) KEY_4#0, (byte) KEY_5#0, (byte) KEY_6#0, (byte) KEY_7#0, (byte) KEY_8#0, (byte) KEY_9#0, (byte) KEY_COLON#0, (byte) KEY_SEMICOLON#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte) KEY_EQUALS#0, (byte/signed byte/word/signed word/dword/signed dword) 63, (byte/signed byte/word/signed word/dword/signed dword) 63 }
(byte[8]) keyboard_matrix_row_bitmask#0 ← { (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_matrix_col_bitmask#0 ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
- to:@5
+ (byte[8]) keyboard_matrix_col_bitmask#0 ← { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+ to:@8
keyboard_init: scope:[keyboard_init] from main::@14
*((byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255
*((byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
@@ -1263,7 +1733,7 @@ keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_presse
(byte) keyboard_key_pressed::colidx#1 ← phi( keyboard_key_pressed/(byte) keyboard_key_pressed::colidx#0 )
(byte) keyboard_matrix_read::return#5 ← phi( keyboard_key_pressed/(byte) keyboard_matrix_read::return#2 )
(byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#5
- (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#1)
+ (byte~) keyboard_key_pressed::$3 ← (byte~) keyboard_key_pressed::$2 & *((byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#1)
(byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$3
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
@@ -1280,7 +1750,7 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k
(byte) keyboard_get_keycode::return#1 ← (byte) keyboard_get_keycode::return#3
return
to:@return
-main: scope:[main] from @5
+main: scope:[main] from @8
(byte*) main::sc#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
to:main::@1
main::@1: scope:[main] from main main::@1
@@ -1444,16 +1914,16 @@ main::@13: scope:[main] from main::@11 main::@13
main::@return: scope:[main] from main::@2
return
to:@return
-@5: scope:[] from @begin
+@8: scope:[] from @begin
call main param-assignment
- to:@6
-@6: scope:[] from @5
+ to:@9
+@9: scope:[] from @8
to:@end
-@end: scope:[] from @6
+@end: scope:[] from @9
SYMBOL TABLE SSA
-(label) @5
-(label) @6
+(label) @8
+(label) @9
(label) @begin
(label) @end
(byte*) CIA1_PORT_A
@@ -1602,8 +2072,8 @@ SYMBOL TABLE SSA
(byte) keyboard_key_pressed::return#4
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0
-(byte[]) keyboard_matrix_col_bitmask
-(byte[]) keyboard_matrix_col_bitmask#0
+(byte[8]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask#0
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte~) keyboard_matrix_read::$0
(label) keyboard_matrix_read::@return
@@ -1745,7 +2215,7 @@ SYMBOL TABLE SSA
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) main::@27
Culled Empty Block (label) main::@3
-Culled Empty Block (label) @6
+Culled Empty Block (label) @9
Succesful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not (boolean~) main::$7 ← (byte~) main::$5 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) main::$6 ← (byte~) main::$5 != (byte/signed byte/word/signed word/dword/signed dword) 0
Inversing boolean not (boolean~) main::$15 ← (byte) main::key#0 == (byte/signed byte/word/signed word/dword/signed dword) 63 from (boolean~) main::$14 ← (byte) main::key#0 != (byte/signed byte/word/signed word/dword/signed dword) 63
@@ -1908,7 +2378,7 @@ Constant (const byte) KEY_2#0 = 59
Constant (const byte) KEY_SPACE#0 = 60
Constant (const byte) KEY_Q#0 = 62
Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { 254, 253, 251, 247, 239, 223, 191, 127 }
-Constant (const byte[]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 }
+Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 }
Constant (const byte*) main::sc#0 = ((byte*))1024
Constant (const word/signed word/dword/signed dword) main::$0 = 1024+1000
Constant (const byte*) main::screen#0 = ((byte*))1024
@@ -1976,7 +2446,7 @@ Constant inlined main::sc#0 = ((byte*))(word/signed word/dword/signed dword) 102
Constant inlined main::row#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::ch#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Succesful SSA optimization Pass2ConstantInlining
-Block Sequence Planned @begin @5 @end main main::@1 main::@14 main::@2 main::@return main::@5 main::@6 main::@28 main::@7 main::@18 main::@9 main::@20 main::@21 main::@10 main::@29 main::@22 main::@30 main::@23 main::@11 main::@13 main::@8 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return keyboard_init keyboard_init::@return
+Block Sequence Planned @begin @8 @end main main::@1 main::@14 main::@2 main::@return main::@5 main::@6 main::@28 main::@7 main::@18 main::@9 main::@20 main::@21 main::@10 main::@29 main::@22 main::@30 main::@23 main::@11 main::@13 main::@8 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return keyboard_init keyboard_init::@return
Added new block during phi lifting main::@31(between main::@1 and main::@1)
Added new block during phi lifting main::@32(between main::@20 and main::@6)
Added new block during phi lifting main::@33(between main::@9 and main::@7)
@@ -1985,9 +2455,9 @@ Added new block during phi lifting main::@35(between main::@30 and main::@11)
Added new block during phi lifting main::@36(between main::@29 and main::@11)
Added new block during phi lifting main::@37(between main::@11 and main::@13)
Added new block during phi lifting main::@38(between main::@13 and main::@13)
-Block Sequence Planned @begin @5 @end main main::@1 main::@14 main::@2 main::@return main::@5 main::@6 main::@28 main::@7 main::@18 main::@9 main::@20 main::@21 main::@10 main::@29 main::@22 main::@30 main::@23 main::@11 main::@37 main::@13 main::@38 main::@34 main::@35 main::@36 main::@32 main::@33 main::@8 main::@31 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return keyboard_init keyboard_init::@return
+Block Sequence Planned @begin @8 @end main main::@1 main::@14 main::@2 main::@return main::@5 main::@6 main::@28 main::@7 main::@18 main::@9 main::@20 main::@21 main::@10 main::@29 main::@22 main::@30 main::@23 main::@11 main::@37 main::@13 main::@38 main::@34 main::@35 main::@36 main::@32 main::@33 main::@8 main::@31 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return keyboard_init keyboard_init::@return
Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @5
+Adding NOP phi() at start of @8
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@14
@@ -2035,9 +2505,9 @@ Culled Empty Block (label) main::@36
Culled Empty Block (label) main::@32
Culled Empty Block (label) main::@33
Culled Empty Block (label) main::@31
-Block Sequence Planned @begin @5 @end main main::@1 main::@14 main::@2 main::@return main::@5 main::@6 main::@28 main::@7 main::@18 main::@9 main::@20 main::@21 main::@10 main::@29 main::@22 main::@30 main::@23 main::@11 main::@13 main::@8 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return keyboard_init keyboard_init::@return
+Block Sequence Planned @begin @8 @end main main::@1 main::@14 main::@2 main::@return main::@5 main::@6 main::@28 main::@7 main::@18 main::@9 main::@20 main::@21 main::@10 main::@29 main::@22 main::@30 main::@23 main::@11 main::@13 main::@8 keyboard_key_pressed keyboard_key_pressed::@2 keyboard_key_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return keyboard_get_keycode keyboard_get_keycode::@return keyboard_init keyboard_init::@return
Adding NOP phi() at start of @begin
-Adding NOP phi() at start of @5
+Adding NOP phi() at start of @8
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@14
@@ -2057,14 +2527,14 @@ Propagating live ranges...
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi() [ ] ( )
- to:@5
-@5: scope:[] from @begin
+ to:@8
+@8: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
-@end: scope:[] from @5
+@end: scope:[] from @8
[3] phi() [ ] ( )
-main: scope:[main] from @5
+main: scope:[main] from @8
[4] phi() [ ] ( main:2 [ ] )
to:main::@1
main::@1: scope:[main] from main main::@1
@@ -2165,7 +2635,7 @@ keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@22
to:keyboard_key_pressed::@2
keyboard_key_pressed::@2: scope:[keyboard_key_pressed] from keyboard_key_pressed
[56] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
- [57] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] )
+ [57] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] )
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@2
[58] return [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] )
@@ -2194,38 +2664,38 @@ keyboard_init::@return: scope:[keyboard_init] from keyboard_init
DOMINATORS
@begin dominated by @begin
-@5 dominated by @begin @5
-@end dominated by @end @begin @5
-main dominated by main @begin @5
-main::@1 dominated by main main::@1 @begin @5
-main::@14 dominated by main main::@1 @begin main::@14 @5
-main::@2 dominated by main main::@1 main::@2 @begin main::@14 @5
-main::@return dominated by main::@return main main::@1 main::@2 @begin main::@14 @5
-main::@5 dominated by main main::@1 main::@2 main::@5 @begin main::@14 @5
-main::@6 dominated by main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @5
-main::@28 dominated by main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @5
-main::@7 dominated by main::@7 main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @5
-main::@18 dominated by main::@7 main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@18 main::@14 @5
-main::@9 dominated by main::@9 main::@7 main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @5
-main::@20 dominated by main::@9 main::@20 main::@7 main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @5
-main::@21 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @5
-main::@10 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@10 main::@14 @5
-main::@29 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@29 main::@1 main::@2 main::@5 main::@6 @begin main::@10 main::@14 @5
-main::@22 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 main::@2 main::@5 main::@6 @begin main::@10 main::@14 @5
-main::@30 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 main::@2 main::@5 main::@6 main::@30 @begin main::@10 main::@14 @5
-main::@23 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@23 main::@1 main::@2 main::@5 main::@6 main::@30 @begin main::@10 main::@14 @5
-main::@11 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@29 main::@1 main::@2 main::@5 main::@6 main::@11 @begin main::@10 main::@14 @5
-main::@13 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@29 main::@1 main::@2 main::@5 main::@6 main::@11 @begin main::@10 main::@13 main::@14 @5
-main::@8 dominated by main::@7 main::@8 main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @5
-keyboard_key_pressed dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 main::@2 main::@5 main::@6 @begin main::@10 main::@14 keyboard_key_pressed @5
-keyboard_key_pressed::@2 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 main::@2 keyboard_key_pressed::@2 main::@5 main::@6 @begin main::@10 main::@14 keyboard_key_pressed @5
-keyboard_key_pressed::@return dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 keyboard_key_pressed::@return main::@1 main::@2 keyboard_key_pressed::@2 main::@5 main::@6 @begin main::@10 main::@14 keyboard_key_pressed @5
-keyboard_matrix_read dominated by keyboard_matrix_read main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @5
-keyboard_matrix_read::@return dominated by keyboard_matrix_read main main::@1 main::@2 main::@5 main::@6 @begin keyboard_matrix_read::@return main::@14 @5
-keyboard_get_keycode dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@2 main::@5 main::@6 keyboard_get_keycode @begin main::@10 main::@14 @5
-keyboard_get_keycode::@return dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@2 main::@5 main::@6 keyboard_get_keycode @begin main::@10 main::@14 @5 keyboard_get_keycode::@return
-keyboard_init dominated by main keyboard_init main::@1 @begin main::@14 @5
-keyboard_init::@return dominated by main keyboard_init main::@1 keyboard_init::@return @begin main::@14 @5
+@8 dominated by @begin @8
+@end dominated by @end @begin @8
+main dominated by main @begin @8
+main::@1 dominated by main main::@1 @begin @8
+main::@14 dominated by main main::@1 @begin main::@14 @8
+main::@2 dominated by main main::@1 main::@2 @begin main::@14 @8
+main::@return dominated by main::@return main main::@1 main::@2 @begin main::@14 @8
+main::@5 dominated by main main::@1 main::@2 main::@5 @begin main::@14 @8
+main::@6 dominated by main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @8
+main::@28 dominated by main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @8
+main::@7 dominated by main::@7 main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @8
+main::@18 dominated by main::@7 main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@18 main::@14 @8
+main::@9 dominated by main::@9 main::@7 main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @8
+main::@20 dominated by main::@9 main::@20 main::@7 main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @8
+main::@21 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @8
+main::@10 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@10 main::@14 @8
+main::@29 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@29 main::@1 main::@2 main::@5 main::@6 @begin main::@10 main::@14 @8
+main::@22 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 main::@2 main::@5 main::@6 @begin main::@10 main::@14 @8
+main::@30 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 main::@2 main::@5 main::@6 main::@30 @begin main::@10 main::@14 @8
+main::@23 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@23 main::@1 main::@2 main::@5 main::@6 main::@30 @begin main::@10 main::@14 @8
+main::@11 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@29 main::@1 main::@2 main::@5 main::@6 main::@11 @begin main::@10 main::@14 @8
+main::@13 dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@29 main::@1 main::@2 main::@5 main::@6 main::@11 @begin main::@10 main::@13 main::@14 @8
+main::@8 dominated by main::@7 main::@8 main::@28 main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @8
+keyboard_key_pressed dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 main::@2 main::@5 main::@6 @begin main::@10 main::@14 keyboard_key_pressed @8
+keyboard_key_pressed::@2 dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 main::@1 main::@2 keyboard_key_pressed::@2 main::@5 main::@6 @begin main::@10 main::@14 keyboard_key_pressed @8
+keyboard_key_pressed::@return dominated by main::@9 main::@20 main::@7 main::@22 main::@21 main::@28 main main::@29 keyboard_key_pressed::@return main::@1 main::@2 keyboard_key_pressed::@2 main::@5 main::@6 @begin main::@10 main::@14 keyboard_key_pressed @8
+keyboard_matrix_read dominated by keyboard_matrix_read main main::@1 main::@2 main::@5 main::@6 @begin main::@14 @8
+keyboard_matrix_read::@return dominated by keyboard_matrix_read main main::@1 main::@2 main::@5 main::@6 @begin keyboard_matrix_read::@return main::@14 @8
+keyboard_get_keycode dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@2 main::@5 main::@6 keyboard_get_keycode @begin main::@10 main::@14 @8
+keyboard_get_keycode::@return dominated by main::@9 main::@20 main::@7 main::@21 main::@28 main main::@1 main::@2 main::@5 main::@6 keyboard_get_keycode @begin main::@10 main::@14 @8 keyboard_get_keycode::@return
+keyboard_init dominated by main keyboard_init main::@1 @begin main::@14 @8
+keyboard_init::@return dominated by main keyboard_init main::@1 keyboard_init::@return @begin main::@14 @8
NATURAL LOOPS
Found back edge: Loop head: main::@1 tails: main::@1 blocks: null
@@ -2348,7 +2818,7 @@ VARIABLE REGISTER WEIGHTS
(byte) keyboard_key_pressed::return#2 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 4.0
-(byte[]) keyboard_matrix_col_bitmask
+(byte[8]) keyboard_matrix_col_bitmask
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(byte) keyboard_matrix_read::return
(byte) keyboard_matrix_read::return#0 26.25
@@ -2530,17 +3000,17 @@ INITIAL ASM
.const KEY_Q = $3e
//SEG2 @begin
bbegin:
-//SEG3 [1] phi from @begin to @5 [phi:@begin->@5]
-b5_from_bbegin:
- jmp b5
-//SEG4 @5
-b5:
+//SEG3 [1] phi from @begin to @8 [phi:@begin->@8]
+b8_from_bbegin:
+ jmp b8
+//SEG4 @8
+b8:
//SEG5 [2] call main param-assignment [ ] ( )
-//SEG6 [4] phi from @5 to main [phi:@5->main]
-main_from_b5:
+//SEG6 [4] phi from @8 to main [phi:@8->main]
+main_from_b8:
jsr main
-//SEG7 [3] phi from @5 to @end [phi:@5->@end]
-bend_from_b5:
+//SEG7 [3] phi from @8 to @end [phi:@8->@end]
+bend_from_b8:
jmp bend
//SEG8 @end
bend:
@@ -2852,7 +3322,7 @@ keyboard_key_pressed: {
//SEG107 [56] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ) -- vbuz1=vbuz2
lda keyboard_matrix_read.return_2
sta _2
- //SEG108 [57] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] ) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3
+ //SEG108 [57] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] ) -- vbuz1=vbuz2_band_pbuc1_derefidx_vbuz3
lda _2
ldy colidx
and keyboard_matrix_col_bitmask,y
@@ -2935,7 +3405,7 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ ma
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:19 [ keyboard_key_pressed::key#0 ]
Statement [52] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ keyboard_key_pressed::colidx#0 ]
-Statement [57] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
+Statement [57] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
Statement [60] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#2) [ ] ( main:2::keyboard_matrix_read:16 [ main::row#2 main::screen#13 ] main:2::keyboard_key_pressed:37::keyboard_matrix_read:54 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
Statement [61] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_matrix_read:16 [ main::row#2 main::screen#13 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:37::keyboard_matrix_read:54 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a
Statement [65] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:2::keyboard_init:10 [ ] ) always clobbers reg byte a
@@ -2952,7 +3422,7 @@ Statement [47] *((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' ' [ mai
Statement [50] *((byte*) main::screen#13 + (byte) main::col#2) ← (byte) '0' [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] ( main:2 [ main::row#2 main::screen#13 main::row_pressed_bits#2 main::col#2 ] ) always clobbers reg byte a
Statement [51] (byte) keyboard_key_pressed::colidx#0 ← (byte) keyboard_key_pressed::key#0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ keyboard_key_pressed::key#0 keyboard_key_pressed::colidx#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::key#0 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
Statement [52] (byte) keyboard_key_pressed::rowidx#0 ← (byte) keyboard_key_pressed::key#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::rowidx#0 ] ) always clobbers reg byte a
-Statement [57] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
+Statement [57] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] ) always clobbers reg byte a
Statement [60] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0 + (byte) keyboard_matrix_read::rowid#2) [ ] ( main:2::keyboard_matrix_read:16 [ main::row#2 main::screen#13 ] main:2::keyboard_key_pressed:37::keyboard_matrix_read:54 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::colidx#0 ] ) always clobbers reg byte a
Statement [61] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0) [ keyboard_matrix_read::return#0 ] ( main:2::keyboard_matrix_read:16 [ main::row#2 main::screen#13 keyboard_matrix_read::return#0 ] main:2::keyboard_key_pressed:37::keyboard_matrix_read:54 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::colidx#0 keyboard_matrix_read::return#0 ] ) always clobbers reg byte a
Statement [65] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) 255 [ ] ( main:2::keyboard_init:10 [ ] ) always clobbers reg byte a
@@ -3079,17 +3549,17 @@ ASSEMBLER BEFORE OPTIMIZATION
.const KEY_Q = $3e
//SEG2 @begin
bbegin:
-//SEG3 [1] phi from @begin to @5 [phi:@begin->@5]
-b5_from_bbegin:
- jmp b5
-//SEG4 @5
-b5:
+//SEG3 [1] phi from @begin to @8 [phi:@begin->@8]
+b8_from_bbegin:
+ jmp b8
+//SEG4 @8
+b8:
//SEG5 [2] call main param-assignment [ ] ( )
-//SEG6 [4] phi from @5 to main [phi:@5->main]
-main_from_b5:
+//SEG6 [4] phi from @8 to main [phi:@8->main]
+main_from_b8:
jsr main
-//SEG7 [3] phi from @5 to @end [phi:@5->@end]
-bend_from_b5:
+//SEG7 [3] phi from @8 to @end [phi:@8->@end]
+bend_from_b8:
jmp bend
//SEG8 @end
bend:
@@ -3372,7 +3842,7 @@ keyboard_key_pressed: {
b2:
//SEG107 [56] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
// (byte~) keyboard_key_pressed::$2 = (byte) keyboard_matrix_read::return#2 // register copy reg byte a
- //SEG108 [57] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1
+ //SEG108 [57] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1
ldy colidx
and keyboard_matrix_col_bitmask,y
jmp breturn
@@ -3424,7 +3894,7 @@ keyboard_init: {
keyboard_char_keycodes: .byte KEY_AT, KEY_A, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L, KEY_M, KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, $3f, KEY_POUND, $3f, KEY_ARROW_UP, KEY_ARROW_LEFT, KEY_SPACE, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, $3f, KEY_ASTERISK, KEY_PLUS, KEY_COMMA, KEY_MINUS, KEY_DOT, KEY_SLASH, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_COLON, KEY_SEMICOLON, $3f, KEY_EQUALS, $3f, $3f
ASSEMBLER OPTIMIZATIONS
-Removing instruction jmp b5
+Removing instruction jmp b8
Removing instruction jmp bend
Removing instruction jmp b1
Removing instruction jmp b14
@@ -3460,9 +3930,9 @@ Replacing label b11_from_b30 with b11
Replacing label b10_from_b11 with b10
Replacing label b13_from_b13 with b13
Removing instruction bbegin:
-Removing instruction b5_from_bbegin:
-Removing instruction main_from_b5:
-Removing instruction bend_from_b5:
+Removing instruction b8_from_bbegin:
+Removing instruction main_from_b8:
+Removing instruction bend_from_b8:
Removing instruction b1_from_b1:
Removing instruction b14_from_b1:
Removing instruction b6_from_b20:
@@ -3474,7 +3944,7 @@ Removing instruction b11_from_b30:
Removing instruction b13_from_b11:
Removing instruction b13_from_b13:
Succesful ASM optimization Pass5RedundantLabelElimination
-Removing instruction b5:
+Removing instruction b8:
Removing instruction bend:
Removing instruction b1_from_main:
Removing instruction b14:
@@ -3512,7 +3982,7 @@ Removing instruction b2:
Succesful ASM optimization Pass5RedundantLabelElimination
FINAL SYMBOL TABLE
-(label) @5
+(label) @8
(label) @begin
(label) @end
(byte*) CIA1_PORT_A
@@ -3649,8 +4119,8 @@ FINAL SYMBOL TABLE
(byte) keyboard_key_pressed::return#2 reg byte a 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(byte[]) keyboard_matrix_col_bitmask
-(const byte[]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+(byte[8]) keyboard_matrix_col_bitmask
+(const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
@@ -3803,12 +4273,12 @@ Score: 56827
.const KEY_SPACE = $3c
.const KEY_Q = $3e
//SEG2 @begin
-//SEG3 [1] phi from @begin to @5 [phi:@begin->@5]
-//SEG4 @5
+//SEG3 [1] phi from @begin to @8 [phi:@begin->@8]
+//SEG4 @8
//SEG5 [2] call main param-assignment [ ] ( )
-//SEG6 [4] phi from @5 to main [phi:@5->main]
+//SEG6 [4] phi from @8 to main [phi:@8->main]
jsr main
-//SEG7 [3] phi from @5 to @end [phi:@5->@end]
+//SEG7 [3] phi from @8 to @end [phi:@8->@end]
//SEG8 @end
//SEG9 main
main: {
@@ -4036,7 +4506,7 @@ keyboard_key_pressed: {
//SEG106 keyboard_key_pressed::@2
//SEG107 [56] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2 [ keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::colidx#0 keyboard_key_pressed::$2 ] )
// (byte~) keyboard_key_pressed::$2 = (byte) keyboard_matrix_read::return#2 // register copy reg byte a
- //SEG108 [57] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1
+ //SEG108 [57] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0 + (byte) keyboard_key_pressed::colidx#0) [ keyboard_key_pressed::return#0 ] ( main:2::keyboard_key_pressed:37 [ main::screen#2 main::ch#2 main::i#10 keyboard_key_pressed::return#0 ] ) -- vbuaa=vbuaa_band_pbuc1_derefidx_vbuz1
ldy colidx
and keyboard_matrix_col_bitmask,y
//SEG109 keyboard_key_pressed::@return
diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.sym b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.sym
index 644c0db82..554d9c1f5 100644
--- a/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.sym
+++ b/src/test/java/dk/camelot64/kickc/test/ref/test-keyboard.sym
@@ -1,4 +1,4 @@
-(label) @5
+(label) @8
(label) @begin
(label) @end
(byte*) CIA1_PORT_A
@@ -135,8 +135,8 @@
(byte) keyboard_key_pressed::return#2 reg byte a 202.0
(byte) keyboard_key_pressed::rowidx
(byte) keyboard_key_pressed::rowidx#0 reg byte a 4.0
-(byte[]) keyboard_matrix_col_bitmask
-(const byte[]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
+(byte[8]) keyboard_matrix_col_bitmask
+(const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (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) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return