mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-20 04:37:53 +00:00
Fixed problem with PHI-blocks still referencing blocks that no longer call them bacause of constant bool if()s.
This commit is contained in:
parent
2fb9619381
commit
ee6e58f79c
src
main/java/dk/camelot64/kickc/passes
test/java/dk/camelot64/kickc/test
@ -7,6 +7,7 @@ import dk.camelot64.kickc.model.statements.StatementConditionalJump;
|
||||
import dk.camelot64.kickc.model.values.ConstantBool;
|
||||
import dk.camelot64.kickc.model.values.ConstantLiteral;
|
||||
import dk.camelot64.kickc.model.values.ConstantValue;
|
||||
import dk.camelot64.kickc.model.values.LabelRef;
|
||||
|
||||
import java.util.ListIterator;
|
||||
|
||||
@ -34,6 +35,7 @@ public class Pass2ConstantIfs extends Pass2SsaOptimization {
|
||||
if(((ConstantBool) literal).getBool()) {
|
||||
// if()-value always true - remove if and replace destination
|
||||
getLog().append("if() condition always true - replacing block destination "+statement.toString(getProgram(), false));
|
||||
Pass2EliminateUnusedBlocks.removePhiRValues(block.getLabel(), getGraph().getDefaultSuccessor(block), getLog());
|
||||
block.setDefaultSuccessor(conditionalJump.getDestination());
|
||||
statementsIt.remove();
|
||||
block.setConditionalSuccessor(null);
|
||||
@ -41,6 +43,7 @@ public class Pass2ConstantIfs extends Pass2SsaOptimization {
|
||||
} else {
|
||||
// if()-value always false - remove if()
|
||||
getLog().append("if() condition always false - eliminating if "+statement.toString(getProgram(), false));
|
||||
Pass2EliminateUnusedBlocks.removePhiRValues(block.getLabel(), getGraph().getConditionalSuccessor(block), getLog());
|
||||
statementsIt.remove();
|
||||
block.setConditionalSuccessor(null);
|
||||
modified = true;
|
||||
|
@ -1,12 +1,15 @@
|
||||
package dk.camelot64.kickc.passes;
|
||||
|
||||
import dk.camelot64.kickc.CompileLog;
|
||||
import dk.camelot64.kickc.model.ControlFlowBlock;
|
||||
import dk.camelot64.kickc.model.Program;
|
||||
import dk.camelot64.kickc.model.statements.StatementPhiBlock;
|
||||
import dk.camelot64.kickc.model.symbols.Label;
|
||||
import dk.camelot64.kickc.model.values.LabelRef;
|
||||
import dk.camelot64.kickc.model.values.SymbolRef;
|
||||
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.ListIterator;
|
||||
import java.util.Set;
|
||||
|
||||
/** Pass that eliminates constant if's - they are either removed (if false) or replaces the default successor (if true). */
|
||||
@ -32,11 +35,43 @@ public class Pass2EliminateUnusedBlocks extends Pass2SsaOptimization {
|
||||
getGraph().remove(unusedBlock);
|
||||
Label label = getScope().getLabel(unusedBlock);
|
||||
label.getScope().remove(label);
|
||||
removePhiRValues(unusedBlock);
|
||||
getLog().append("Removing unused block "+unusedBlock);
|
||||
}
|
||||
return unusedBlocks.size()>0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove all PHI RValues in any phi-statements referencing the passed block
|
||||
* @param removeBlock The block to remove from PHI RValues
|
||||
*/
|
||||
private void removePhiRValues(LabelRef removeBlock) {
|
||||
for(ControlFlowBlock block : getGraph().getAllBlocks()) {
|
||||
removePhiRValues(removeBlock, block, getLog());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove all Phi RValues in phi-statements referencing the passed block
|
||||
*
|
||||
* @param removeBlock The block to remove from PHI RValues
|
||||
* @param block The block to modify
|
||||
*/
|
||||
public static void removePhiRValues(LabelRef removeBlock, ControlFlowBlock block, CompileLog log) {
|
||||
if(block.hasPhiBlock()) {
|
||||
for(StatementPhiBlock.PhiVariable phiVariable : block.getPhiBlock().getPhiVariables()) {
|
||||
ListIterator<StatementPhiBlock.PhiRValue> phiRValueIt = phiVariable.getValues().listIterator();
|
||||
while(phiRValueIt.hasNext()) {
|
||||
StatementPhiBlock.PhiRValue phiRValue = phiRValueIt.next();
|
||||
if(phiRValue.getPredecessor().equals(removeBlock)) {
|
||||
log.append("Removing PHI-reference to removed block ("+removeBlock+") in block "+block.getLabel());
|
||||
phiRValueIt.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Find all referenced block labels recursively
|
||||
* @param block The block to add (inc. all blocks that this block calls or jumps to)
|
||||
|
@ -45,6 +45,12 @@ public class TestPrograms {
|
||||
AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEmptyBlockError() throws IOException, URISyntaxException {
|
||||
compileAndCompare("emptyblock-error");
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testBoolMin() throws IOException, URISyntaxException {
|
||||
compileAndCompare("bool-min");
|
||||
|
27
src/test/java/dk/camelot64/kickc/test/kc/emptyblock-error.kc
Normal file
27
src/test/java/dk/camelot64/kickc/test/kc/emptyblock-error.kc
Normal file
@ -0,0 +1,27 @@
|
||||
// Error cleaning up unused blocks
|
||||
|
||||
|
||||
void main() {
|
||||
while(true) {
|
||||
menu();
|
||||
}
|
||||
}
|
||||
|
||||
void menu() {
|
||||
while(true) {
|
||||
mode();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
byte a = 0;
|
||||
byte *B = $1000;
|
||||
|
||||
void mode() {
|
||||
while(true) {
|
||||
if(*B == 0) {
|
||||
a = *B;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -126,7 +126,6 @@
|
||||
.label print_char_cursor = 5
|
||||
.label print_line_cursor = $10
|
||||
.label keyboard_events_size = 8
|
||||
.label keyboard_modifiers = 7
|
||||
.label form_cursor_count = $d
|
||||
.label form_field_idx = $e
|
||||
jsr main
|
||||
@ -142,7 +141,6 @@ main: {
|
||||
jsr gfx_init
|
||||
lda #0
|
||||
sta form_field_idx
|
||||
sta keyboard_modifiers
|
||||
sta keyboard_events_size
|
||||
lda #FORM_CURSOR_BLINK/2
|
||||
sta form_cursor_count
|
||||
@ -537,39 +535,37 @@ keyboard_event_scan: {
|
||||
jsr keyboard_event_pressed
|
||||
cmp #0
|
||||
beq b5
|
||||
lda #0|KEY_MODIFIER_LSHIFT
|
||||
sta keyboard_modifiers
|
||||
ldx #0|KEY_MODIFIER_LSHIFT
|
||||
jmp b9
|
||||
b5:
|
||||
lda #0
|
||||
sta keyboard_modifiers
|
||||
ldx #0
|
||||
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
|
||||
txa
|
||||
ora #KEY_MODIFIER_RSHIFT
|
||||
tax
|
||||
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
|
||||
txa
|
||||
ora #KEY_MODIFIER_CTRL
|
||||
tax
|
||||
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
|
||||
txa
|
||||
ora #KEY_MODIFIER_COMMODORE
|
||||
tax
|
||||
breturn:
|
||||
rts
|
||||
b6:
|
||||
@ -586,18 +582,20 @@ keyboard_event_scan: {
|
||||
jmp b8
|
||||
}
|
||||
keyboard_event_pressed: {
|
||||
.label row_bits = 7
|
||||
.label keycode = 2
|
||||
lda keycode
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
tax
|
||||
ldy keyboard_scan_values,x
|
||||
tay
|
||||
lda keyboard_scan_values,y
|
||||
sta row_bits
|
||||
lda #7
|
||||
and keycode
|
||||
tax
|
||||
tya
|
||||
and keyboard_matrix_col_bitmask,x
|
||||
tay
|
||||
lda keyboard_matrix_col_bitmask,y
|
||||
and row_bits
|
||||
rts
|
||||
}
|
||||
keyboard_matrix_read: {
|
||||
@ -1249,8 +1247,8 @@ form_control: {
|
||||
ldy #0
|
||||
and (field),y
|
||||
sta (field),y
|
||||
lda #KEY_MODIFIER_SHIFT
|
||||
and keyboard_modifiers
|
||||
txa
|
||||
and #KEY_MODIFIER_SHIFT
|
||||
cmp #0
|
||||
bne b5
|
||||
inc form_field_idx
|
||||
@ -1276,8 +1274,8 @@ form_control: {
|
||||
b4:
|
||||
cmp #KEY_CRSR_RIGHT
|
||||
bne b9
|
||||
lda #KEY_MODIFIER_SHIFT
|
||||
and keyboard_modifiers
|
||||
txa
|
||||
and #KEY_MODIFIER_SHIFT
|
||||
cmp #0
|
||||
bne b10
|
||||
ldx form_field_idx
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -558,18 +558,16 @@
|
||||
(const byte*) form_ctrl_overs#0 form_ctrl_overs = (const byte[]) form_fields_val#0+(byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(signed byte) form_cursor_count
|
||||
(signed byte) form_cursor_count#1 form_cursor_count zp ZP_BYTE:13 0.3333333333333333
|
||||
(signed byte) form_cursor_count#13 form_cursor_count zp ZP_BYTE:13 402.59999999999997
|
||||
(signed byte) form_cursor_count#15 form_cursor_count zp ZP_BYTE:13 0.4
|
||||
(signed byte) form_cursor_count#16 form_cursor_count zp ZP_BYTE:13 162.23076923076925
|
||||
(signed byte) form_cursor_count#21 form_cursor_count zp ZP_BYTE:13 301.0
|
||||
(signed byte) form_cursor_count#16 form_cursor_count zp ZP_BYTE:13 65.82352941176472
|
||||
(signed byte) form_cursor_count#21 form_cursor_count zp ZP_BYTE:13 158.0
|
||||
(signed byte) form_cursor_count#5 form_cursor_count zp ZP_BYTE:13 2.0
|
||||
(byte*) form_dtv_palet
|
||||
(const byte*) form_dtv_palet#0 form_dtv_palet = (const byte[]) form_fields_val#0+(byte/signed byte/word/signed word/dword/signed dword) 27
|
||||
(byte) form_field_idx
|
||||
(byte) form_field_idx#1 form_field_idx zp ZP_BYTE:14 0.3333333333333333
|
||||
(byte) form_field_idx#14 form_field_idx zp ZP_BYTE:14 402.59999999999997
|
||||
(byte) form_field_idx#18 form_field_idx zp ZP_BYTE:14 162.38461538461542
|
||||
(byte) form_field_idx#28 form_field_idx zp ZP_BYTE:14 54.84615384615385
|
||||
(byte) form_field_idx#18 form_field_idx zp ZP_BYTE:14 65.94117647058826
|
||||
(byte) form_field_idx#28 form_field_idx zp ZP_BYTE:14 29.17948717948718
|
||||
(byte) form_field_idx#32 form_field_idx zp ZP_BYTE:14 6.0
|
||||
(byte) form_field_idx#44 form_field_idx zp ZP_BYTE:14 2.0
|
||||
(byte) form_field_idx#45 form_field_idx zp ZP_BYTE:14 2.0
|
||||
@ -1087,7 +1085,6 @@
|
||||
(label) gfx_mode::@11
|
||||
(label) gfx_mode::@13
|
||||
(label) gfx_mode::@15
|
||||
(label) gfx_mode::@16
|
||||
(label) gfx_mode::@19
|
||||
(label) gfx_mode::@2
|
||||
(label) gfx_mode::@21
|
||||
@ -1187,7 +1184,7 @@
|
||||
(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
|
||||
(byte) keyboard_event_pressed::row_bits#0 row_bits zp ZP_BYTE:7 2.0
|
||||
(void()) keyboard_event_scan()
|
||||
(byte/word/dword~) keyboard_event_scan::$12 reg byte a 200002.0
|
||||
(byte~) keyboard_event_scan::$16 reg byte a 4.0
|
||||
@ -1241,18 +1238,15 @@
|
||||
(byte) keyboard_events_size
|
||||
(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:8 200002.0
|
||||
(byte) keyboard_events_size#100 keyboard_events_size zp ZP_BYTE:8 882.6176470588235
|
||||
(byte) keyboard_events_size#11 keyboard_events_size zp ZP_BYTE:8 71.0
|
||||
(byte) keyboard_events_size#110 keyboard_events_size zp ZP_BYTE:8 105.0
|
||||
(byte) keyboard_events_size#118 keyboard_events_size zp ZP_BYTE:8 102001.2
|
||||
(byte) keyboard_events_size#119 keyboard_events_size zp ZP_BYTE:8 4286.428571428572
|
||||
(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:8 16.571428571428573
|
||||
(byte) keyboard_events_size#18 keyboard_events_size zp ZP_BYTE:8 81000.90000000001
|
||||
(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:8 200002.0
|
||||
(byte) keyboard_events_size#24 keyboard_events_size zp ZP_BYTE:8 50.19565217391305
|
||||
(byte) keyboard_events_size#24 keyboard_events_size zp ZP_BYTE:8 6.6923076923076925
|
||||
(byte) keyboard_events_size#27 keyboard_events_size zp ZP_BYTE:8 0.3333333333333333
|
||||
(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:8 3.0
|
||||
(byte) keyboard_events_size#45 keyboard_events_size zp ZP_BYTE:8 168.33333333333331
|
||||
(byte) keyboard_events_size#47 keyboard_events_size zp ZP_BYTE:8 123.94117647058823
|
||||
(byte) keyboard_events_size#47 keyboard_events_size zp ZP_BYTE:8 65.05882352941177
|
||||
(void()) keyboard_init()
|
||||
(label) keyboard_init::@return
|
||||
(byte[8]) keyboard_matrix_col_bitmask
|
||||
@ -1268,18 +1262,13 @@
|
||||
(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#11 keyboard_modifiers zp ZP_BYTE:7 71.0
|
||||
(byte) keyboard_modifiers#13 keyboard_modifiers zp ZP_BYTE:7 16.571428571428573
|
||||
(byte) keyboard_modifiers#18 keyboard_modifiers zp ZP_BYTE:7 0.8
|
||||
(byte) keyboard_modifiers#19 keyboard_modifiers zp ZP_BYTE:7 1.6
|
||||
(byte) keyboard_modifiers#20 keyboard_modifiers zp ZP_BYTE:7 1.6
|
||||
(byte) keyboard_modifiers#21 keyboard_modifiers zp ZP_BYTE:7 46.26
|
||||
(byte) keyboard_modifiers#24 keyboard_modifiers zp ZP_BYTE:7 0.3333333333333333
|
||||
(byte) keyboard_modifiers#3 keyboard_modifiers zp ZP_BYTE:7 4.0
|
||||
(byte) keyboard_modifiers#4 keyboard_modifiers zp ZP_BYTE:7 4.0
|
||||
(byte) keyboard_modifiers#42 keyboard_modifiers zp ZP_BYTE:7 4040.0
|
||||
(byte) keyboard_modifiers#45 keyboard_modifiers zp ZP_BYTE:7 21050.0
|
||||
(byte) keyboard_modifiers#5 keyboard_modifiers zp ZP_BYTE:7 4.0
|
||||
(byte) keyboard_modifiers#18 reg byte x 0.8
|
||||
(byte) keyboard_modifiers#19 reg byte x 1.6
|
||||
(byte) keyboard_modifiers#20 reg byte x 1.6
|
||||
(byte) keyboard_modifiers#21 reg byte x 0.7272727272727273
|
||||
(byte) keyboard_modifiers#3 reg byte x 4.0
|
||||
(byte) keyboard_modifiers#4 reg byte x 4.0
|
||||
(byte) keyboard_modifiers#5 reg byte x 4.0
|
||||
(byte[8]) keyboard_scan_values
|
||||
(const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) }
|
||||
(void()) main()
|
||||
@ -1407,14 +1396,15 @@ reg byte x [ gfx_mode::i#2 gfx_mode::i#1 ]
|
||||
reg byte x [ gfx_mode::j#2 gfx_mode::j#1 ]
|
||||
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:7 [ keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#15 keyboard_event_scan::keycode#1 keyboard_modifiers#45 keyboard_modifiers#24 keyboard_modifiers#11 keyboard_modifiers#42 keyboard_modifiers#13 keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line::xd#1 bitmap_line::xd#0 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#1 bitmap_line_ydxd::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 gfx_init_screen3::$1 gfx_init_screen2::col2#0 gfx_init_screen0::$1 ]
|
||||
zp ZP_BYTE:8 [ keyboard_events_size#18 keyboard_events_size#119 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#11 keyboard_events_size#45 keyboard_events_size#13 keyboard_events_size#24 keyboard_events_size#4 keyboard_events_size#100 keyboard_events_size#118 keyboard_events_size#2 keyboard_events_size#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#1 bitmap_line_ydxd::yd#0 bitmap_line::yd#0 bitmap_line::yd#3 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ]
|
||||
zp ZP_BYTE:7 [ 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 gfx_init_plane_fill::by#4 gfx_init_plane_fill::by#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line::xd#1 bitmap_line::xd#0 bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#0 bitmap_line_xdyi::xd#1 bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#1 bitmap_line_ydxd::xd#0 bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::xd#1 keyboard_event_pressed::row_bits#0 gfx_init_screen3::$1 gfx_init_screen2::col2#0 gfx_init_screen0::$1 ]
|
||||
zp ZP_BYTE:8 [ keyboard_events_size#18 keyboard_events_size#119 keyboard_events_size#110 keyboard_events_size#47 keyboard_events_size#27 keyboard_events_size#24 keyboard_events_size#4 keyboard_events_size#100 keyboard_events_size#118 keyboard_events_size#2 keyboard_events_size#1 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 bitmap_line::yd#1 bitmap_line::yd#10 bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#0 bitmap_line_xdyi::yd#1 bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#1 bitmap_line_ydxd::yd#0 bitmap_line::yd#0 bitmap_line::yd#3 bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#0 bitmap_line_xdyd::yd#1 ]
|
||||
reg byte x [ keyboard_modifiers#21 keyboard_modifiers#20 keyboard_modifiers#4 keyboard_modifiers#19 keyboard_modifiers#3 keyboard_modifiers#18 keyboard_modifiers#5 ]
|
||||
reg byte a [ get_vic_screen::idx#2 get_vic_screen::idx#0 get_vic_screen::idx#1 ]
|
||||
reg byte a [ get_plane::idx#10 get_plane::idx#1 get_plane::idx#0 ]
|
||||
zp ZP_DWORD:9 [ get_plane::return#1 get_plane::return#16 get_plane::return#17 gfx_mode::$31 gfx_mode::plane_a#0 gfx_mode::$45 gfx_mode::plane_b#0 gfx_init_plane_fill::plane_addr#3 ]
|
||||
reg byte x [ form_mode::i#2 form_mode::i#1 ]
|
||||
zp ZP_BYTE:13 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#13 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y0#0 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#1 bitmap_line_ydxd::y1#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ]
|
||||
zp ZP_BYTE:14 [ form_field_idx#28 form_field_idx#1 form_field_idx#14 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#3 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ]
|
||||
zp ZP_BYTE:13 [ form_cursor_count#21 form_cursor_count#1 form_cursor_count#16 form_cursor_count#15 form_cursor_count#5 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 bitmap_line::y0#0 bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#1 bitmap_line_ydxd::y1#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ]
|
||||
zp ZP_BYTE:14 [ form_field_idx#28 form_field_idx#1 form_field_idx#18 form_field_idx#32 form_field_idx#44 form_field_idx#45 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#3 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ]
|
||||
zp ZP_BYTE:15 [ form_mode::preset_current#6 form_mode::preset_current#0 form_mode::preset_current#1 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#0 bitmap_line_xdyi::x1#1 bitmap_line::x0#0 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 bitmap_line_xdyd::$6 ]
|
||||
reg byte a [ render_preset_name::idx#10 render_preset_name::idx#0 render_preset_name::idx#1 ]
|
||||
reg byte x [ form_render_values::idx#2 form_render_values::idx#1 ]
|
||||
@ -1495,7 +1485,6 @@ 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 ]
|
||||
|
@ -76,7 +76,7 @@
|
||||
.const KEY_2 = $3b
|
||||
.const KEY_SPACE = $3c
|
||||
.label print_char_cursor = 5
|
||||
.label dtv_control = 2
|
||||
.label dtv_control = 4
|
||||
.label print_line_cursor = $d
|
||||
jsr main
|
||||
main: {
|
||||
@ -87,8 +87,6 @@ main: {
|
||||
sta PROCPORT
|
||||
lda #DTV_FEATURE_ENABLE
|
||||
sta DTV_FEATURE
|
||||
lda #0
|
||||
sta dtv_control
|
||||
b2:
|
||||
jsr menu
|
||||
jmp b2
|
||||
@ -96,7 +94,7 @@ main: {
|
||||
menu: {
|
||||
.label SCREEN = $8000
|
||||
.label CHARSET = $9800
|
||||
.label c = 3
|
||||
.label c = 2
|
||||
lda #($ffffffff&CHARSET)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #DTV_COLOR_BANK_DEFAULT/$400
|
||||
@ -145,16 +143,14 @@ menu: {
|
||||
jsr print_set_screen
|
||||
jsr print_cls
|
||||
jsr print_str_lines
|
||||
jmp b4
|
||||
breturn:
|
||||
rts
|
||||
b4:
|
||||
ldy #KEY_1
|
||||
jsr keyboard_key_pressed
|
||||
cmp #0
|
||||
beq b6
|
||||
jsr mode_stdchar
|
||||
jmp breturn
|
||||
breturn:
|
||||
rts
|
||||
b6:
|
||||
ldy #KEY_2
|
||||
jsr keyboard_key_pressed
|
||||
@ -239,8 +235,8 @@ mode_8bppchunkybmm: {
|
||||
.const PLANEB = $20000
|
||||
.label _23 = $d
|
||||
.label gfxb = 5
|
||||
.label x = 3
|
||||
.label y = 2
|
||||
.label x = 2
|
||||
.label y = 4
|
||||
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY|DTV_COLORRAM_OFF
|
||||
sta DTV_CONTROL
|
||||
lda #VIC_ECM|VIC_DEN|VIC_RSEL|3
|
||||
@ -330,9 +326,6 @@ mode_8bppchunkybmm: {
|
||||
rts
|
||||
}
|
||||
mode_ctrl: {
|
||||
jmp b4
|
||||
breturn:
|
||||
rts
|
||||
b4:
|
||||
lda RASTER
|
||||
cmp #$ff
|
||||
@ -341,7 +334,7 @@ mode_ctrl: {
|
||||
jsr keyboard_key_pressed
|
||||
cmp #0
|
||||
beq b7
|
||||
jmp breturn
|
||||
rts
|
||||
b7:
|
||||
ldx dtv_control
|
||||
ldy #KEY_L
|
||||
@ -439,14 +432,14 @@ mode_8bpppixelcell: {
|
||||
.label PLANEA = $3c00
|
||||
.label PLANEB = $4000
|
||||
.label _14 = 7
|
||||
.label gfxa = 3
|
||||
.label ay = 2
|
||||
.label gfxa = 2
|
||||
.label ay = 4
|
||||
.label bits = 8
|
||||
.label chargen = 3
|
||||
.label chargen = 2
|
||||
.label gfxb = 5
|
||||
.label col = 9
|
||||
.label cr = 7
|
||||
.label ch = 2
|
||||
.label ch = 4
|
||||
lda #DTV_HIGHCOLOR|DTV_LINEAR|DTV_CHUNKY
|
||||
sta DTV_CONTROL
|
||||
lda #VIC_ECM|VIC_DEN|VIC_RSEL|3
|
||||
@ -577,12 +570,12 @@ mode_sixsfred: {
|
||||
.label PLANEA = $4000
|
||||
.label PLANEB = $6000
|
||||
.label COLORS = $8000
|
||||
.label col = 3
|
||||
.label cy = 2
|
||||
.label gfxa = 3
|
||||
.label ay = 2
|
||||
.label gfxb = 3
|
||||
.label by = 2
|
||||
.label col = 2
|
||||
.label cy = 4
|
||||
.label gfxa = 2
|
||||
.label ay = 4
|
||||
.label gfxb = 2
|
||||
.label by = 4
|
||||
lda #DTV_HIGHCOLOR|DTV_LINEAR
|
||||
sta DTV_CONTROL
|
||||
lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
|
||||
@ -711,12 +704,12 @@ mode_twoplanebitmap: {
|
||||
.label PLANEB = $6000
|
||||
.label COLORS = $8000
|
||||
.label _16 = 7
|
||||
.label col = 3
|
||||
.label cy = 2
|
||||
.label gfxa = 3
|
||||
.label ay = 2
|
||||
.label gfxb = 3
|
||||
.label by = 2
|
||||
.label col = 2
|
||||
.label cy = 4
|
||||
.label gfxa = 2
|
||||
.label ay = 4
|
||||
.label gfxb = 2
|
||||
.label by = 4
|
||||
lda #DTV_HIGHCOLOR|DTV_LINEAR
|
||||
sta DTV_CONTROL
|
||||
lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
|
||||
@ -864,12 +857,12 @@ mode_sixsfred2: {
|
||||
.label PLANEB = $6000
|
||||
.label COLORS = $8000
|
||||
.label _15 = 7
|
||||
.label col = 3
|
||||
.label cy = 2
|
||||
.label gfxa = 3
|
||||
.label ay = 2
|
||||
.label gfxb = 3
|
||||
.label by = 2
|
||||
.label col = 2
|
||||
.label cy = 4
|
||||
.label gfxa = 2
|
||||
.label ay = 4
|
||||
.label gfxb = 2
|
||||
.label by = 4
|
||||
lda #DTV_LINEAR
|
||||
sta DTV_CONTROL
|
||||
lda #VIC_ECM|VIC_BMM|VIC_DEN|VIC_RSEL|3
|
||||
@ -1004,9 +997,9 @@ mode_hicolmcchar: {
|
||||
.label CHARSET = $9000
|
||||
.label COLORS = $8400
|
||||
.label _26 = 7
|
||||
.label col = 3
|
||||
.label col = 2
|
||||
.label ch = 5
|
||||
.label cy = 2
|
||||
.label cy = 4
|
||||
lda #($ffffffff&CHARSET)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #COLORS/$400
|
||||
@ -1092,9 +1085,9 @@ mode_hicolecmchar: {
|
||||
.label CHARSET = $9000
|
||||
.label COLORS = $8400
|
||||
.label _26 = 7
|
||||
.label col = 3
|
||||
.label col = 2
|
||||
.label ch = 5
|
||||
.label cy = 2
|
||||
.label cy = 4
|
||||
lda #($ffffffff&CHARSET)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #COLORS/$400
|
||||
@ -1182,9 +1175,9 @@ mode_hicolstdchar: {
|
||||
.label CHARSET = $9000
|
||||
.label COLORS = $8400
|
||||
.label _25 = 7
|
||||
.label col = 3
|
||||
.label col = 2
|
||||
.label ch = 5
|
||||
.label cy = 2
|
||||
.label cy = 4
|
||||
lda #($ffffffff&CHARSET)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #COLORS/$400
|
||||
@ -1265,9 +1258,9 @@ mode_stdbitmap: {
|
||||
.label BITMAP = $6000
|
||||
.const lines_cnt = 9
|
||||
.label col2 = 7
|
||||
.label ch = 3
|
||||
.label cy = 2
|
||||
.label l = 2
|
||||
.label ch = 2
|
||||
.label cy = 4
|
||||
.label l = 4
|
||||
lda #($ffffffff&BITMAP)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #0
|
||||
@ -1487,8 +1480,8 @@ bitmap_line_ydxi: {
|
||||
rts
|
||||
}
|
||||
bitmap_plot: {
|
||||
.label _0 = 3
|
||||
.label plotter_x = 3
|
||||
.label _0 = 2
|
||||
.label plotter_x = 2
|
||||
.label plotter_y = 5
|
||||
lda bitmap_plot_xhi,x
|
||||
sta plotter_x+1
|
||||
@ -1612,9 +1605,9 @@ bitmap_line_xdyd: {
|
||||
rts
|
||||
}
|
||||
bitmap_clear: {
|
||||
.label bitmap = 3
|
||||
.label y = 2
|
||||
.label _3 = 3
|
||||
.label bitmap = 2
|
||||
.label y = 4
|
||||
.label _3 = 2
|
||||
lda bitmap_plot_xlo+0
|
||||
sta _3
|
||||
lda bitmap_plot_xhi+0
|
||||
@ -1641,8 +1634,8 @@ bitmap_clear: {
|
||||
rts
|
||||
}
|
||||
bitmap_init: {
|
||||
.label _6 = 2
|
||||
.label yoffs = 3
|
||||
.label _6 = 4
|
||||
.label yoffs = 2
|
||||
ldy #$80
|
||||
ldx #0
|
||||
b1:
|
||||
@ -1698,9 +1691,9 @@ mode_mcchar: {
|
||||
.label CHARSET = $9000
|
||||
.label COLORS = $d800
|
||||
.label _28 = 7
|
||||
.label col = 3
|
||||
.label col = 2
|
||||
.label ch = 5
|
||||
.label cy = 2
|
||||
.label cy = 4
|
||||
lda #($ffffffff&CHARSET)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #DTV_COLOR_BANK_DEFAULT/$400
|
||||
@ -1789,9 +1782,9 @@ mode_ecmchar: {
|
||||
.label CHARSET = $9000
|
||||
.label COLORS = $d800
|
||||
.label _28 = 7
|
||||
.label col = 3
|
||||
.label col = 2
|
||||
.label ch = 5
|
||||
.label cy = 2
|
||||
.label cy = 4
|
||||
lda #($ffffffff&CHARSET)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #DTV_COLOR_BANK_DEFAULT/$400
|
||||
@ -1881,9 +1874,9 @@ mode_stdchar: {
|
||||
.label CHARSET = $9000
|
||||
.label COLORS = $d800
|
||||
.label _27 = 7
|
||||
.label col = 3
|
||||
.label col = 2
|
||||
.label ch = 5
|
||||
.label cy = 2
|
||||
.label cy = 4
|
||||
lda #($ffffffff&CHARSET)/$10000
|
||||
sta DTV_GRAPHICS_VIC_BANK
|
||||
lda #DTV_COLOR_BANK_DEFAULT/$400
|
||||
@ -1963,7 +1956,7 @@ mode_stdchar: {
|
||||
rts
|
||||
}
|
||||
print_str_lines: {
|
||||
.label str = 3
|
||||
.label str = 2
|
||||
lda #<menu.SCREEN
|
||||
sta print_line_cursor
|
||||
lda #>menu.SCREEN
|
||||
@ -2027,7 +2020,7 @@ print_ln: {
|
||||
rts
|
||||
}
|
||||
print_cls: {
|
||||
.label sc = 3
|
||||
.label sc = 2
|
||||
lda #<menu.SCREEN
|
||||
sta sc
|
||||
lda #>menu.SCREEN
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -154,26 +154,26 @@
|
||||
(byte) VIC_RSEL
|
||||
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(void()) bitmap_clear()
|
||||
(word~) bitmap_clear::$3 $3 zp ZP_WORD:3 2.0
|
||||
(word~) bitmap_clear::$3 $3 zp ZP_WORD:2 2.0
|
||||
(label) bitmap_clear::@1
|
||||
(label) bitmap_clear::@2
|
||||
(label) bitmap_clear::@3
|
||||
(label) bitmap_clear::@return
|
||||
(byte*) bitmap_clear::bitmap
|
||||
(byte*) bitmap_clear::bitmap#1 bitmap zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) bitmap_clear::bitmap#2 bitmap zp ZP_WORD:3 1552.0
|
||||
(byte*) bitmap_clear::bitmap#3 bitmap zp ZP_WORD:3 204.0
|
||||
(byte*~) bitmap_clear::bitmap#5 bitmap zp ZP_WORD:3 4.0
|
||||
(byte*) bitmap_clear::bitmap#1 bitmap zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) bitmap_clear::bitmap#2 bitmap zp ZP_WORD:2 1552.0
|
||||
(byte*) bitmap_clear::bitmap#3 bitmap zp ZP_WORD:2 204.0
|
||||
(byte*~) bitmap_clear::bitmap#5 bitmap zp ZP_WORD:2 4.0
|
||||
(byte) bitmap_clear::x
|
||||
(byte) bitmap_clear::x#1 reg byte x 1501.5
|
||||
(byte) bitmap_clear::x#2 reg byte x 667.3333333333334
|
||||
(byte) bitmap_clear::y
|
||||
(byte) bitmap_clear::y#1 y zp ZP_BYTE:2 151.5
|
||||
(byte) bitmap_clear::y#4 y zp ZP_BYTE:2 33.666666666666664
|
||||
(byte) bitmap_clear::y#1 y zp ZP_BYTE:4 151.5
|
||||
(byte) bitmap_clear::y#4 y zp ZP_BYTE:4 33.666666666666664
|
||||
(void()) bitmap_init((byte*) bitmap_init::bitmap)
|
||||
(byte~) bitmap_init::$0 reg byte a 202.0
|
||||
(byte~) bitmap_init::$10 reg byte a 202.0
|
||||
(byte~) bitmap_init::$6 $6 zp ZP_BYTE:2 101.0
|
||||
(byte~) bitmap_init::$6 $6 zp ZP_BYTE:4 101.0
|
||||
(byte~) bitmap_init::$7 reg byte a 202.0
|
||||
(byte~) bitmap_init::$8 reg byte a 202.0
|
||||
(byte~) bitmap_init::$9 reg byte a 202.0
|
||||
@ -196,9 +196,9 @@
|
||||
(byte) bitmap_init::y#1 reg byte x 151.5
|
||||
(byte) bitmap_init::y#2 reg byte x 55.090909090909086
|
||||
(byte*) bitmap_init::yoffs
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:3 202.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:3 56.11111111111111
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:3 101.0
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:2 202.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:2 56.11111111111111
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:2 101.0
|
||||
(void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1)
|
||||
(label) bitmap_line::@1
|
||||
(label) bitmap_line::@10
|
||||
@ -384,12 +384,12 @@
|
||||
(byte) bitmap_line_ydxi::yd#1 yd zp ZP_BYTE:8 2.0
|
||||
(byte) bitmap_line_ydxi::yd#5 yd zp ZP_BYTE:8 143.28571428571428
|
||||
(void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||
(word~) bitmap_plot::$0 $0 zp ZP_WORD:3 1.0
|
||||
(word~) bitmap_plot::$0 $0 zp ZP_WORD:2 1.0
|
||||
(byte~) bitmap_plot::$1 reg byte a 4.0
|
||||
(label) bitmap_plot::@return
|
||||
(byte*) bitmap_plot::plotter
|
||||
(word) bitmap_plot::plotter_x
|
||||
(word) bitmap_plot::plotter_x#0 plotter_x zp ZP_WORD:3 2.0
|
||||
(word) bitmap_plot::plotter_x#0 plotter_x zp ZP_WORD:2 2.0
|
||||
(word) bitmap_plot::plotter_y
|
||||
(word) bitmap_plot::plotter_y#0 plotter_y zp ZP_WORD:5 4.0
|
||||
(byte) bitmap_plot::x
|
||||
@ -422,11 +422,9 @@
|
||||
(byte) dtvSetCpuBankSegment1::cpuBankIdx#1 reg byte a 2002.0
|
||||
(byte) dtvSetCpuBankSegment1::cpuBankIdx#3 reg byte a 1003.0
|
||||
(byte) dtv_control
|
||||
(byte) dtv_control#1 dtv_control zp ZP_BYTE:2 1.2727272727272727
|
||||
(byte) dtv_control#114 dtv_control zp ZP_BYTE:2 24.19318181818182
|
||||
(byte) dtv_control#145 dtv_control zp ZP_BYTE:2 2.0
|
||||
(byte) dtv_control#17 dtv_control zp ZP_BYTE:2 67.33333333333333
|
||||
(byte) dtv_control#3 dtv_control zp ZP_BYTE:2 45.3333333333333
|
||||
(byte) dtv_control#114 dtv_control zp ZP_BYTE:4 42.099999999999994
|
||||
(byte) dtv_control#145 dtv_control zp ZP_BYTE:4 2.0
|
||||
(byte) dtv_control#17 dtv_control zp ZP_BYTE:4 67.33333333333333
|
||||
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
|
||||
(byte~) keyboard_key_pressed::$2 reg byte a 4.0
|
||||
(label) keyboard_key_pressed::@2
|
||||
@ -472,9 +470,7 @@
|
||||
(byte[8]) keyboard_matrix_row_bitmask
|
||||
(const byte[8]) keyboard_matrix_row_bitmask#0 keyboard_matrix_row_bitmask = { (byte/word/signed word/dword/signed dword) 254, (byte/word/signed word/dword/signed dword) 253, (byte/word/signed word/dword/signed dword) 251, (byte/word/signed word/dword/signed dword) 247, (byte/word/signed word/dword/signed dword) 239, (byte/word/signed word/dword/signed dword) 223, (byte/word/signed word/dword/signed dword) 191, (byte/signed byte/word/signed word/dword/signed dword) 127 }
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(void()) menu()
|
||||
(byte~) menu::$29 reg byte a 202.0
|
||||
(byte~) menu::$33 reg byte a 202.0
|
||||
@ -502,7 +498,6 @@
|
||||
(label) menu::@24
|
||||
(label) menu::@26
|
||||
(label) menu::@28
|
||||
(label) menu::@3
|
||||
(label) menu::@30
|
||||
(label) menu::@32
|
||||
(label) menu::@34
|
||||
@ -536,8 +531,8 @@
|
||||
(byte*) menu::SCREEN
|
||||
(const byte*) menu::SCREEN#0 SCREEN = ((byte*))(word/dword/signed dword) 32768
|
||||
(byte*) menu::c
|
||||
(byte*) menu::c#1 c zp ZP_WORD:3 151.5
|
||||
(byte*) menu::c#2 c zp ZP_WORD:3 151.5
|
||||
(byte*) menu::c#1 c zp ZP_WORD:2 151.5
|
||||
(byte*) menu::c#2 c zp ZP_WORD:2 151.5
|
||||
(byte) menu::i
|
||||
(byte) menu::i#1 reg byte x 151.5
|
||||
(byte) menu::i#2 reg byte x 202.0
|
||||
@ -572,11 +567,11 @@
|
||||
(byte) mode_8bppchunkybmm::i#1 reg byte x 151.5
|
||||
(byte) mode_8bppchunkybmm::i#2 reg byte x 202.0
|
||||
(word) mode_8bppchunkybmm::x
|
||||
(word) mode_8bppchunkybmm::x#1 x zp ZP_WORD:3 1501.5
|
||||
(word) mode_8bppchunkybmm::x#2 x zp ZP_WORD:3 300.29999999999995
|
||||
(word) mode_8bppchunkybmm::x#1 x zp ZP_WORD:2 1501.5
|
||||
(word) mode_8bppchunkybmm::x#2 x zp ZP_WORD:2 300.29999999999995
|
||||
(byte) mode_8bppchunkybmm::y
|
||||
(byte) mode_8bppchunkybmm::y#1 y zp ZP_BYTE:2 151.5
|
||||
(byte) mode_8bppchunkybmm::y#6 y zp ZP_BYTE:2 92.53846153846155
|
||||
(byte) mode_8bppchunkybmm::y#1 y zp ZP_BYTE:4 151.5
|
||||
(byte) mode_8bppchunkybmm::y#6 y zp ZP_BYTE:4 92.53846153846155
|
||||
(void()) mode_8bpppixelcell()
|
||||
(byte~) mode_8bpppixelcell::$13 reg byte a 2002.0
|
||||
(byte~) mode_8bpppixelcell::$14 $14 zp ZP_BYTE:7 1001.0
|
||||
@ -606,8 +601,8 @@
|
||||
(byte) mode_8bpppixelcell::ax#1 reg byte x 1501.5
|
||||
(byte) mode_8bpppixelcell::ax#2 reg byte x 429.0
|
||||
(byte) mode_8bpppixelcell::ay
|
||||
(byte) mode_8bpppixelcell::ay#1 ay zp ZP_BYTE:2 151.5
|
||||
(byte) mode_8bpppixelcell::ay#4 ay zp ZP_BYTE:2 120.29999999999998
|
||||
(byte) mode_8bpppixelcell::ay#1 ay zp ZP_BYTE:4 151.5
|
||||
(byte) mode_8bpppixelcell::ay#4 ay zp ZP_BYTE:4 120.29999999999998
|
||||
(byte) mode_8bpppixelcell::bits
|
||||
(byte) mode_8bpppixelcell::bits#0 bits zp ZP_BYTE:8 1001.0
|
||||
(byte) mode_8bpppixelcell::bits#1 bits zp ZP_BYTE:8 5000.5
|
||||
@ -616,12 +611,12 @@
|
||||
(byte) mode_8bpppixelcell::c#2 reg byte a 20002.0
|
||||
(byte~) mode_8bpppixelcell::c#3 reg byte a 20002.0
|
||||
(byte) mode_8bpppixelcell::ch
|
||||
(byte) mode_8bpppixelcell::ch#1 ch zp ZP_BYTE:2 151.5
|
||||
(byte) mode_8bpppixelcell::ch#8 ch zp ZP_BYTE:2 11.882352941176471
|
||||
(byte) mode_8bpppixelcell::ch#1 ch zp ZP_BYTE:4 151.5
|
||||
(byte) mode_8bpppixelcell::ch#8 ch zp ZP_BYTE:4 11.882352941176471
|
||||
(byte*) mode_8bpppixelcell::chargen
|
||||
(byte*) mode_8bpppixelcell::chargen#1 chargen zp ZP_WORD:3 131.4375
|
||||
(byte*) mode_8bpppixelcell::chargen#2 chargen zp ZP_WORD:3 1552.0
|
||||
(byte*) mode_8bpppixelcell::chargen#4 chargen zp ZP_WORD:3 202.0
|
||||
(byte*) mode_8bpppixelcell::chargen#1 chargen zp ZP_WORD:2 131.4375
|
||||
(byte*) mode_8bpppixelcell::chargen#2 chargen zp ZP_WORD:2 1552.0
|
||||
(byte*) mode_8bpppixelcell::chargen#4 chargen zp ZP_WORD:2 202.0
|
||||
(byte) mode_8bpppixelcell::col
|
||||
(byte) mode_8bpppixelcell::col#1 col zp ZP_BYTE:9 3014.857142857143
|
||||
(byte) mode_8bpppixelcell::col#2 col zp ZP_BYTE:9 3875.5
|
||||
@ -634,9 +629,9 @@
|
||||
(byte) mode_8bpppixelcell::cr#1 cr zp ZP_BYTE:7 1501.5
|
||||
(byte) mode_8bpppixelcell::cr#6 cr zp ZP_BYTE:7 143.0
|
||||
(byte*) mode_8bpppixelcell::gfxa
|
||||
(byte*) mode_8bpppixelcell::gfxa#1 gfxa zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_8bpppixelcell::gfxa#2 gfxa zp ZP_WORD:3 517.3333333333334
|
||||
(byte*) mode_8bpppixelcell::gfxa#3 gfxa zp ZP_WORD:3 202.0
|
||||
(byte*) mode_8bpppixelcell::gfxa#1 gfxa zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_8bpppixelcell::gfxa#2 gfxa zp ZP_WORD:2 517.3333333333334
|
||||
(byte*) mode_8bpppixelcell::gfxa#3 gfxa zp ZP_WORD:2 202.0
|
||||
(byte*) mode_8bpppixelcell::gfxb
|
||||
(byte*) mode_8bpppixelcell::gfxb#1 gfxb zp ZP_WORD:5 2344.8888888888887
|
||||
(byte*) mode_8bpppixelcell::gfxb#2 gfxb zp ZP_WORD:5 5167.333333333333
|
||||
@ -722,15 +717,15 @@
|
||||
(byte*) mode_ecmchar::ch#2 ch zp ZP_WORD:5 310.4
|
||||
(byte*) mode_ecmchar::ch#3 ch zp ZP_WORD:5 202.0
|
||||
(byte*) mode_ecmchar::col
|
||||
(byte*) mode_ecmchar::col#1 col zp ZP_WORD:3 191.1818181818182
|
||||
(byte*) mode_ecmchar::col#2 col zp ZP_WORD:3 776.0
|
||||
(byte*) mode_ecmchar::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte*) mode_ecmchar::col#1 col zp ZP_WORD:2 191.1818181818182
|
||||
(byte*) mode_ecmchar::col#2 col zp ZP_WORD:2 776.0
|
||||
(byte*) mode_ecmchar::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte) mode_ecmchar::cx
|
||||
(byte) mode_ecmchar::cx#1 reg byte x 1501.5
|
||||
(byte) mode_ecmchar::cx#2 reg byte x 364.0
|
||||
(byte) mode_ecmchar::cy
|
||||
(byte) mode_ecmchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_ecmchar::cy#4 cy zp ZP_BYTE:2 157.42857142857144
|
||||
(byte) mode_ecmchar::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_ecmchar::cy#4 cy zp ZP_BYTE:4 157.42857142857144
|
||||
(byte) mode_ecmchar::i
|
||||
(byte) mode_ecmchar::i#1 reg byte x 151.5
|
||||
(byte) mode_ecmchar::i#2 reg byte x 202.0
|
||||
@ -756,15 +751,15 @@
|
||||
(byte*) mode_hicolecmchar::ch#2 ch zp ZP_WORD:5 388.0
|
||||
(byte*) mode_hicolecmchar::ch#3 ch zp ZP_WORD:5 202.0
|
||||
(byte*) mode_hicolecmchar::col
|
||||
(byte*) mode_hicolecmchar::col#1 col zp ZP_WORD:3 300.42857142857144
|
||||
(byte*) mode_hicolecmchar::col#2 col zp ZP_WORD:3 517.3333333333334
|
||||
(byte*) mode_hicolecmchar::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte*) mode_hicolecmchar::col#1 col zp ZP_WORD:2 300.42857142857144
|
||||
(byte*) mode_hicolecmchar::col#2 col zp ZP_WORD:2 517.3333333333334
|
||||
(byte*) mode_hicolecmchar::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte) mode_hicolecmchar::cx
|
||||
(byte) mode_hicolecmchar::cx#1 reg byte x 1501.5
|
||||
(byte) mode_hicolecmchar::cx#2 reg byte x 333.6666666666667
|
||||
(byte) mode_hicolecmchar::cy
|
||||
(byte) mode_hicolecmchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_hicolecmchar::cy#4 cy zp ZP_BYTE:2 100.25000000000001
|
||||
(byte) mode_hicolecmchar::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_hicolecmchar::cy#4 cy zp ZP_BYTE:4 100.25000000000001
|
||||
(byte) mode_hicolecmchar::i
|
||||
(byte) mode_hicolecmchar::i#1 reg byte x 151.5
|
||||
(byte) mode_hicolecmchar::i#2 reg byte x 202.0
|
||||
@ -792,15 +787,15 @@
|
||||
(byte*) mode_hicolmcchar::ch#2 ch zp ZP_WORD:5 388.0
|
||||
(byte*) mode_hicolmcchar::ch#3 ch zp ZP_WORD:5 202.0
|
||||
(byte*) mode_hicolmcchar::col
|
||||
(byte*) mode_hicolmcchar::col#1 col zp ZP_WORD:3 300.42857142857144
|
||||
(byte*) mode_hicolmcchar::col#2 col zp ZP_WORD:3 517.3333333333334
|
||||
(byte*) mode_hicolmcchar::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte*) mode_hicolmcchar::col#1 col zp ZP_WORD:2 300.42857142857144
|
||||
(byte*) mode_hicolmcchar::col#2 col zp ZP_WORD:2 517.3333333333334
|
||||
(byte*) mode_hicolmcchar::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte) mode_hicolmcchar::cx
|
||||
(byte) mode_hicolmcchar::cx#1 reg byte x 1501.5
|
||||
(byte) mode_hicolmcchar::cx#2 reg byte x 333.6666666666667
|
||||
(byte) mode_hicolmcchar::cy
|
||||
(byte) mode_hicolmcchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_hicolmcchar::cy#4 cy zp ZP_BYTE:2 100.25000000000001
|
||||
(byte) mode_hicolmcchar::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_hicolmcchar::cy#4 cy zp ZP_BYTE:4 100.25000000000001
|
||||
(byte) mode_hicolmcchar::i
|
||||
(byte) mode_hicolmcchar::i#1 reg byte x 151.5
|
||||
(byte) mode_hicolmcchar::i#2 reg byte x 202.0
|
||||
@ -828,15 +823,15 @@
|
||||
(byte*) mode_hicolstdchar::ch#2 ch zp ZP_WORD:5 388.0
|
||||
(byte*) mode_hicolstdchar::ch#3 ch zp ZP_WORD:5 202.0
|
||||
(byte*) mode_hicolstdchar::col
|
||||
(byte*) mode_hicolstdchar::col#1 col zp ZP_WORD:3 300.42857142857144
|
||||
(byte*) mode_hicolstdchar::col#2 col zp ZP_WORD:3 517.3333333333334
|
||||
(byte*) mode_hicolstdchar::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte*) mode_hicolstdchar::col#1 col zp ZP_WORD:2 300.42857142857144
|
||||
(byte*) mode_hicolstdchar::col#2 col zp ZP_WORD:2 517.3333333333334
|
||||
(byte*) mode_hicolstdchar::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte) mode_hicolstdchar::cx
|
||||
(byte) mode_hicolstdchar::cx#1 reg byte x 1501.5
|
||||
(byte) mode_hicolstdchar::cx#2 reg byte x 333.6666666666667
|
||||
(byte) mode_hicolstdchar::cy
|
||||
(byte) mode_hicolstdchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_hicolstdchar::cy#4 cy zp ZP_BYTE:2 100.25000000000001
|
||||
(byte) mode_hicolstdchar::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_hicolstdchar::cy#4 cy zp ZP_BYTE:4 100.25000000000001
|
||||
(byte) mode_hicolstdchar::i
|
||||
(byte) mode_hicolstdchar::i#1 reg byte x 151.5
|
||||
(byte) mode_hicolstdchar::i#2 reg byte x 202.0
|
||||
@ -867,15 +862,15 @@
|
||||
(byte*) mode_mcchar::ch#2 ch zp ZP_WORD:5 310.4
|
||||
(byte*) mode_mcchar::ch#3 ch zp ZP_WORD:5 202.0
|
||||
(byte*) mode_mcchar::col
|
||||
(byte*) mode_mcchar::col#1 col zp ZP_WORD:3 191.1818181818182
|
||||
(byte*) mode_mcchar::col#2 col zp ZP_WORD:3 776.0
|
||||
(byte*) mode_mcchar::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte*) mode_mcchar::col#1 col zp ZP_WORD:2 191.1818181818182
|
||||
(byte*) mode_mcchar::col#2 col zp ZP_WORD:2 776.0
|
||||
(byte*) mode_mcchar::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte) mode_mcchar::cx
|
||||
(byte) mode_mcchar::cx#1 reg byte x 1501.5
|
||||
(byte) mode_mcchar::cx#2 reg byte x 364.0
|
||||
(byte) mode_mcchar::cy
|
||||
(byte) mode_mcchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_mcchar::cy#4 cy zp ZP_BYTE:2 157.42857142857144
|
||||
(byte) mode_mcchar::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_mcchar::cy#4 cy zp ZP_BYTE:4 157.42857142857144
|
||||
(byte) mode_mcchar::i
|
||||
(byte) mode_mcchar::i#1 reg byte x 151.5
|
||||
(byte) mode_mcchar::i#2 reg byte x 202.0
|
||||
@ -906,32 +901,32 @@
|
||||
(byte) mode_sixsfred::ax#1 reg byte x 1501.5
|
||||
(byte) mode_sixsfred::ax#2 reg byte x 400.4
|
||||
(byte) mode_sixsfred::ay
|
||||
(byte) mode_sixsfred::ay#1 ay zp ZP_BYTE:2 151.5
|
||||
(byte) mode_sixsfred::ay#4 ay zp ZP_BYTE:2 150.375
|
||||
(byte) mode_sixsfred::ay#1 ay zp ZP_BYTE:4 151.5
|
||||
(byte) mode_sixsfred::ay#4 ay zp ZP_BYTE:4 150.375
|
||||
(byte) mode_sixsfred::bx
|
||||
(byte) mode_sixsfred::bx#1 reg byte x 1501.5
|
||||
(byte) mode_sixsfred::bx#2 reg byte x 667.3333333333334
|
||||
(byte) mode_sixsfred::by
|
||||
(byte) mode_sixsfred::by#1 by zp ZP_BYTE:2 151.5
|
||||
(byte) mode_sixsfred::by#4 by zp ZP_BYTE:2 33.666666666666664
|
||||
(byte) mode_sixsfred::by#1 by zp ZP_BYTE:4 151.5
|
||||
(byte) mode_sixsfred::by#4 by zp ZP_BYTE:4 33.666666666666664
|
||||
(byte*) mode_sixsfred::col
|
||||
(byte*) mode_sixsfred::col#1 col zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_sixsfred::col#2 col zp ZP_WORD:3 776.0
|
||||
(byte*) mode_sixsfred::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte*) mode_sixsfred::col#1 col zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_sixsfred::col#2 col zp ZP_WORD:2 776.0
|
||||
(byte*) mode_sixsfred::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte) mode_sixsfred::cx
|
||||
(byte) mode_sixsfred::cx#1 reg byte x 1501.5
|
||||
(byte) mode_sixsfred::cx#2 reg byte x 600.5999999999999
|
||||
(byte) mode_sixsfred::cy
|
||||
(byte) mode_sixsfred::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_sixsfred::cy#4 cy zp ZP_BYTE:2 150.375
|
||||
(byte) mode_sixsfred::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_sixsfred::cy#4 cy zp ZP_BYTE:4 150.375
|
||||
(byte*) mode_sixsfred::gfxa
|
||||
(byte*) mode_sixsfred::gfxa#1 gfxa zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_sixsfred::gfxa#2 gfxa zp ZP_WORD:3 776.0
|
||||
(byte*) mode_sixsfred::gfxa#3 gfxa zp ZP_WORD:3 202.0
|
||||
(byte*) mode_sixsfred::gfxa#1 gfxa zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_sixsfred::gfxa#2 gfxa zp ZP_WORD:2 776.0
|
||||
(byte*) mode_sixsfred::gfxa#3 gfxa zp ZP_WORD:2 202.0
|
||||
(byte*) mode_sixsfred::gfxb
|
||||
(byte*) mode_sixsfred::gfxb#1 gfxb zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_sixsfred::gfxb#2 gfxb zp ZP_WORD:3 1552.0
|
||||
(byte*) mode_sixsfred::gfxb#3 gfxb zp ZP_WORD:3 202.0
|
||||
(byte*) mode_sixsfred::gfxb#1 gfxb zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_sixsfred::gfxb#2 gfxb zp ZP_WORD:2 1552.0
|
||||
(byte*) mode_sixsfred::gfxb#3 gfxb zp ZP_WORD:2 202.0
|
||||
(byte) mode_sixsfred::i
|
||||
(byte) mode_sixsfred::i#1 reg byte x 151.5
|
||||
(byte) mode_sixsfred::i#2 reg byte x 202.0
|
||||
@ -968,32 +963,32 @@
|
||||
(byte) mode_sixsfred2::ax#1 reg byte x 1501.5
|
||||
(byte) mode_sixsfred2::ax#2 reg byte x 400.4
|
||||
(byte) mode_sixsfred2::ay
|
||||
(byte) mode_sixsfred2::ay#1 ay zp ZP_BYTE:2 151.5
|
||||
(byte) mode_sixsfred2::ay#4 ay zp ZP_BYTE:2 150.375
|
||||
(byte) mode_sixsfred2::ay#1 ay zp ZP_BYTE:4 151.5
|
||||
(byte) mode_sixsfred2::ay#4 ay zp ZP_BYTE:4 150.375
|
||||
(byte) mode_sixsfred2::bx
|
||||
(byte) mode_sixsfred2::bx#1 reg byte x 1501.5
|
||||
(byte) mode_sixsfred2::bx#2 reg byte x 667.3333333333334
|
||||
(byte) mode_sixsfred2::by
|
||||
(byte) mode_sixsfred2::by#1 by zp ZP_BYTE:2 151.5
|
||||
(byte) mode_sixsfred2::by#4 by zp ZP_BYTE:2 33.666666666666664
|
||||
(byte) mode_sixsfred2::by#1 by zp ZP_BYTE:4 151.5
|
||||
(byte) mode_sixsfred2::by#4 by zp ZP_BYTE:4 33.666666666666664
|
||||
(byte*) mode_sixsfred2::col
|
||||
(byte*) mode_sixsfred2::col#1 col zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_sixsfred2::col#2 col zp ZP_WORD:3 517.3333333333334
|
||||
(byte*) mode_sixsfred2::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte*) mode_sixsfred2::col#1 col zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_sixsfred2::col#2 col zp ZP_WORD:2 517.3333333333334
|
||||
(byte*) mode_sixsfred2::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte) mode_sixsfred2::cx
|
||||
(byte) mode_sixsfred2::cx#1 reg byte x 1501.5
|
||||
(byte) mode_sixsfred2::cx#2 reg byte x 429.0
|
||||
(byte) mode_sixsfred2::cy
|
||||
(byte) mode_sixsfred2::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_sixsfred2::cy#4 cy zp ZP_BYTE:2 120.29999999999998
|
||||
(byte) mode_sixsfred2::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_sixsfred2::cy#4 cy zp ZP_BYTE:4 120.29999999999998
|
||||
(byte*) mode_sixsfred2::gfxa
|
||||
(byte*) mode_sixsfred2::gfxa#1 gfxa zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_sixsfred2::gfxa#2 gfxa zp ZP_WORD:3 776.0
|
||||
(byte*) mode_sixsfred2::gfxa#3 gfxa zp ZP_WORD:3 202.0
|
||||
(byte*) mode_sixsfred2::gfxa#1 gfxa zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_sixsfred2::gfxa#2 gfxa zp ZP_WORD:2 776.0
|
||||
(byte*) mode_sixsfred2::gfxa#3 gfxa zp ZP_WORD:2 202.0
|
||||
(byte*) mode_sixsfred2::gfxb
|
||||
(byte*) mode_sixsfred2::gfxb#1 gfxb zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_sixsfred2::gfxb#2 gfxb zp ZP_WORD:3 1552.0
|
||||
(byte*) mode_sixsfred2::gfxb#3 gfxb zp ZP_WORD:3 202.0
|
||||
(byte*) mode_sixsfred2::gfxb#1 gfxb zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_sixsfred2::gfxb#2 gfxb zp ZP_WORD:2 1552.0
|
||||
(byte*) mode_sixsfred2::gfxb#3 gfxb zp ZP_WORD:2 202.0
|
||||
(byte) mode_sixsfred2::i
|
||||
(byte) mode_sixsfred2::i#1 reg byte x 151.5
|
||||
(byte) mode_sixsfred2::i#2 reg byte x 202.0
|
||||
@ -1021,9 +1016,9 @@
|
||||
(byte*) mode_stdbitmap::SCREEN
|
||||
(const byte*) mode_stdbitmap::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 16384
|
||||
(byte*) mode_stdbitmap::ch
|
||||
(byte*) mode_stdbitmap::ch#1 ch zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_stdbitmap::ch#2 ch zp ZP_WORD:3 443.42857142857144
|
||||
(byte*) mode_stdbitmap::ch#3 ch zp ZP_WORD:3 202.0
|
||||
(byte*) mode_stdbitmap::ch#1 ch zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_stdbitmap::ch#2 ch zp ZP_WORD:2 443.42857142857144
|
||||
(byte*) mode_stdbitmap::ch#3 ch zp ZP_WORD:2 202.0
|
||||
(byte) mode_stdbitmap::col
|
||||
(byte) mode_stdbitmap::col#0 reg byte y 1501.5
|
||||
(byte) mode_stdbitmap::col2
|
||||
@ -1032,14 +1027,14 @@
|
||||
(byte) mode_stdbitmap::cx#1 reg byte x 1501.5
|
||||
(byte) mode_stdbitmap::cx#2 reg byte x 375.375
|
||||
(byte) mode_stdbitmap::cy
|
||||
(byte) mode_stdbitmap::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_stdbitmap::cy#4 cy zp ZP_BYTE:2 109.36363636363637
|
||||
(byte) mode_stdbitmap::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_stdbitmap::cy#4 cy zp ZP_BYTE:4 109.36363636363637
|
||||
(byte) mode_stdbitmap::i
|
||||
(byte) mode_stdbitmap::i#1 reg byte x 151.5
|
||||
(byte) mode_stdbitmap::i#2 reg byte x 202.0
|
||||
(byte) mode_stdbitmap::l
|
||||
(byte) mode_stdbitmap::l#1 l zp ZP_BYTE:2 151.5
|
||||
(byte) mode_stdbitmap::l#2 l zp ZP_BYTE:2 100.99999999999999
|
||||
(byte) mode_stdbitmap::l#1 l zp ZP_BYTE:4 151.5
|
||||
(byte) mode_stdbitmap::l#2 l zp ZP_BYTE:4 100.99999999999999
|
||||
(byte) mode_stdbitmap::lines_cnt
|
||||
(const byte) mode_stdbitmap::lines_cnt#0 lines_cnt = (byte/signed byte/word/signed word/dword/signed dword) 9
|
||||
(byte[]) mode_stdbitmap::lines_x
|
||||
@ -1071,15 +1066,15 @@
|
||||
(byte*) mode_stdchar::ch#2 ch zp ZP_WORD:5 310.4
|
||||
(byte*) mode_stdchar::ch#3 ch zp ZP_WORD:5 202.0
|
||||
(byte*) mode_stdchar::col
|
||||
(byte*) mode_stdchar::col#1 col zp ZP_WORD:3 191.1818181818182
|
||||
(byte*) mode_stdchar::col#2 col zp ZP_WORD:3 776.0
|
||||
(byte*) mode_stdchar::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte*) mode_stdchar::col#1 col zp ZP_WORD:2 191.1818181818182
|
||||
(byte*) mode_stdchar::col#2 col zp ZP_WORD:2 776.0
|
||||
(byte*) mode_stdchar::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte) mode_stdchar::cx
|
||||
(byte) mode_stdchar::cx#1 reg byte x 1501.5
|
||||
(byte) mode_stdchar::cx#2 reg byte x 364.0
|
||||
(byte) mode_stdchar::cy
|
||||
(byte) mode_stdchar::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_stdchar::cy#4 cy zp ZP_BYTE:2 157.42857142857144
|
||||
(byte) mode_stdchar::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_stdchar::cy#4 cy zp ZP_BYTE:4 157.42857142857144
|
||||
(byte) mode_stdchar::i
|
||||
(byte) mode_stdchar::i#1 reg byte x 151.5
|
||||
(byte) mode_stdchar::i#2 reg byte x 202.0
|
||||
@ -1115,34 +1110,34 @@
|
||||
(byte) mode_twoplanebitmap::ax#1 reg byte x 1501.5
|
||||
(byte) mode_twoplanebitmap::ax#2 reg byte x 250.25
|
||||
(byte) mode_twoplanebitmap::ay
|
||||
(byte) mode_twoplanebitmap::ay#1 ay zp ZP_BYTE:2 151.5
|
||||
(byte) mode_twoplanebitmap::ay#4 ay zp ZP_BYTE:2 109.36363636363637
|
||||
(byte) mode_twoplanebitmap::ay#1 ay zp ZP_BYTE:4 151.5
|
||||
(byte) mode_twoplanebitmap::ay#4 ay zp ZP_BYTE:4 109.36363636363637
|
||||
(byte) mode_twoplanebitmap::bx
|
||||
(byte) mode_twoplanebitmap::bx#1 reg byte x 1501.5
|
||||
(byte) mode_twoplanebitmap::bx#2 reg byte x 667.3333333333334
|
||||
(byte) mode_twoplanebitmap::by
|
||||
(byte) mode_twoplanebitmap::by#1 by zp ZP_BYTE:2 151.5
|
||||
(byte) mode_twoplanebitmap::by#4 by zp ZP_BYTE:2 33.666666666666664
|
||||
(byte) mode_twoplanebitmap::by#1 by zp ZP_BYTE:4 151.5
|
||||
(byte) mode_twoplanebitmap::by#4 by zp ZP_BYTE:4 33.666666666666664
|
||||
(byte*) mode_twoplanebitmap::col
|
||||
(byte*) mode_twoplanebitmap::col#1 col zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_twoplanebitmap::col#2 col zp ZP_WORD:3 517.3333333333334
|
||||
(byte*) mode_twoplanebitmap::col#3 col zp ZP_WORD:3 202.0
|
||||
(byte*) mode_twoplanebitmap::col#1 col zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_twoplanebitmap::col#2 col zp ZP_WORD:2 517.3333333333334
|
||||
(byte*) mode_twoplanebitmap::col#3 col zp ZP_WORD:2 202.0
|
||||
(byte) mode_twoplanebitmap::cx
|
||||
(byte) mode_twoplanebitmap::cx#1 reg byte x 1501.5
|
||||
(byte) mode_twoplanebitmap::cx#2 reg byte x 429.0
|
||||
(byte) mode_twoplanebitmap::cy
|
||||
(byte) mode_twoplanebitmap::cy#1 cy zp ZP_BYTE:2 151.5
|
||||
(byte) mode_twoplanebitmap::cy#4 cy zp ZP_BYTE:2 120.29999999999998
|
||||
(byte) mode_twoplanebitmap::cy#1 cy zp ZP_BYTE:4 151.5
|
||||
(byte) mode_twoplanebitmap::cy#4 cy zp ZP_BYTE:4 120.29999999999998
|
||||
(byte*) mode_twoplanebitmap::gfxa
|
||||
(byte*) mode_twoplanebitmap::gfxa#1 gfxa zp ZP_WORD:3 2002.0
|
||||
(byte*) mode_twoplanebitmap::gfxa#2 gfxa zp ZP_WORD:3 2002.0
|
||||
(byte*) mode_twoplanebitmap::gfxa#3 gfxa zp ZP_WORD:3 1021.2
|
||||
(byte*) mode_twoplanebitmap::gfxa#6 gfxa zp ZP_WORD:3 202.0
|
||||
(byte*) mode_twoplanebitmap::gfxa#7 gfxa zp ZP_WORD:3 620.8
|
||||
(byte*) mode_twoplanebitmap::gfxa#1 gfxa zp ZP_WORD:2 2002.0
|
||||
(byte*) mode_twoplanebitmap::gfxa#2 gfxa zp ZP_WORD:2 2002.0
|
||||
(byte*) mode_twoplanebitmap::gfxa#3 gfxa zp ZP_WORD:2 1021.2
|
||||
(byte*) mode_twoplanebitmap::gfxa#6 gfxa zp ZP_WORD:2 202.0
|
||||
(byte*) mode_twoplanebitmap::gfxa#7 gfxa zp ZP_WORD:2 620.8
|
||||
(byte*) mode_twoplanebitmap::gfxb
|
||||
(byte*) mode_twoplanebitmap::gfxb#1 gfxb zp ZP_WORD:3 420.59999999999997
|
||||
(byte*) mode_twoplanebitmap::gfxb#2 gfxb zp ZP_WORD:3 1552.0
|
||||
(byte*) mode_twoplanebitmap::gfxb#3 gfxb zp ZP_WORD:3 202.0
|
||||
(byte*) mode_twoplanebitmap::gfxb#1 gfxb zp ZP_WORD:2 420.59999999999997
|
||||
(byte*) mode_twoplanebitmap::gfxb#2 gfxb zp ZP_WORD:2 1552.0
|
||||
(byte*) mode_twoplanebitmap::gfxb#3 gfxb zp ZP_WORD:2 202.0
|
||||
(byte) mode_twoplanebitmap::i
|
||||
(byte) mode_twoplanebitmap::i#1 reg byte x 151.5
|
||||
(byte) mode_twoplanebitmap::i#2 reg byte x 202.0
|
||||
@ -1156,8 +1151,8 @@
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 sc zp ZP_WORD:3 151.5
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:3 151.5
|
||||
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 151.5
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 151.5
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#17 print_line_cursor zp ZP_WORD:13 8.583333333333332
|
||||
(byte*) print_line_cursor#18 print_line_cursor zp ZP_WORD:13 2004.0
|
||||
@ -1179,14 +1174,14 @@
|
||||
(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:3 233.66666666666669
|
||||
(byte*) print_str_lines::str#2 str zp ZP_WORD:3 151.5
|
||||
(byte*) print_str_lines::str#3 str zp ZP_WORD:3 1552.0
|
||||
(byte*) print_str_lines::str#0 str zp ZP_WORD:2 233.66666666666669
|
||||
(byte*) print_str_lines::str#2 str zp ZP_WORD:2 151.5
|
||||
(byte*) print_str_lines::str#3 str zp ZP_WORD:2 1552.0
|
||||
|
||||
zp ZP_BYTE:2 [ dtv_control#1 dtv_control#3 dtv_control#114 dtv_control#145 dtv_control#17 mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_twoplanebitmap::ay#4 mode_twoplanebitmap::ay#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 mode_mcchar::cy#4 mode_mcchar::cy#1 mode_ecmchar::cy#4 mode_ecmchar::cy#1 mode_stdchar::cy#4 mode_stdchar::cy#1 bitmap_init::$6 ]
|
||||
reg byte x [ menu::i#2 menu::i#1 ]
|
||||
zp ZP_WORD:3 [ menu::c#2 menu::c#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#1 bitmap_plot::plotter_x#0 bitmap_plot::$0 ]
|
||||
zp ZP_WORD:2 [ menu::c#2 menu::c#1 mode_8bppchunkybmm::x#2 mode_8bppchunkybmm::x#1 mode_8bpppixelcell::gfxa#2 mode_8bpppixelcell::gfxa#3 mode_8bpppixelcell::gfxa#1 mode_8bpppixelcell::chargen#2 mode_8bpppixelcell::chargen#4 mode_8bpppixelcell::chargen#1 mode_sixsfred::col#2 mode_sixsfred::col#3 mode_sixsfred::col#1 mode_sixsfred::gfxa#2 mode_sixsfred::gfxa#3 mode_sixsfred::gfxa#1 mode_sixsfred::gfxb#2 mode_sixsfred::gfxb#3 mode_sixsfred::gfxb#1 mode_twoplanebitmap::col#2 mode_twoplanebitmap::col#3 mode_twoplanebitmap::col#1 mode_twoplanebitmap::gfxa#3 mode_twoplanebitmap::gfxa#6 mode_twoplanebitmap::gfxa#7 mode_twoplanebitmap::gfxa#2 mode_twoplanebitmap::gfxa#1 mode_twoplanebitmap::gfxb#2 mode_twoplanebitmap::gfxb#3 mode_twoplanebitmap::gfxb#1 mode_sixsfred2::col#2 mode_sixsfred2::col#3 mode_sixsfred2::col#1 mode_sixsfred2::gfxa#2 mode_sixsfred2::gfxa#3 mode_sixsfred2::gfxa#1 mode_sixsfred2::gfxb#2 mode_sixsfred2::gfxb#3 mode_sixsfred2::gfxb#1 mode_hicolmcchar::col#2 mode_hicolmcchar::col#3 mode_hicolmcchar::col#1 mode_hicolecmchar::col#2 mode_hicolecmchar::col#3 mode_hicolecmchar::col#1 mode_hicolstdchar::col#2 mode_hicolstdchar::col#3 mode_hicolstdchar::col#1 mode_stdbitmap::ch#2 mode_stdbitmap::ch#3 mode_stdbitmap::ch#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 mode_mcchar::col#2 mode_mcchar::col#3 mode_mcchar::col#1 mode_ecmchar::col#2 mode_ecmchar::col#3 mode_ecmchar::col#1 mode_stdchar::col#2 mode_stdchar::col#3 mode_stdchar::col#1 print_str_lines::str#3 print_str_lines::str#2 print_str_lines::str#0 print_cls::sc#2 print_cls::sc#1 bitmap_plot::plotter_x#0 bitmap_plot::$0 ]
|
||||
reg byte x [ mode_8bppchunkybmm::i#2 mode_8bppchunkybmm::i#1 ]
|
||||
zp ZP_BYTE:4 [ mode_8bppchunkybmm::y#6 mode_8bppchunkybmm::y#1 dtv_control#114 dtv_control#145 dtv_control#17 mode_8bpppixelcell::ay#4 mode_8bpppixelcell::ay#1 mode_8bpppixelcell::ch#8 mode_8bpppixelcell::ch#1 mode_sixsfred::cy#4 mode_sixsfred::cy#1 mode_sixsfred::ay#4 mode_sixsfred::ay#1 mode_sixsfred::by#4 mode_sixsfred::by#1 mode_twoplanebitmap::cy#4 mode_twoplanebitmap::cy#1 mode_twoplanebitmap::ay#4 mode_twoplanebitmap::ay#1 mode_twoplanebitmap::by#4 mode_twoplanebitmap::by#1 mode_sixsfred2::cy#4 mode_sixsfred2::cy#1 mode_sixsfred2::ay#4 mode_sixsfred2::ay#1 mode_sixsfred2::by#4 mode_sixsfred2::by#1 mode_hicolmcchar::cy#4 mode_hicolmcchar::cy#1 mode_hicolecmchar::cy#4 mode_hicolecmchar::cy#1 mode_hicolstdchar::cy#4 mode_hicolstdchar::cy#1 mode_stdbitmap::cy#4 mode_stdbitmap::cy#1 mode_stdbitmap::l#2 mode_stdbitmap::l#1 bitmap_clear::y#4 bitmap_clear::y#1 mode_mcchar::cy#4 mode_mcchar::cy#1 mode_ecmchar::cy#4 mode_ecmchar::cy#1 mode_stdchar::cy#4 mode_stdchar::cy#1 bitmap_init::$6 ]
|
||||
reg byte x [ mode_8bppchunkybmm::gfxbCpuBank#4 mode_8bppchunkybmm::gfxbCpuBank#7 mode_8bppchunkybmm::gfxbCpuBank#8 mode_8bppchunkybmm::gfxbCpuBank#2 ]
|
||||
zp ZP_WORD:5 [ mode_8bppchunkybmm::gfxb#4 mode_8bppchunkybmm::gfxb#3 mode_8bppchunkybmm::gfxb#5 mode_8bppchunkybmm::gfxb#1 mode_8bpppixelcell::gfxb#2 mode_8bpppixelcell::gfxb#5 mode_8bpppixelcell::gfxb#7 mode_8bpppixelcell::gfxb#1 mode_hicolmcchar::ch#2 mode_hicolmcchar::ch#3 mode_hicolmcchar::ch#1 mode_hicolecmchar::ch#2 mode_hicolecmchar::ch#3 mode_hicolecmchar::ch#1 mode_hicolstdchar::ch#2 mode_hicolstdchar::ch#3 mode_hicolstdchar::ch#1 mode_mcchar::ch#2 mode_mcchar::ch#3 mode_mcchar::ch#1 mode_ecmchar::ch#2 mode_ecmchar::ch#3 mode_ecmchar::ch#1 mode_stdchar::ch#2 mode_stdchar::ch#3 mode_stdchar::ch#1 print_char_cursor#17 print_char_cursor#19 print_char_cursor#101 print_char_cursor#32 print_char_cursor#1 bitmap_plot::plotter_y#0 ]
|
||||
reg byte x [ 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 ]
|
||||
|
@ -0,0 +1,22 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label B = $1000
|
||||
jsr main
|
||||
main: {
|
||||
lda #0
|
||||
b2:
|
||||
jsr menu
|
||||
jmp b2
|
||||
}
|
||||
menu: {
|
||||
jsr mode
|
||||
rts
|
||||
}
|
||||
mode: {
|
||||
b2:
|
||||
lda B
|
||||
cmp #0
|
||||
bne b2
|
||||
jmp b2
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@3
|
||||
@3: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @3
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @3
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
[5] (byte) a#1 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) a#12 ) [ a#1 ] ( main:2 [ a#1 ] )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
[6] phi() [ a#1 ] ( main:2 [ a#1 ] )
|
||||
[7] call menu param-assignment [ a#12 ] ( main:2 [ a#12 ] )
|
||||
to:main::@1
|
||||
menu: scope:[menu] from main::@2
|
||||
[8] phi() [ a#1 ] ( main:2::menu:7 [ a#1 ] )
|
||||
to:menu::@2
|
||||
menu::@2: scope:[menu] from menu
|
||||
[9] phi() [ a#1 ] ( main:2::menu:7 [ a#1 ] )
|
||||
[10] call mode param-assignment [ a#12 ] ( main:2::menu:7 [ a#12 ] )
|
||||
to:menu::@return
|
||||
menu::@return: scope:[menu] from menu::@2
|
||||
[11] return [ a#12 ] ( main:2::menu:7 [ a#12 ] )
|
||||
to:@return
|
||||
mode: scope:[mode] from menu::@2
|
||||
[12] phi() [ a#1 ] ( main:2::menu:7::mode:10 [ a#1 ] )
|
||||
to:mode::@1
|
||||
mode::@1: scope:[mode] from mode mode::@2 mode::@7
|
||||
[13] (byte) a#12 ← phi( mode/(byte) a#1 mode::@7/(byte) a#5 ) [ ] ( main:2::menu:7::mode:10 [ ] )
|
||||
to:mode::@2
|
||||
mode::@2: scope:[mode] from mode::@1
|
||||
[14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 [ ] ( main:2::menu:7::mode:10 [ ] )
|
||||
to:mode::@7
|
||||
mode::@7: scope:[mode] from mode::@2
|
||||
[15] (byte) a#5 ← *((const byte*) B#0) [ a#5 ] ( main:2::menu:7::mode:10 [ a#5 ] )
|
||||
to:mode::@1
|
919
src/test/java/dk/camelot64/kickc/test/ref/emptyblock-error.log
Normal file
919
src/test/java/dk/camelot64/kickc/test/ref/emptyblock-error.log
Normal file
@ -0,0 +1,919 @@
|
||||
PARSING src/test/java/dk/camelot64/kickc/test/kc/emptyblock-error.kc
|
||||
// Error cleaning up unused blocks
|
||||
|
||||
|
||||
void main() {
|
||||
while(true) {
|
||||
menu();
|
||||
}
|
||||
}
|
||||
|
||||
void menu() {
|
||||
while(true) {
|
||||
mode();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
byte a = 0;
|
||||
byte *B = $1000;
|
||||
|
||||
void mode() {
|
||||
while(true) {
|
||||
if(*B == 0) {
|
||||
a = *B;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
STATEMENTS
|
||||
proc (void()) main()
|
||||
main::@1:
|
||||
if(true) goto main::@2
|
||||
goto main::@3
|
||||
main::@2:
|
||||
(void~) main::$0 ← call menu
|
||||
goto main::@1
|
||||
main::@3:
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
proc (void()) menu()
|
||||
menu::@1:
|
||||
if(true) goto menu::@2
|
||||
goto menu::@3
|
||||
menu::@2:
|
||||
(void~) menu::$0 ← call mode
|
||||
goto menu::@return
|
||||
goto menu::@1
|
||||
menu::@3:
|
||||
menu::@return:
|
||||
return
|
||||
endproc // menu()
|
||||
(byte) a ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte*) B ← (word/signed word/dword/signed dword) 4096
|
||||
proc (void()) mode()
|
||||
mode::@1:
|
||||
if(true) goto mode::@2
|
||||
goto mode::@3
|
||||
mode::@2:
|
||||
(boolean~) mode::$0 ← *((byte*) B) == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) mode::$1 ← ! (boolean~) mode::$0
|
||||
if((boolean~) mode::$1) goto mode::@4
|
||||
(byte) a ← *((byte*) B)
|
||||
mode::@4:
|
||||
goto mode::@1
|
||||
mode::@3:
|
||||
mode::@return:
|
||||
return
|
||||
endproc // mode()
|
||||
call main
|
||||
|
||||
SYMBOLS
|
||||
(byte*) B
|
||||
(byte) a
|
||||
(void()) main()
|
||||
(void~) main::$0
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(void()) menu()
|
||||
(void~) menu::$0
|
||||
(label) menu::@1
|
||||
(label) menu::@2
|
||||
(label) menu::@3
|
||||
(label) menu::@return
|
||||
(void()) mode()
|
||||
(boolean~) mode::$0
|
||||
(boolean~) mode::$1
|
||||
(label) mode::@1
|
||||
(label) mode::@2
|
||||
(label) mode::@3
|
||||
(label) mode::@4
|
||||
(label) mode::@return
|
||||
|
||||
Promoting word/signed word/dword/signed dword to byte* in B ← ((byte*)) 4096
|
||||
INITIAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
main: scope:[main] from
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
if(true) goto main::@2
|
||||
to:main::@4
|
||||
main::@2: scope:[main] from main::@1 main::@5
|
||||
(void~) main::$0 ← call menu
|
||||
to:main::@1
|
||||
main::@4: scope:[main] from main::@1
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@4 main::@6
|
||||
to:main::@return
|
||||
main::@5: scope:[main] from
|
||||
to:main::@2
|
||||
main::@6: scope:[main] from
|
||||
to:main::@3
|
||||
main::@return: scope:[main] from main::@3
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
to:@2
|
||||
menu: scope:[menu] from
|
||||
to:menu::@1
|
||||
menu::@1: scope:[menu] from menu menu::@6
|
||||
if(true) goto menu::@2
|
||||
to:menu::@4
|
||||
menu::@2: scope:[menu] from menu::@1 menu::@5
|
||||
(void~) menu::$0 ← call mode
|
||||
to:menu::@return
|
||||
menu::@4: scope:[menu] from menu::@1
|
||||
to:menu::@3
|
||||
menu::@3: scope:[menu] from menu::@4 menu::@7
|
||||
to:menu::@return
|
||||
menu::@5: scope:[menu] from
|
||||
to:menu::@2
|
||||
menu::@return: scope:[menu] from menu::@2 menu::@3
|
||||
return
|
||||
to:@return
|
||||
menu::@6: scope:[menu] from
|
||||
to:menu::@1
|
||||
menu::@7: scope:[menu] from
|
||||
to:menu::@3
|
||||
@2: scope:[] from @1
|
||||
(byte) a ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte*) B ← ((byte*)) (word/signed word/dword/signed dword) 4096
|
||||
to:@3
|
||||
mode: scope:[mode] from
|
||||
to:mode::@1
|
||||
mode::@1: scope:[mode] from mode mode::@4
|
||||
if(true) goto mode::@2
|
||||
to:mode::@5
|
||||
mode::@2: scope:[mode] from mode::@1 mode::@6
|
||||
(boolean~) mode::$0 ← *((byte*) B) == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) mode::$1 ← ! (boolean~) mode::$0
|
||||
if((boolean~) mode::$1) goto mode::@4
|
||||
to:mode::@7
|
||||
mode::@5: scope:[mode] from mode::@1
|
||||
to:mode::@3
|
||||
mode::@3: scope:[mode] from mode::@5 mode::@8
|
||||
to:mode::@return
|
||||
mode::@6: scope:[mode] from
|
||||
to:mode::@2
|
||||
mode::@4: scope:[mode] from mode::@2 mode::@7
|
||||
to:mode::@1
|
||||
mode::@7: scope:[mode] from mode::@2
|
||||
(byte) a ← *((byte*) B)
|
||||
to:mode::@4
|
||||
mode::@8: scope:[mode] from
|
||||
to:mode::@3
|
||||
mode::@return: scope:[mode] from mode::@3
|
||||
return
|
||||
to:@return
|
||||
@3: scope:[] from @2
|
||||
call main
|
||||
to:@end
|
||||
@end: scope:[] from @3
|
||||
|
||||
Eliminating unused variable - keeping the call (void~) main::$0
|
||||
Eliminating unused variable - keeping the call (void~) menu::$0
|
||||
Removing empty block main::@4
|
||||
Removing empty block main::@3
|
||||
Removing empty block main::@5
|
||||
Removing empty block main::@6
|
||||
Removing empty block @1
|
||||
Removing empty block menu::@4
|
||||
Removing empty block menu::@3
|
||||
Removing empty block menu::@5
|
||||
Removing empty block menu::@6
|
||||
Removing empty block menu::@7
|
||||
Removing empty block mode::@5
|
||||
Removing empty block mode::@3
|
||||
Removing empty block mode::@6
|
||||
Removing empty block mode::@8
|
||||
PROCEDURE MODIFY VARIABLE ANALYSIS
|
||||
main modifies a
|
||||
menu modifies a
|
||||
mode modifies a
|
||||
|
||||
Completing Phi functions...
|
||||
Completing Phi functions...
|
||||
Completing Phi functions...
|
||||
Completing Phi functions...
|
||||
Completing Phi functions...
|
||||
Completing Phi functions...
|
||||
Completing Phi functions...
|
||||
Completing Phi functions...
|
||||
Completing Phi functions...
|
||||
Completing Phi functions...
|
||||
|
||||
CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
|
||||
@begin: scope:[] from
|
||||
to:@2
|
||||
main: scope:[main] from @3
|
||||
(byte*) B#11 ← phi( @3/(byte*) B#13 )
|
||||
(byte) a#20 ← phi( @3/(byte) a#19 )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@7
|
||||
(byte*) B#10 ← phi( main/(byte*) B#11 main::@7/(byte*) B#12 )
|
||||
(byte) a#15 ← phi( main/(byte) a#20 main::@7/(byte) a#0 )
|
||||
if(true) goto main::@2
|
||||
to:main::@return
|
||||
main::@2: scope:[main] from main::@1
|
||||
(byte*) B#9 ← phi( main::@1/(byte*) B#10 )
|
||||
(byte) a#14 ← phi( main::@1/(byte) a#15 )
|
||||
call menu param-assignment
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@2
|
||||
(byte*) B#12 ← phi( main::@2/(byte*) B#9 )
|
||||
(byte) a#8 ← phi( main::@2/(byte) a#3 )
|
||||
(byte) a#0 ← (byte) a#8
|
||||
to:main::@1
|
||||
main::@return: scope:[main] from main::@1
|
||||
(byte) a#9 ← phi( main::@1/(byte) a#15 )
|
||||
(byte) a#1 ← (byte) a#9
|
||||
return
|
||||
to:@return
|
||||
menu: scope:[menu] from main::@2
|
||||
(byte*) B#8 ← phi( main::@2/(byte*) B#9 )
|
||||
(byte) a#21 ← phi( main::@2/(byte) a#14 )
|
||||
to:menu::@1
|
||||
menu::@1: scope:[menu] from menu
|
||||
(byte*) B#7 ← phi( menu/(byte*) B#8 )
|
||||
(byte) a#17 ← phi( menu/(byte) a#21 )
|
||||
if(true) goto menu::@2
|
||||
to:menu::@return
|
||||
menu::@2: scope:[menu] from menu::@1
|
||||
(byte*) B#6 ← phi( menu::@1/(byte*) B#7 )
|
||||
(byte) a#16 ← phi( menu::@1/(byte) a#17 )
|
||||
call mode param-assignment
|
||||
to:menu::@8
|
||||
menu::@8: scope:[menu] from menu::@2
|
||||
(byte) a#10 ← phi( menu::@2/(byte) a#6 )
|
||||
(byte) a#2 ← (byte) a#10
|
||||
to:menu::@return
|
||||
menu::@return: scope:[menu] from menu::@1 menu::@8
|
||||
(byte) a#11 ← phi( menu::@1/(byte) a#17 menu::@8/(byte) a#2 )
|
||||
(byte) a#3 ← (byte) a#11
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
(byte) a#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte*) B#0 ← ((byte*)) (word/signed word/dword/signed dword) 4096
|
||||
to:@3
|
||||
mode: scope:[mode] from menu::@2
|
||||
(byte) a#22 ← phi( menu::@2/(byte) a#16 )
|
||||
(byte*) B#4 ← phi( menu::@2/(byte*) B#6 )
|
||||
to:mode::@1
|
||||
mode::@1: scope:[mode] from mode mode::@4 mode::@7
|
||||
(byte) a#18 ← phi( mode/(byte) a#22 mode::@4/(byte) a#23 mode::@7/(byte) a#5 )
|
||||
(byte*) B#3 ← phi( mode/(byte*) B#4 mode::@4/(byte*) B#5 mode::@7/(byte*) B#2 )
|
||||
if(true) goto mode::@2
|
||||
to:mode::@return
|
||||
mode::@2: scope:[mode] from mode::@1
|
||||
(byte) a#24 ← phi( mode::@1/(byte) a#18 )
|
||||
(byte*) B#1 ← phi( mode::@1/(byte*) B#3 )
|
||||
(boolean~) mode::$0 ← *((byte*) B#1) == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(boolean~) mode::$1 ← ! (boolean~) mode::$0
|
||||
if((boolean~) mode::$1) goto mode::@4
|
||||
to:mode::@7
|
||||
mode::@4: scope:[mode] from mode::@2
|
||||
(byte) a#23 ← phi( mode::@2/(byte) a#24 )
|
||||
(byte*) B#5 ← phi( mode::@2/(byte*) B#1 )
|
||||
to:mode::@1
|
||||
mode::@7: scope:[mode] from mode::@2
|
||||
(byte*) B#2 ← phi( mode::@2/(byte*) B#1 )
|
||||
(byte) a#5 ← *((byte*) B#2)
|
||||
to:mode::@1
|
||||
mode::@return: scope:[mode] from mode::@1
|
||||
(byte) a#12 ← phi( mode::@1/(byte) a#18 )
|
||||
(byte) a#6 ← (byte) a#12
|
||||
return
|
||||
to:@return
|
||||
@3: scope:[] from @2
|
||||
(byte*) B#13 ← phi( @2/(byte*) B#0 )
|
||||
(byte) a#19 ← phi( @2/(byte) a#4 )
|
||||
call main param-assignment
|
||||
to:@4
|
||||
@4: scope:[] from @3
|
||||
(byte) a#13 ← phi( @3/(byte) a#1 )
|
||||
(byte) a#7 ← (byte) a#13
|
||||
to:@end
|
||||
@end: scope:[] from @4
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @2
|
||||
(label) @3
|
||||
(label) @4
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) B
|
||||
(byte*) B#0
|
||||
(byte*) B#1
|
||||
(byte*) B#10
|
||||
(byte*) B#11
|
||||
(byte*) B#12
|
||||
(byte*) B#13
|
||||
(byte*) B#2
|
||||
(byte*) B#3
|
||||
(byte*) B#4
|
||||
(byte*) B#5
|
||||
(byte*) B#6
|
||||
(byte*) B#7
|
||||
(byte*) B#8
|
||||
(byte*) B#9
|
||||
(byte) a
|
||||
(byte) a#0
|
||||
(byte) a#1
|
||||
(byte) a#10
|
||||
(byte) a#11
|
||||
(byte) a#12
|
||||
(byte) a#13
|
||||
(byte) a#14
|
||||
(byte) a#15
|
||||
(byte) a#16
|
||||
(byte) a#17
|
||||
(byte) a#18
|
||||
(byte) a#19
|
||||
(byte) a#2
|
||||
(byte) a#20
|
||||
(byte) a#21
|
||||
(byte) a#22
|
||||
(byte) a#23
|
||||
(byte) a#24
|
||||
(byte) a#3
|
||||
(byte) a#4
|
||||
(byte) a#5
|
||||
(byte) a#6
|
||||
(byte) a#7
|
||||
(byte) a#8
|
||||
(byte) a#9
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@7
|
||||
(label) main::@return
|
||||
(void()) menu()
|
||||
(label) menu::@1
|
||||
(label) menu::@2
|
||||
(label) menu::@8
|
||||
(label) menu::@return
|
||||
(void()) mode()
|
||||
(boolean~) mode::$0
|
||||
(boolean~) mode::$1
|
||||
(label) mode::@1
|
||||
(label) mode::@2
|
||||
(label) mode::@4
|
||||
(label) mode::@7
|
||||
(label) mode::@return
|
||||
|
||||
OPTIMIZING CONTROL FLOW GRAPH
|
||||
Inversing boolean not (boolean~) mode::$1 ← *((byte*) B#1) != (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) mode::$0 ← *((byte*) B#1) == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Succesful SSA optimization Pass2UnaryNotSimplification
|
||||
Not aliassing across scopes: a#20 a#19
|
||||
Not aliassing across scopes: B#11 B#13
|
||||
Not aliassing across scopes: a#8 a#3
|
||||
Not aliassing across scopes: a#21 a#14
|
||||
Not aliassing across scopes: B#8 B#9
|
||||
Not aliassing across scopes: a#10 a#6
|
||||
Not aliassing across scopes: B#4 B#6
|
||||
Not aliassing across scopes: a#22 a#16
|
||||
Not aliassing across scopes: a#13 a#1
|
||||
Alias (byte) a#1 = (byte) a#14 (byte) a#15 (byte) a#9
|
||||
Alias (byte*) B#10 = (byte*) B#9 (byte*) B#12
|
||||
Alias (byte) a#0 = (byte) a#8
|
||||
Alias (byte) a#16 = (byte) a#17 (byte) a#21
|
||||
Alias (byte*) B#6 = (byte*) B#7 (byte*) B#8
|
||||
Alias (byte) a#10 = (byte) a#2
|
||||
Alias (byte) a#11 = (byte) a#3
|
||||
Alias (byte*) B#1 = (byte*) B#3 (byte*) B#5 (byte*) B#2
|
||||
Alias (byte) a#12 = (byte) a#24 (byte) a#18 (byte) a#23 (byte) a#6
|
||||
Alias (byte) a#19 = (byte) a#4
|
||||
Alias (byte*) B#0 = (byte*) B#13
|
||||
Alias (byte) a#13 = (byte) a#7
|
||||
Succesful SSA optimization Pass2AliasElimination
|
||||
Not aliassing across scopes: a#20 a#19
|
||||
Not aliassing across scopes: B#11 B#0
|
||||
Not aliassing across scopes: a#0 a#11
|
||||
Not aliassing across scopes: a#16 a#1
|
||||
Not aliassing across scopes: B#6 B#10
|
||||
Not aliassing across scopes: a#10 a#12
|
||||
Not aliassing across scopes: B#4 B#6
|
||||
Not aliassing across scopes: a#22 a#16
|
||||
Not aliassing across scopes: a#13 a#1
|
||||
Self Phi Eliminated (byte*) B#10
|
||||
Self Phi Eliminated (byte*) B#1
|
||||
Self Phi Eliminated (byte*) B#1
|
||||
Self Phi Eliminated (byte) a#12
|
||||
Succesful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte) a#20 (byte) a#19
|
||||
Redundant Phi (byte*) B#11 (byte*) B#0
|
||||
Redundant Phi (byte*) B#10 (byte*) B#11
|
||||
Redundant Phi (byte) a#0 (byte) a#11
|
||||
Redundant Phi (byte) a#16 (byte) a#1
|
||||
Redundant Phi (byte*) B#6 (byte*) B#10
|
||||
Redundant Phi (byte) a#10 (byte) a#12
|
||||
Redundant Phi (byte*) B#4 (byte*) B#6
|
||||
Redundant Phi (byte) a#22 (byte) a#16
|
||||
Redundant Phi (byte*) B#1 (byte*) B#4
|
||||
Redundant Phi (byte) a#13 (byte) a#1
|
||||
Succesful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (boolean~) mode::$1 if(*((byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4
|
||||
Succesful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte) a#19 = 0
|
||||
Constant (const byte*) B#0 = ((byte*))4096
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination if(true) goto main::@2
|
||||
if() condition always true - replacing block destination if(true) goto menu::@2
|
||||
Removing PHI-reference to removed block (menu::@1) in block menu::@return
|
||||
if() condition always true - replacing block destination if(true) goto mode::@2
|
||||
Succesful SSA optimization Pass2ConstantIfs
|
||||
Removing unused block main::@return
|
||||
Removing unused block mode::@return
|
||||
Succesful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) menu::@1
|
||||
Culled Empty Block (label) menu::@8
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) mode::@4
|
||||
Culled Empty Block (label) @4
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
Not aliassing across scopes: a#11 a#12
|
||||
Not aliassing across scopes: a#12 a#1
|
||||
Redundant Phi (byte) a#11 (byte) a#12
|
||||
Succesful SSA optimization Pass2RedundantPhiElimination
|
||||
Not aliassing across scopes: a#12 a#1
|
||||
OPTIMIZING CONTROL FLOW GRAPH
|
||||
Inlining constant with var siblings (const byte) a#19
|
||||
Inlining constant with var siblings (const byte) a#19
|
||||
Inlining constant with var siblings (const byte) a#19
|
||||
Constant inlined a#19 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Succesful SSA optimization Pass2ConstantInlining
|
||||
Block Sequence Planned @begin @3 @end main main::@1 main::@2 menu menu::@2 menu::@return mode mode::@1 mode::@2 mode::@7
|
||||
Block Sequence Planned @begin @3 @end main main::@1 main::@2 menu menu::@2 menu::@return mode mode::@1 mode::@2 mode::@7
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@2
|
||||
Adding NOP phi() at start of menu
|
||||
Adding NOP phi() at start of menu::@2
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
Calls in [main] to menu:7
|
||||
Calls in [menu] to mode:11
|
||||
|
||||
Propagating live ranges...
|
||||
Propagating live ranges...
|
||||
Propagating live ranges...
|
||||
Propagating live ranges...
|
||||
Propagating live ranges...
|
||||
Created 2 initial phi equivalence classes
|
||||
Coalesced [8] a#25 ← a#12
|
||||
Coalesced (already) [13] a#26 ← a#1
|
||||
Coalesced [17] a#27 ← a#5
|
||||
Coalesced down to 1 phi equivalence classes
|
||||
Block Sequence Planned @begin @3 @end main main::@1 main::@2 menu menu::@2 menu::@return mode mode::@1 mode::@2 mode::@7
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @3
|
||||
Adding NOP phi() at start of @end
|
||||
Adding NOP phi() at start of main
|
||||
Adding NOP phi() at start of main::@2
|
||||
Adding NOP phi() at start of menu
|
||||
Adding NOP phi() at start of menu::@2
|
||||
Adding NOP phi() at start of mode
|
||||
Propagating live ranges...
|
||||
Propagating live ranges...
|
||||
Propagating live ranges...
|
||||
Propagating live ranges...
|
||||
Propagating live ranges...
|
||||
Propagating live ranges...
|
||||
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@3
|
||||
@3: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @3
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @3
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
[5] (byte) a#1 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) a#12 ) [ a#1 ] ( main:2 [ a#1 ] )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
[6] phi() [ a#1 ] ( main:2 [ a#1 ] )
|
||||
[7] call menu param-assignment [ a#12 ] ( main:2 [ a#12 ] )
|
||||
to:main::@1
|
||||
menu: scope:[menu] from main::@2
|
||||
[8] phi() [ a#1 ] ( main:2::menu:7 [ a#1 ] )
|
||||
to:menu::@2
|
||||
menu::@2: scope:[menu] from menu
|
||||
[9] phi() [ a#1 ] ( main:2::menu:7 [ a#1 ] )
|
||||
[10] call mode param-assignment [ a#12 ] ( main:2::menu:7 [ a#12 ] )
|
||||
to:menu::@return
|
||||
menu::@return: scope:[menu] from menu::@2
|
||||
[11] return [ a#12 ] ( main:2::menu:7 [ a#12 ] )
|
||||
to:@return
|
||||
mode: scope:[mode] from menu::@2
|
||||
[12] phi() [ a#1 ] ( main:2::menu:7::mode:10 [ a#1 ] )
|
||||
to:mode::@1
|
||||
mode::@1: scope:[mode] from mode mode::@2 mode::@7
|
||||
[13] (byte) a#12 ← phi( mode/(byte) a#1 mode::@7/(byte) a#5 ) [ ] ( main:2::menu:7::mode:10 [ ] )
|
||||
to:mode::@2
|
||||
mode::@2: scope:[mode] from mode::@1
|
||||
[14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 [ ] ( main:2::menu:7::mode:10 [ ] )
|
||||
to:mode::@7
|
||||
mode::@7: scope:[mode] from mode::@2
|
||||
[15] (byte) a#5 ← *((const byte*) B#0) [ a#5 ] ( main:2::menu:7::mode:10 [ a#5 ] )
|
||||
to:mode::@1
|
||||
|
||||
DOMINATORS
|
||||
@begin dominated by @begin
|
||||
@3 dominated by @begin @3
|
||||
@end dominated by @begin @end @3
|
||||
main dominated by @begin main @3
|
||||
main::@1 dominated by @begin main @3 main::@1
|
||||
main::@2 dominated by @begin main @3 main::@1 main::@2
|
||||
menu dominated by @begin main menu @3 main::@1 main::@2
|
||||
menu::@2 dominated by @begin menu::@2 main menu @3 main::@1 main::@2
|
||||
menu::@return dominated by @begin menu::@return menu::@2 main menu @3 main::@1 main::@2
|
||||
mode dominated by @begin menu::@2 main menu mode @3 main::@1 main::@2
|
||||
mode::@1 dominated by @begin menu::@2 main menu mode @3 mode::@1 main::@1 main::@2
|
||||
mode::@2 dominated by @begin menu::@2 main menu mode @3 mode::@1 mode::@2 main::@1 main::@2
|
||||
mode::@7 dominated by @begin menu::@2 main menu mode @3 mode::@1 mode::@2 main::@1 mode::@7 main::@2
|
||||
|
||||
NATURAL LOOPS
|
||||
Found back edge: Loop head: main::@1 tails: main::@2 blocks: null
|
||||
Found back edge: Loop head: mode::@1 tails: mode::@2 blocks: null
|
||||
Found back edge: Loop head: mode::@1 tails: mode::@7 blocks: null
|
||||
Populated: Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1
|
||||
Populated: Loop head: mode::@1 tails: mode::@2 blocks: mode::@2 mode::@1
|
||||
Populated: Loop head: mode::@1 tails: mode::@7 blocks: mode::@7 mode::@2 mode::@1
|
||||
Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1
|
||||
Loop head: mode::@1 tails: mode::@2 blocks: mode::@2 mode::@1
|
||||
Loop head: mode::@1 tails: mode::@7 blocks: mode::@7 mode::@2 mode::@1
|
||||
|
||||
NATURAL LOOPS WITH DEPTH
|
||||
Found 0 loops in scope []
|
||||
Found 1 loops in scope [main]
|
||||
Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1
|
||||
Found 0 loops in scope [menu]
|
||||
Found 2 loops in scope [mode]
|
||||
Loop head: mode::@1 tails: mode::@2 blocks: mode::@2 mode::@1
|
||||
Loop head: mode::@1 tails: mode::@7 blocks: mode::@7 mode::@2 mode::@1
|
||||
Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 depth: 1
|
||||
Loop head: mode::@1 tails: mode::@2 blocks: mode::@2 mode::@1 depth: 3
|
||||
Loop head: mode::@1 tails: mode::@7 blocks: mode::@7 mode::@2 mode::@1 depth: 2
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) B
|
||||
(byte) a
|
||||
(byte) a#1 2.6
|
||||
(byte) a#12 38.0
|
||||
(byte) a#5 202.0
|
||||
(void()) main()
|
||||
(void()) menu()
|
||||
(void()) mode()
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ a#1 a#12 a#5 ]
|
||||
Complete equivalence classes
|
||||
[ a#1 a#12 a#5 ]
|
||||
Allocated zp ZP_BYTE:2 [ a#1 a#12 a#5 ]
|
||||
|
||||
INITIAL ASM
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
.label B = $1000
|
||||
.label a = 2
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @3 [phi:@begin->@3]
|
||||
b3_from_bbegin:
|
||||
jmp b3
|
||||
//SEG4 @3
|
||||
b3:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @3 to main [phi:@3->main]
|
||||
main_from_b3:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @3 to @end [phi:@3->@end]
|
||||
bend_from_b3:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
//SEG9 main
|
||||
main: {
|
||||
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
//SEG11 [5] phi (byte) a#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #0
|
||||
sta a
|
||||
jmp b1
|
||||
//SEG12 main::@1
|
||||
b1:
|
||||
//SEG13 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
||||
b2_from_b1:
|
||||
jmp b2
|
||||
//SEG14 main::@2
|
||||
b2:
|
||||
//SEG15 [7] call menu param-assignment [ a#12 ] ( main:2 [ a#12 ] )
|
||||
//SEG16 [8] phi from main::@2 to menu [phi:main::@2->menu]
|
||||
menu_from_b2:
|
||||
jsr menu
|
||||
//SEG17 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
b1_from_b2:
|
||||
//SEG18 [5] phi (byte) a#1 = (byte) a#12 [phi:main::@2->main::@1#0] -- register_copy
|
||||
jmp b1
|
||||
}
|
||||
//SEG19 menu
|
||||
menu: {
|
||||
//SEG20 [9] phi from menu to menu::@2 [phi:menu->menu::@2]
|
||||
b2_from_menu:
|
||||
jmp b2
|
||||
//SEG21 menu::@2
|
||||
b2:
|
||||
//SEG22 [10] call mode param-assignment [ a#12 ] ( main:2::menu:7 [ a#12 ] )
|
||||
//SEG23 [12] phi from menu::@2 to mode [phi:menu::@2->mode]
|
||||
mode_from_b2:
|
||||
jsr mode
|
||||
jmp breturn
|
||||
//SEG24 menu::@return
|
||||
breturn:
|
||||
//SEG25 [11] return [ a#12 ] ( main:2::menu:7 [ a#12 ] )
|
||||
rts
|
||||
}
|
||||
//SEG26 mode
|
||||
mode: {
|
||||
//SEG27 [13] phi from mode mode::@7 to mode::@1 [phi:mode/mode::@7->mode::@1]
|
||||
b1_from_mode:
|
||||
b1_from_b7:
|
||||
//SEG28 [13] phi (byte) a#12 = (byte) a#1 [phi:mode/mode::@7->mode::@1#0] -- register_copy
|
||||
jmp b1
|
||||
//SEG29 [13] phi from mode::@2 to mode::@1 [phi:mode::@2->mode::@1]
|
||||
b1_from_b2:
|
||||
jmp b1
|
||||
//SEG30 mode::@1
|
||||
b1:
|
||||
jmp b2
|
||||
//SEG31 mode::@2
|
||||
b2:
|
||||
//SEG32 [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 [ ] ( main:2::menu:7::mode:10 [ ] ) -- _deref_pbuc1_neq_0_then_la1
|
||||
lda B
|
||||
cmp #0
|
||||
bne b1_from_b2
|
||||
jmp b7
|
||||
//SEG33 mode::@7
|
||||
b7:
|
||||
//SEG34 [15] (byte) a#5 ← *((const byte*) B#0) [ a#5 ] ( main:2::menu:7::mode:10 [ a#5 ] ) -- vbuz1=_deref_pbuc1
|
||||
lda B
|
||||
sta a
|
||||
jmp b1_from_b7
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 [ ] ( main:2::menu:7::mode:10 [ ] ) always clobbers reg byte a
|
||||
Potential registers zp ZP_BYTE:2 [ a#1 a#12 a#5 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [] 242.6: zp ZP_BYTE:2 [ a#1 a#12 a#5 ]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope [menu]
|
||||
Uplift Scope [mode]
|
||||
|
||||
Uplifting [] best 18376 combination reg byte a [ a#1 a#12 a#5 ]
|
||||
Uplifting [main] best 18376 combination
|
||||
Uplifting [menu] best 18376 combination
|
||||
Uplifting [mode] best 18376 combination
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
.label B = $1000
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @3 [phi:@begin->@3]
|
||||
b3_from_bbegin:
|
||||
jmp b3
|
||||
//SEG4 @3
|
||||
b3:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @3 to main [phi:@3->main]
|
||||
main_from_b3:
|
||||
jsr main
|
||||
//SEG7 [3] phi from @3 to @end [phi:@3->@end]
|
||||
bend_from_b3:
|
||||
jmp bend
|
||||
//SEG8 @end
|
||||
bend:
|
||||
//SEG9 main
|
||||
main: {
|
||||
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
//SEG11 [5] phi (byte) a#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1
|
||||
lda #0
|
||||
jmp b1
|
||||
//SEG12 main::@1
|
||||
b1:
|
||||
//SEG13 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
||||
b2_from_b1:
|
||||
jmp b2
|
||||
//SEG14 main::@2
|
||||
b2:
|
||||
//SEG15 [7] call menu param-assignment [ a#12 ] ( main:2 [ a#12 ] )
|
||||
//SEG16 [8] phi from main::@2 to menu [phi:main::@2->menu]
|
||||
menu_from_b2:
|
||||
jsr menu
|
||||
//SEG17 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
b1_from_b2:
|
||||
//SEG18 [5] phi (byte) a#1 = (byte) a#12 [phi:main::@2->main::@1#0] -- register_copy
|
||||
jmp b1
|
||||
}
|
||||
//SEG19 menu
|
||||
menu: {
|
||||
//SEG20 [9] phi from menu to menu::@2 [phi:menu->menu::@2]
|
||||
b2_from_menu:
|
||||
jmp b2
|
||||
//SEG21 menu::@2
|
||||
b2:
|
||||
//SEG22 [10] call mode param-assignment [ a#12 ] ( main:2::menu:7 [ a#12 ] )
|
||||
//SEG23 [12] phi from menu::@2 to mode [phi:menu::@2->mode]
|
||||
mode_from_b2:
|
||||
jsr mode
|
||||
jmp breturn
|
||||
//SEG24 menu::@return
|
||||
breturn:
|
||||
//SEG25 [11] return [ a#12 ] ( main:2::menu:7 [ a#12 ] )
|
||||
rts
|
||||
}
|
||||
//SEG26 mode
|
||||
mode: {
|
||||
//SEG27 [13] phi from mode mode::@7 to mode::@1 [phi:mode/mode::@7->mode::@1]
|
||||
b1_from_mode:
|
||||
b1_from_b7:
|
||||
//SEG28 [13] phi (byte) a#12 = (byte) a#1 [phi:mode/mode::@7->mode::@1#0] -- register_copy
|
||||
jmp b1
|
||||
//SEG29 [13] phi from mode::@2 to mode::@1 [phi:mode::@2->mode::@1]
|
||||
b1_from_b2:
|
||||
jmp b1
|
||||
//SEG30 mode::@1
|
||||
b1:
|
||||
jmp b2
|
||||
//SEG31 mode::@2
|
||||
b2:
|
||||
//SEG32 [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 [ ] ( main:2::menu:7::mode:10 [ ] ) -- _deref_pbuc1_neq_0_then_la1
|
||||
lda B
|
||||
cmp #0
|
||||
bne b1_from_b2
|
||||
jmp b7
|
||||
//SEG33 mode::@7
|
||||
b7:
|
||||
//SEG34 [15] (byte) a#5 ← *((const byte*) B#0) [ a#5 ] ( main:2::menu:7::mode:10 [ a#5 ] ) -- vbuaa=_deref_pbuc1
|
||||
lda B
|
||||
jmp b1_from_b7
|
||||
}
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b3
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp breturn
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp b7
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Replacing label b1 with b2
|
||||
Replacing label b1 with b2
|
||||
Replacing label b1_from_b2 with b2
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b3_from_bbegin:
|
||||
Removing instruction main_from_b3:
|
||||
Removing instruction bend_from_b3:
|
||||
Removing instruction b1:
|
||||
Removing instruction b2_from_b1:
|
||||
Removing instruction menu_from_b2:
|
||||
Removing instruction b2_from_menu:
|
||||
Removing instruction mode_from_b2:
|
||||
Removing instruction b1_from_mode:
|
||||
Removing instruction b1_from_b2:
|
||||
Removing instruction b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b3:
|
||||
Removing instruction bend:
|
||||
Removing instruction b1_from_main:
|
||||
Removing instruction b1_from_b2:
|
||||
Removing instruction b2:
|
||||
Removing instruction breturn:
|
||||
Removing instruction b7:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
Skipping double jump to b2 in jmp b1_from_b7
|
||||
Succesful ASM optimization Pass5DoubleJumpElimination
|
||||
Relabelling long label b1_from_b7 to b1
|
||||
Succesful ASM optimization Pass5RelabelLongLabels
|
||||
Removing instruction jmp b2
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction lda B
|
||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||
Removing instruction b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) B
|
||||
(const byte*) B#0 B = ((byte*))(word/signed word/dword/signed dword) 4096
|
||||
(byte) a
|
||||
(byte) a#1 reg byte a 2.6
|
||||
(byte) a#12 reg byte a 38.0
|
||||
(byte) a#5 reg byte a 202.0
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(void()) menu()
|
||||
(label) menu::@2
|
||||
(label) menu::@return
|
||||
(void()) mode()
|
||||
(label) mode::@1
|
||||
(label) mode::@2
|
||||
(label) mode::@7
|
||||
|
||||
reg byte a [ a#1 a#12 a#5 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 8874
|
||||
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
.label B = $1000
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @3 [phi:@begin->@3]
|
||||
//SEG4 @3
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
//SEG6 [4] phi from @3 to main [phi:@3->main]
|
||||
jsr main
|
||||
//SEG7 [3] phi from @3 to @end [phi:@3->@end]
|
||||
//SEG8 @end
|
||||
//SEG9 main
|
||||
main: {
|
||||
//SEG10 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
//SEG11 [5] phi (byte) a#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuaa=vbuc1
|
||||
lda #0
|
||||
//SEG12 main::@1
|
||||
//SEG13 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
||||
//SEG14 main::@2
|
||||
b2:
|
||||
//SEG15 [7] call menu param-assignment [ a#12 ] ( main:2 [ a#12 ] )
|
||||
//SEG16 [8] phi from main::@2 to menu [phi:main::@2->menu]
|
||||
jsr menu
|
||||
//SEG17 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
//SEG18 [5] phi (byte) a#1 = (byte) a#12 [phi:main::@2->main::@1#0] -- register_copy
|
||||
jmp b2
|
||||
}
|
||||
//SEG19 menu
|
||||
menu: {
|
||||
//SEG20 [9] phi from menu to menu::@2 [phi:menu->menu::@2]
|
||||
//SEG21 menu::@2
|
||||
//SEG22 [10] call mode param-assignment [ a#12 ] ( main:2::menu:7 [ a#12 ] )
|
||||
//SEG23 [12] phi from menu::@2 to mode [phi:menu::@2->mode]
|
||||
jsr mode
|
||||
//SEG24 menu::@return
|
||||
//SEG25 [11] return [ a#12 ] ( main:2::menu:7 [ a#12 ] )
|
||||
rts
|
||||
}
|
||||
//SEG26 mode
|
||||
mode: {
|
||||
//SEG27 [13] phi from mode mode::@7 to mode::@1 [phi:mode/mode::@7->mode::@1]
|
||||
//SEG28 [13] phi (byte) a#12 = (byte) a#1 [phi:mode/mode::@7->mode::@1#0] -- register_copy
|
||||
//SEG29 [13] phi from mode::@2 to mode::@1 [phi:mode::@2->mode::@1]
|
||||
//SEG30 mode::@1
|
||||
//SEG31 mode::@2
|
||||
b2:
|
||||
//SEG32 [14] if(*((const byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@1 [ ] ( main:2::menu:7::mode:10 [ ] ) -- _deref_pbuc1_neq_0_then_la1
|
||||
lda B
|
||||
cmp #0
|
||||
bne b2
|
||||
//SEG33 mode::@7
|
||||
//SEG34 [15] (byte) a#5 ← *((const byte*) B#0) [ a#5 ] ( main:2::menu:7::mode:10 [ a#5 ] ) -- vbuaa=_deref_pbuc1
|
||||
jmp b2
|
||||
}
|
||||
|
@ -0,0 +1,21 @@
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) B
|
||||
(const byte*) B#0 B = ((byte*))(word/signed word/dword/signed dword) 4096
|
||||
(byte) a
|
||||
(byte) a#1 reg byte a 2.6
|
||||
(byte) a#12 reg byte a 38.0
|
||||
(byte) a#5 reg byte a 202.0
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(void()) menu()
|
||||
(label) menu::@2
|
||||
(label) menu::@return
|
||||
(void()) mode()
|
||||
(label) mode::@1
|
||||
(label) mode::@2
|
||||
(label) mode::@7
|
||||
|
||||
reg byte a [ a#1 a#12 a#5 ]
|
Loading…
x
Reference in New Issue
Block a user