1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-27 04:49:27 +00:00

Implemented test simulating a struct.

This commit is contained in:
jespergravgaard 2019-04-20 11:13:49 +02:00
parent 5da972b5b2
commit 27444f7c7d
17 changed files with 13672 additions and 0 deletions

View File

@ -0,0 +1,5 @@
ldy #0
sta ({z1}),y
tya
iny
sta ({z1}),y

View File

@ -0,0 +1,5 @@
ldy #0
sta ({z1}),y
tya
iny
sta ({z1}),y

View File

@ -0,0 +1,6 @@
ldy #0
lda #<{c1}
sta ({z1}),y
iny
lda #>{c1}
sta ({z1}),y

View File

@ -0,0 +1,6 @@
ldy #0
lda ({z2}),y
sta {z1}
iny
lda ({z2}),y
sta {z1}+1

View File

@ -0,0 +1,7 @@
lda {z2}
clc
adc #2
sta {z1}
lda {z2}+1
adc #0
sta {z1}+1

View File

@ -0,0 +1 @@
// Do nothing

View File

@ -0,0 +1,4 @@
lda {z2}
sta {z1}
lda {z2}+1
sta {z1}+1

View File

@ -0,0 +1 @@
// Do nothing

View File

@ -0,0 +1,4 @@
lda {z2}
sta {z1}
lda {z2}+1
sta {z1}+1

View File

@ -0,0 +1,2 @@
ldy #1
lda ({z1}),y

View File

@ -0,0 +1,2 @@
ldy #0
lda ({z1}),y

View File

@ -37,6 +37,11 @@ public class TestPrograms {
// compileAndCompare("pointer-cast-3");
//}
@Test
public void testSemiStruct2() throws IOException, URISyntaxException {
compileAndCompare("semi-struct-2");
}
@Test
public void testReserveZpGlobal() throws IOException, URISyntaxException {
compileAndCompare("reserve-zp-global");

View File

@ -0,0 +1,186 @@
// Implementing a semi-struct without the struct keyword by using pointer math and inline functions
//
// struct fileentry {
// BYTE *bufDisk; // file position in disk buffer.
// BYTE *bufEdit; // file edits
// WORD tsLen; // num of sectors
// TS *tsOrder;
// BYTE tLastLink;
// BYTE sLastLink;
// BYTE bFlag;
// BYTE bError;
// WORD uCross; // num of crosslinked sectors
// BYTE bAddrLo; // start address
// BYTE bAddrHi;
// BYTE tHi; // highest track
// BYTE tLo; // lowest track
// };
// typedef struct fileentry ENTRY;
// ENTRY files[MAX_FILES];
import "multiply"
import "print"
import "keyboard"
// The size of a file ENTRY
const byte ENTRY_SIZE = 18;
// The maximal number of files
const byte MAX_FILES = 144;
// All files
byte[(word)MAX_FILES*ENTRY_SIZE] files;
// Get pointer to a numbered file entry in the files-table
inline byte* fileEntry(byte idx) {
return files+mul8u(idx, ENTRY_SIZE);
}
// Get file position in disk buffer.
inline byte** entryBufDisk(byte* entry) {
return (byte**)(entry+0);
}
// Get file edits
inline byte** entryBufEdit(byte* entry) {
return (byte**)(entry+2);
}
// Get number of sectors
inline word* entryTsLen(byte* entry) {
return (word*)(entry+4);
}
inline word** entryTsOrder(byte* entry) {
return (word**)(entry+6);
}
inline byte* entryTLastLink(byte* entry) {
return (entry+8);
}
inline byte* entrySLastLink(byte* entry) {
return (entry+9);
}
inline byte* entryBFlag(byte* entry) {
return (entry+10);
}
inline byte* entryBError(byte* entry) {
return (entry+11);
}
// Get num of crosslinked sectors
inline word* entryUCross(byte* entry) {
return (word*)(entry+12);
}
// Get start address low byte
inline byte* entryBAddrLo(byte* entry) {
return (entry+14);
}
// Get start address high byte
inline byte* entryBAddrHi(byte* entry) {
return (entry+15);
}
// Get highest track
inline byte* entryTHi(byte* entry) {
return (entry+16);
}
// Get lowest track
inline byte* entryTLo(byte* entry) {
return (entry+17);
}
// Initialize 2 file entries and print them
void main() {
keyboard_init();
byte* entry1 = fileEntry(1);
byte* entry2 = fileEntry(2);
initEntry(entry1,$00);
initEntry(entry2,$80);
print_cls();
print_str("** entry 1 **");
print_ln();
print_ln();
printEntry(entry1);
print_ln();
print_str("- press space -");
while(keyboard_key_pressed(KEY_SPACE)==0) {}
print_cls();
print_str("** entry 2 **");
print_ln();
print_ln();
printEntry(entry2);
print_ln();
print_str("- press space -");
while(keyboard_key_pressed(KEY_SPACE)==0) {}
print_cls();
}
// Set all values in the passed struct
// Sets the values to n, n+1, n... to help test that everything works as intended
void initEntry(byte* entry, byte n) {
*entryBufDisk(entry) = n+1;
*entryBufEdit(entry) = n+2;
*entryTsLen(entry) = n+3;
*entryTsOrder(entry) = n+4;
*entryTLastLink(entry) = n+5;
*entrySLastLink(entry) = n+6;
*entryBFlag(entry) = n+7;
*entryBError(entry) = n+8;
*entryUCross(entry) = n+9;
*entryBAddrLo(entry) = n+10;
*entryBAddrHi(entry) = n+11;
*entryTHi(entry) = n+12;
*entryTLo(entry) = n+13;
}
// Print the contents of a file entry
void printEntry(byte* entry) {
print_str("bufdisk ");
print_word((word)*entryBufDisk(entry));
print_ln();
print_str("bufedit ");
print_word((word)*entryBufEdit(entry));
print_ln();
print_str("tslen ");
print_word(*entryTsLen(entry));
print_ln();
print_str("tsorder ");
print_word((word)*entryTsOrder(entry));
print_ln();
print_str("tlastlink ");
print_byte(*entryTLastLink(entry));
print_ln();
print_str("slastlink ");
print_byte(*entrySLastLink(entry));
print_ln();
print_str("bflag ");
print_byte(*entryBFlag(entry));
print_ln();
print_str("berror ");
print_byte(*entryBError(entry));
print_ln();
print_str("ucross ");
print_word(*entryUCross(entry));
print_ln();
print_str("baddrlo ");
print_byte(*entryBAddrLo(entry));
print_ln();
print_str("baddrhi ");
print_byte(*entryBAddrHi(entry));
print_ln();
print_str("thi ");
print_byte(*entryTHi(entry));
print_ln();
print_str("tlo ");
print_byte(*entryTLo(entry));
print_ln();
}

View File

@ -0,0 +1,961 @@
// Implementing a semi-struct without the struct keyword by using pointer math and inline functions
//
// struct fileentry {
// BYTE *bufDisk; // file position in disk buffer.
// BYTE *bufEdit; // file edits
// WORD tsLen; // num of sectors
// TS *tsOrder;
// BYTE tLastLink;
// BYTE sLastLink;
// BYTE bFlag;
// BYTE bError;
// WORD uCross; // num of crosslinked sectors
// BYTE bAddrLo; // start address
// BYTE bAddrHi;
// BYTE tHi; // highest track
// BYTE tLo; // lowest track
// };
// typedef struct fileentry ENTRY;
// ENTRY files[MAX_FILES];
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
// CIA#1 Port A: keyboard matrix columns and joystick #2
.label CIA1_PORT_A = $dc00
// CIA#1 Port B: keyboard matrix rows and joystick #1.
.label CIA1_PORT_B = $dc01
// CIA #1 Port A data direction register.
.label CIA1_PORT_A_DDR = $dc02
// CIA #1 Port B data direction register.
.label CIA1_PORT_B_DDR = $dc03
.const KEY_SPACE = $3c
// The size of a file ENTRY
.const ENTRY_SIZE = $12
// The maximal number of files
.const MAX_FILES = $90
.label print_char_cursor = 6
.label print_line_cursor = $b
.label print_line_cursor_32 = 2
.label print_line_cursor_63 = 2
.label print_line_cursor_159 = 2
.label print_line_cursor_160 = 2
.label print_line_cursor_161 = 2
.label print_line_cursor_162 = 2
.label print_line_cursor_163 = 2
.label print_line_cursor_164 = 2
.label print_line_cursor_165 = 2
.label print_line_cursor_166 = 2
.label print_line_cursor_167 = 2
.label print_line_cursor_168 = 2
.label print_line_cursor_169 = 2
.label print_line_cursor_170 = 2
.label print_line_cursor_171 = 2
.label print_line_cursor_172 = 2
.label print_line_cursor_173 = 2
.label print_line_cursor_174 = 2
.label print_line_cursor_175 = 2
.label print_line_cursor_177 = 2
// Initialize 2 file entries and print them
main: {
.const fileEntry1_idx = 1
.const fileEntry2_idx = 2
.label fileEntry1__0 = 4
.label entry1 = 4
.label fileEntry2__0 = 9
.label entry2 = 9
jsr keyboard_init
ldx #fileEntry1_idx
jsr mul8u
lda mul8u.return
sta fileEntry1__0
lda mul8u.return+1
sta fileEntry1__0+1
clc
lda entry1
adc #<files
sta entry1
lda entry1+1
adc #>files
sta entry1+1
ldx #fileEntry2_idx
jsr mul8u
clc
lda entry2
adc #<files
sta entry2
lda entry2+1
adc #>files
sta entry2+1
lda entry1
sta initEntry.entry
lda entry1+1
sta initEntry.entry+1
lda #0
sta initEntry.n
jsr initEntry
lda entry2
sta initEntry.entry
lda entry2+1
sta initEntry.entry+1
lda #$80
sta initEntry.n
jsr initEntry
jsr print_cls
lda #<$400
sta print_char_cursor
lda #>$400
sta print_char_cursor+1
lda #<str
sta print_str.str
lda #>str
sta print_str.str+1
jsr print_str
lda #<$400
sta print_line_cursor_63
lda #>$400
sta print_line_cursor_63+1
jsr print_ln
lda print_line_cursor
sta print_line_cursor_159
lda print_line_cursor+1
sta print_line_cursor_159+1
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
jsr print_ln
jsr printEntry
lda print_line_cursor
sta print_line_cursor_160
lda print_line_cursor+1
sta print_line_cursor_160+1
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
jsr print_ln
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
lda #<str1
sta print_str.str
lda #>str1
sta print_str.str+1
jsr print_str
b1:
jsr keyboard_key_pressed
cmp #0
beq b1
jsr print_cls
lda #<$400
sta print_char_cursor
lda #>$400
sta print_char_cursor+1
lda #<str2
sta print_str.str
lda #>str2
sta print_str.str+1
jsr print_str
lda #<$400
sta print_line_cursor_63
lda #>$400
sta print_line_cursor_63+1
jsr print_ln
lda print_line_cursor
sta print_line_cursor_161
lda print_line_cursor+1
sta print_line_cursor_161+1
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
jsr print_ln
lda entry2
sta printEntry.entry
lda entry2+1
sta printEntry.entry+1
jsr printEntry
lda print_line_cursor
sta print_line_cursor_162
lda print_line_cursor+1
sta print_line_cursor_162+1
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
jsr print_ln
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
lda #<str1
sta print_str.str
lda #>str1
sta print_str.str+1
jsr print_str
b3:
jsr keyboard_key_pressed
cmp #0
beq b3
jsr print_cls
rts
str: .text "** entry 1 **@"
str1: .text "- press space -@"
str2: .text "** entry 2 **@"
}
// Clear the screen. Also resets current line/char cursor.
print_cls: {
.label sc = 2
lda #<$400
sta sc
lda #>$400
sta sc+1
b1:
lda #' '
ldy #0
sta (sc),y
inc sc
bne !+
inc sc+1
!:
lda sc+1
cmp #>$400+$3e8
bne b1
lda sc
cmp #<$400+$3e8
bne b1
rts
}
// Determines whether a specific key is currently pressed by accessing the matrix directly
// The key is a keyboard code defined from the keyboard matrix by %00rrrccc, where rrr is the row ID (0-7) and ccc is the column ID (0-7)
// All keys exist as as KEY_XXX constants.
// Returns zero if the key is not pressed and a non-zero value if the key is currently pressed
keyboard_key_pressed: {
.const colidx = KEY_SPACE&7
.label rowidx = KEY_SPACE>>3
jsr keyboard_matrix_read
and keyboard_matrix_col_bitmask+colidx
rts
}
// Read a single row of the keyboard matrix
// The row ID (0-7) of the keyboard matrix row to read. See the C64 key matrix for row IDs.
// Returns the keys pressed on the row as bits according to the C64 key matrix.
// Notice: If the C64 normal interrupt is still running it will occasionally interrupt right between the read & write
// leading to erroneous readings. You must disable kill the normal interrupt or sei/cli around calls to the keyboard matrix reader.
keyboard_matrix_read: {
lda keyboard_matrix_row_bitmask+keyboard_key_pressed.rowidx
sta CIA1_PORT_A
lda CIA1_PORT_B
eor #$ff
rts
}
// Print a zero-terminated string
// print_str(byte* zeropage(2) str)
print_str: {
.label str = 2
b1:
ldy #0
lda (str),y
cmp #'@'
bne b2
rts
b2:
ldy #0
lda (str),y
sta (print_char_cursor),y
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
inc str
bne !+
inc str+1
!:
jmp b1
}
// Print a newline
print_ln: {
b1:
lda #$28
clc
adc print_line_cursor_32
sta print_line_cursor
lda #0
adc print_line_cursor_32+1
sta print_line_cursor+1
cmp print_char_cursor+1
bcc b2
bne !+
lda print_line_cursor
cmp print_char_cursor
bcc b2
!:
rts
b2:
lda print_line_cursor
sta print_line_cursor_177
lda print_line_cursor+1
sta print_line_cursor_177+1
jmp b1
}
// Print the contents of a file entry
// printEntry(byte* zeropage(4) entry)
printEntry: {
.label entry = 4
.label entryBufDisk1__0 = 4
.label entryBufDisk1_return = 2
.label entryBufEdit1__0 = 2
.label entryBufEdit1_return = 2
.label entryTsLen1__0 = 2
.label entryTsLen1_return = 2
.label entryTsOrder1__0 = 2
.label entryTsOrder1_return = 2
.label entryTLastLink1_return = 2
.label entrySLastLink1_return = 2
.label entryBFlag1_return = 2
.label entryBError1_return = 2
.label entryUCross1__0 = 2
.label entryUCross1_return = 2
.label entryBAddrLo1_return = 2
.label entryBAddrHi1_return = 2
.label entryTHi1_return = 2
.label entryTLo1_return = 4
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
lda #<str
sta print_str.str
lda #>str
sta print_str.str+1
jsr print_str
lda entryBufDisk1__0
sta entryBufDisk1_return
lda entryBufDisk1__0+1
sta entryBufDisk1_return+1
ldy #0
lda (print_word.w),y
tax
iny
lda (print_word.w),y
sta print_word.w+1
stx print_word.w
jsr print_word
lda print_line_cursor
sta print_line_cursor_163
lda print_line_cursor+1
sta print_line_cursor_163+1
jsr print_ln
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
lda #<str1
sta print_str.str
lda #>str1
sta print_str.str+1
jsr print_str
lda entryBufDisk1__0
clc
adc #2
sta entryBufEdit1__0
lda entryBufDisk1__0+1
adc #0
sta entryBufEdit1__0+1
ldy #0
lda (print_word.w),y
tax
iny
lda (print_word.w),y
sta print_word.w+1
stx print_word.w
jsr print_word
lda print_line_cursor
sta print_line_cursor_164
lda print_line_cursor+1
sta print_line_cursor_164+1
jsr print_ln
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
lda #<str2
sta print_str.str
lda #>str2
sta print_str.str+1
jsr print_str
lda #4
clc
adc entryBufDisk1__0
sta entryTsLen1__0
lda #0
adc entryBufDisk1__0+1
sta entryTsLen1__0+1
ldy #0
lda (print_word.w),y
tax
iny
lda (print_word.w),y
sta print_word.w+1
stx print_word.w
jsr print_word
lda print_line_cursor
sta print_line_cursor_165
lda print_line_cursor+1
sta print_line_cursor_165+1
jsr print_ln
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
lda #<str3
sta print_str.str
lda #>str3
sta print_str.str+1
jsr print_str
lda #6
clc
adc entryBufDisk1__0
sta entryTsOrder1__0
lda #0
adc entryBufDisk1__0+1
sta entryTsOrder1__0+1
ldy #0
lda (print_word.w),y
tax
iny
lda (print_word.w),y
sta print_word.w+1
stx print_word.w
jsr print_word
lda print_line_cursor
sta print_line_cursor_166
lda print_line_cursor+1
sta print_line_cursor_166+1
jsr print_ln
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
lda #<str4
sta print_str.str
lda #>str4
sta print_str.str+1
jsr print_str
lda #8
clc
adc entryBufDisk1__0
sta entryTLastLink1_return
lda #0
adc entryBufDisk1__0+1
sta entryTLastLink1_return+1
ldy #0
lda (entryTLastLink1_return),y
tax
jsr print_byte
lda print_line_cursor
sta print_line_cursor_167
lda print_line_cursor+1
sta print_line_cursor_167+1
jsr print_ln
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
lda #<str5
sta print_str.str
lda #>str5
sta print_str.str+1
jsr print_str
lda #9
clc
adc entryBufDisk1__0
sta entrySLastLink1_return
lda #0
adc entryBufDisk1__0+1
sta entrySLastLink1_return+1
ldy #0
lda (entrySLastLink1_return),y
tax
jsr print_byte
lda print_line_cursor
sta print_line_cursor_168
lda print_line_cursor+1
sta print_line_cursor_168+1
jsr print_ln
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
lda #<str6
sta print_str.str
lda #>str6
sta print_str.str+1
jsr print_str
lda #$a
clc
adc entryBufDisk1__0
sta entryBFlag1_return
lda #0
adc entryBufDisk1__0+1
sta entryBFlag1_return+1
ldy #0
lda (entryBFlag1_return),y
tax
jsr print_byte
lda print_line_cursor
sta print_line_cursor_169
lda print_line_cursor+1
sta print_line_cursor_169+1
jsr print_ln
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
lda #<str7
sta print_str.str
lda #>str7
sta print_str.str+1
jsr print_str
lda #$b
clc
adc entryBufDisk1__0
sta entryBError1_return
lda #0
adc entryBufDisk1__0+1
sta entryBError1_return+1
ldy #0
lda (entryBError1_return),y
tax
jsr print_byte
lda print_line_cursor
sta print_line_cursor_170
lda print_line_cursor+1
sta print_line_cursor_170+1
jsr print_ln
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
lda #<str8
sta print_str.str
lda #>str8
sta print_str.str+1
jsr print_str
lda #$c
clc
adc entryBufDisk1__0
sta entryUCross1__0
lda #0
adc entryBufDisk1__0+1
sta entryUCross1__0+1
ldy #0
lda (print_word.w),y
tax
iny
lda (print_word.w),y
sta print_word.w+1
stx print_word.w
jsr print_word
lda print_line_cursor
sta print_line_cursor_171
lda print_line_cursor+1
sta print_line_cursor_171+1
jsr print_ln
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
lda #<str9
sta print_str.str
lda #>str9
sta print_str.str+1
jsr print_str
lda #$e
clc
adc entryBufDisk1__0
sta entryBAddrLo1_return
lda #0
adc entryBufDisk1__0+1
sta entryBAddrLo1_return+1
ldy #0
lda (entryBAddrLo1_return),y
tax
jsr print_byte
lda print_line_cursor
sta print_line_cursor_172
lda print_line_cursor+1
sta print_line_cursor_172+1
jsr print_ln
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
lda #<str10
sta print_str.str
lda #>str10
sta print_str.str+1
jsr print_str
lda #$f
clc
adc entryBufDisk1__0
sta entryBAddrHi1_return
lda #0
adc entryBufDisk1__0+1
sta entryBAddrHi1_return+1
ldy #0
lda (entryBAddrHi1_return),y
tax
jsr print_byte
lda print_line_cursor
sta print_line_cursor_173
lda print_line_cursor+1
sta print_line_cursor_173+1
jsr print_ln
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
lda #<str11
sta print_str.str
lda #>str11
sta print_str.str+1
jsr print_str
lda #$10
clc
adc entryBufDisk1__0
sta entryTHi1_return
lda #0
adc entryBufDisk1__0+1
sta entryTHi1_return+1
ldy #0
lda (entryTHi1_return),y
tax
jsr print_byte
lda print_line_cursor
sta print_line_cursor_174
lda print_line_cursor+1
sta print_line_cursor_174+1
jsr print_ln
lda print_line_cursor
sta print_char_cursor
lda print_line_cursor+1
sta print_char_cursor+1
lda #<str12
sta print_str.str
lda #>str12
sta print_str.str+1
jsr print_str
lda #$11
clc
adc entryTLo1_return
sta entryTLo1_return
bcc !+
inc entryTLo1_return+1
!:
ldy #0
lda (entryTLo1_return),y
tax
jsr print_byte
lda print_line_cursor
sta print_line_cursor_175
lda print_line_cursor+1
sta print_line_cursor_175+1
jsr print_ln
rts
str: .text "bufdisk @"
str1: .text "bufedit @"
str2: .text "tslen @"
str3: .text "tsorder @"
str4: .text "tlastlink @"
str5: .text "slastlink @"
str6: .text "bflag @"
str7: .text "berror @"
str8: .text "ucross @"
str9: .text "baddrlo @"
str10: .text "baddrhi @"
str11: .text "thi @"
str12: .text "tlo @"
}
// Print a byte as HEX
// print_byte(byte register(X) b)
print_byte: {
txa
lsr
lsr
lsr
lsr
tay
lda print_hextab,y
jsr print_char
lda #$f
axs #0
lda print_hextab,x
jsr print_char
rts
}
// Print a single char
// print_char(byte register(A) ch)
print_char: {
ldy #0
sta (print_char_cursor),y
inc print_char_cursor
bne !+
inc print_char_cursor+1
!:
rts
}
// Print a word as HEX
// print_word(word zeropage(2) w)
print_word: {
.label w = 2
lda w+1
tax
jsr print_byte
lda w
tax
jsr print_byte
rts
}
// Set all values in the passed struct
// Sets the values to n, n+1, n... to help test that everything works as intended
// initEntry(byte* zeropage(2) entry, byte zeropage(8) n)
initEntry: {
.label entry = 2
.label entryBufDisk1__0 = 2
.label entryBufDisk1_return = 6
.label entryBufEdit1__0 = 6
.label entryBufEdit1_return = 6
.label entryTsLen1__0 = 6
.label entryTsLen1_return = 6
.label entryTsOrder1__0 = 6
.label entryTsOrder1_return = 6
.label entryTLastLink1_return = 6
.label entrySLastLink1_return = 6
.label entryBFlag1_return = 6
.label entryBError1_return = 6
.label entryUCross1__0 = 6
.label entryUCross1_return = 6
.label entryBAddrLo1_return = 6
.label entryBAddrHi1_return = 6
.label entryTHi1_return = 6
.label entryTLo1_return = 2
.label n = 8
lda entryBufDisk1__0
sta entryBufDisk1_return
lda entryBufDisk1__0+1
sta entryBufDisk1_return+1
lda n
clc
adc #1
ldy #0
sta (entryBufDisk1_return),y
tya
iny
sta (entryBufDisk1_return),y
lda entryBufDisk1__0
clc
adc #2
sta entryBufEdit1__0
lda entryBufDisk1__0+1
adc #0
sta entryBufEdit1__0+1
lda n
clc
adc #2
ldy #0
sta (entryBufEdit1_return),y
tya
iny
sta (entryBufEdit1_return),y
lda #4
clc
adc entryBufDisk1__0
sta entryTsLen1__0
lda #0
adc entryBufDisk1__0+1
sta entryTsLen1__0+1
lda #3
clc
adc n
ldy #0
sta (entryTsLen1_return),y
tya
iny
sta (entryTsLen1_return),y
lda #6
clc
adc entryBufDisk1__0
sta entryTsOrder1__0
lda #0
adc entryBufDisk1__0+1
sta entryTsOrder1__0+1
lda #4
clc
adc n
ldy #0
sta (entryTsOrder1_return),y
tya
iny
sta (entryTsOrder1_return),y
lda #8
clc
adc entryBufDisk1__0
sta entryTLastLink1_return
lda #0
adc entryBufDisk1__0+1
sta entryTLastLink1_return+1
lda #5
clc
adc n
ldy #0
sta (entryTLastLink1_return),y
lda #9
clc
adc entryBufDisk1__0
sta entrySLastLink1_return
tya
adc entryBufDisk1__0+1
sta entrySLastLink1_return+1
lda #6
clc
adc n
sta (entrySLastLink1_return),y
lda #$a
clc
adc entryBufDisk1__0
sta entryBFlag1_return
tya
adc entryBufDisk1__0+1
sta entryBFlag1_return+1
lda #7
clc
adc n
sta (entryBFlag1_return),y
lda #$b
clc
adc entryBufDisk1__0
sta entryBError1_return
tya
adc entryBufDisk1__0+1
sta entryBError1_return+1
lda #8
clc
adc n
sta (entryBError1_return),y
lda #$c
clc
adc entryBufDisk1__0
sta entryUCross1__0
tya
adc entryBufDisk1__0+1
sta entryUCross1__0+1
lda #9
clc
adc n
sta (entryUCross1_return),y
tya
iny
sta (entryUCross1_return),y
lda #$e
clc
adc entryBufDisk1__0
sta entryBAddrLo1_return
lda #0
adc entryBufDisk1__0+1
sta entryBAddrLo1_return+1
lda #$a
clc
adc n
ldy #0
sta (entryBAddrLo1_return),y
lda #$f
clc
adc entryBufDisk1__0
sta entryBAddrHi1_return
tya
adc entryBufDisk1__0+1
sta entryBAddrHi1_return+1
lda #$b
clc
adc n
sta (entryBAddrHi1_return),y
lda #$10
clc
adc entryBufDisk1__0
sta entryTHi1_return
tya
adc entryBufDisk1__0+1
sta entryTHi1_return+1
lda #$c
clc
adc n
sta (entryTHi1_return),y
lda #$11
clc
adc entryTLo1_return
sta entryTLo1_return
bcc !+
inc entryTLo1_return+1
!:
lda #$d
clc
adc n
ldy #0
sta (entryTLo1_return),y
rts
}
// Perform binary multiplication of two unsigned 8-bit bytes into a 16-bit unsigned word
// mul8u(byte register(X) a)
mul8u: {
.label mb = 2
.label res = 9
.label return = 9
lda #ENTRY_SIZE
sta mb
lda #0
sta mb+1
sta res
sta res+1
b1:
cpx #0
bne b2
rts
b2:
txa
and #1
cmp #0
beq b3
lda res
clc
adc mb
sta res
lda res+1
adc mb+1
sta res+1
b3:
txa
lsr
tax
asl mb
rol mb+1
jmp b1
}
// Initialize keyboard reading by setting CIA#$ Data Direction Registers
keyboard_init: {
// Keyboard Matrix Columns Write Mode
lda #$ff
sta CIA1_PORT_A_DDR
// Keyboard Matrix Columns Read Mode
lda #0
sta CIA1_PORT_B_DDR
rts
}
print_hextab: .text "0123456789abcdef"
// Keyboard row bitmask as expected by CIA#1 Port A when reading a specific keyboard matrix row (rows are numbered 0-7)
keyboard_matrix_row_bitmask: .byte $fe, $fd, $fb, $f7, $ef, $df, $bf, $7f
// Keyboard matrix column bitmasks for a specific keybooard matrix column when reading the keyboard. (columns are numbered 0-7)
keyboard_matrix_col_bitmask: .byte 1, 2, 4, 8, $10, $20, $40, $80
// All files
files: .fill MAX_FILES*ENTRY_SIZE, 0

View File

@ -0,0 +1,559 @@
@begin: scope:[] from
[0] phi()
to:@1
@1: scope:[] from @begin
[1] phi()
[2] call main
to:@end
@end: scope:[] from @1
[3] phi()
main: scope:[main] from @1
[4] phi()
[5] call keyboard_init
to:main::fileEntry1
main::fileEntry1: scope:[main] from main
[6] phi()
[7] call mul8u
[8] (word) mul8u::return#2 ← (word) mul8u::res#2
to:main::@6
main::@6: scope:[main] from main::fileEntry1
[9] (word) main::fileEntry1_$0#0 ← (word) mul8u::return#2
[10] (byte*) main::entry1#0 ← (const byte[((word))MAX_FILES#0*ENTRY_SIZE#0]) files#0 + (word) main::fileEntry1_$0#0
to:main::fileEntry2
main::fileEntry2: scope:[main] from main::@6
[11] phi()
[12] call mul8u
[13] (word) mul8u::return#3 ← (word) mul8u::res#2
to:main::@7
main::@7: scope:[main] from main::fileEntry2
[14] (word) main::fileEntry2_$0#0 ← (word) mul8u::return#3
[15] (byte*) main::entry2#0 ← (const byte[((word))MAX_FILES#0*ENTRY_SIZE#0]) files#0 + (word) main::fileEntry2_$0#0
to:main::@5
main::@5: scope:[main] from main::@7
[16] (byte*) initEntry::entry#0 ← (byte*) main::entry1#0
[17] call initEntry
to:main::@8
main::@8: scope:[main] from main::@5
[18] (byte*) initEntry::entry#1 ← (byte*) main::entry2#0
[19] call initEntry
to:main::@9
main::@9: scope:[main] from main::@8
[20] phi()
[21] call print_cls
to:main::@10
main::@10: scope:[main] from main::@9
[22] phi()
[23] call print_str
to:main::@11
main::@11: scope:[main] from main::@10
[24] phi()
[25] call print_ln
to:main::@12
main::@12: scope:[main] from main::@11
[26] (byte*~) print_line_cursor#159 ← (byte*) print_line_cursor#1
[27] (byte*~) print_char_cursor#230 ← (byte*) print_line_cursor#1
[28] call print_ln
to:main::@13
main::@13: scope:[main] from main::@12
[29] (byte*) printEntry::entry#0 ← (byte*) main::entry1#0
[30] call printEntry
to:main::@14
main::@14: scope:[main] from main::@13
[31] (byte*~) print_line_cursor#160 ← (byte*) print_line_cursor#1
[32] (byte*~) print_char_cursor#231 ← (byte*) print_line_cursor#1
[33] call print_ln
to:main::@15
main::@15: scope:[main] from main::@14
[34] (byte*~) print_char_cursor#212 ← (byte*) print_line_cursor#1
[35] call print_str
to:main::@1
main::@1: scope:[main] from main::@15 main::@16
[36] phi()
[37] call keyboard_key_pressed
[38] (byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#0
to:main::@16
main::@16: scope:[main] from main::@1
[39] (byte~) main::$20 ← (byte) keyboard_key_pressed::return#2
[40] if((byte~) main::$20==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1
to:main::@2
main::@2: scope:[main] from main::@16
[41] phi()
[42] call print_cls
to:main::@17
main::@17: scope:[main] from main::@2
[43] phi()
[44] call print_str
to:main::@18
main::@18: scope:[main] from main::@17
[45] phi()
[46] call print_ln
to:main::@19
main::@19: scope:[main] from main::@18
[47] (byte*~) print_line_cursor#161 ← (byte*) print_line_cursor#1
[48] (byte*~) print_char_cursor#233 ← (byte*) print_line_cursor#1
[49] call print_ln
to:main::@20
main::@20: scope:[main] from main::@19
[50] (byte*) printEntry::entry#1 ← (byte*) main::entry2#0
[51] call printEntry
to:main::@21
main::@21: scope:[main] from main::@20
[52] (byte*~) print_line_cursor#162 ← (byte*) print_line_cursor#1
[53] (byte*~) print_char_cursor#234 ← (byte*) print_line_cursor#1
[54] call print_ln
to:main::@22
main::@22: scope:[main] from main::@21
[55] (byte*~) print_char_cursor#213 ← (byte*) print_line_cursor#1
[56] call print_str
to:main::@3
main::@3: scope:[main] from main::@22 main::@23
[57] phi()
[58] call keyboard_key_pressed
[59] (byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#0
to:main::@23
main::@23: scope:[main] from main::@3
[60] (byte~) main::$22 ← (byte) keyboard_key_pressed::return#3
[61] if((byte~) main::$22==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3
to:main::@4
main::@4: scope:[main] from main::@23
[62] phi()
[63] call print_cls
to:main::@return
main::@return: scope:[main] from main::@4
[64] return
to:@return
print_cls: scope:[print_cls] from main::@2 main::@4 main::@9
[65] phi()
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
[66] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) $400 print_cls::@1/(byte*) print_cls::sc#1 )
[67] *((byte*) print_cls::sc#2) ← (byte) ' '
[68] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[69] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
[70] return
to:@return
keyboard_key_pressed: scope:[keyboard_key_pressed] from main::@1 main::@3
[71] phi()
[72] call keyboard_matrix_read
[73] (byte) keyboard_matrix_read::return#2 ← (byte) keyboard_matrix_read::return#0
to:keyboard_key_pressed::@1
keyboard_key_pressed::@1: scope:[keyboard_key_pressed] from keyboard_key_pressed
[74] (byte~) keyboard_key_pressed::$2 ← (byte) keyboard_matrix_read::return#2
[75] (byte) keyboard_key_pressed::return#0 ← (byte~) keyboard_key_pressed::$2 & *((const byte[8]) keyboard_matrix_col_bitmask#0+(const byte) keyboard_key_pressed::colidx#0)
to:keyboard_key_pressed::@return
keyboard_key_pressed::@return: scope:[keyboard_key_pressed] from keyboard_key_pressed::@1
[76] return
to:@return
keyboard_matrix_read: scope:[keyboard_matrix_read] from keyboard_key_pressed
[77] *((const byte*) CIA1_PORT_A#0) ← *((const byte[8]) keyboard_matrix_row_bitmask#0+(const byte) keyboard_key_pressed::rowidx#0)
[78] (byte) keyboard_matrix_read::return#0 ← ~ *((const byte*) CIA1_PORT_B#0)
to:keyboard_matrix_read::@return
keyboard_matrix_read::@return: scope:[keyboard_matrix_read] from keyboard_matrix_read
[79] return
to:@return
print_str: scope:[print_str] from main::@10 main::@15 main::@17 main::@22 printEntry printEntry::@15 printEntry::@17 printEntry::@19 printEntry::@21 printEntry::@23 printEntry::@25 printEntry::@27 printEntry::@29 printEntry::@31 printEntry::@33 printEntry::@35 printEntry::@37
[80] (byte*) print_char_cursor#164 ← phi( main::@10/((byte*))(word/signed word/dword/signed dword) $400 main::@15/(byte*~) print_char_cursor#212 main::@17/((byte*))(word/signed word/dword/signed dword) $400 main::@22/(byte*~) print_char_cursor#213 printEntry/(byte*~) print_char_cursor#214 printEntry::@15/(byte*~) print_char_cursor#215 printEntry::@17/(byte*~) print_char_cursor#216 printEntry::@19/(byte*~) print_char_cursor#217 printEntry::@21/(byte*~) print_char_cursor#218 printEntry::@23/(byte*~) print_char_cursor#219 printEntry::@25/(byte*~) print_char_cursor#220 printEntry::@27/(byte*~) print_char_cursor#221 printEntry::@29/(byte*~) print_char_cursor#222 printEntry::@31/(byte*~) print_char_cursor#223 printEntry::@33/(byte*~) print_char_cursor#224 printEntry::@35/(byte*~) print_char_cursor#225 printEntry::@37/(byte*~) print_char_cursor#226 )
[80] (byte*) print_str::str#20 ← phi( main::@10/(const string) main::str main::@15/(const string) main::str1 main::@17/(const string) main::str2 main::@22/(const string) main::str1 printEntry/(const string) printEntry::str printEntry::@15/(const string) printEntry::str1 printEntry::@17/(const string) printEntry::str2 printEntry::@19/(const string) printEntry::str3 printEntry::@21/(const string) printEntry::str4 printEntry::@23/(const string) printEntry::str5 printEntry::@25/(const string) printEntry::str6 printEntry::@27/(const string) printEntry::str7 printEntry::@29/(const string) printEntry::str8 printEntry::@31/(const string) printEntry::str9 printEntry::@33/(const string) printEntry::str10 printEntry::@35/(const string) printEntry::str11 printEntry::@37/(const string) printEntry::str12 )
to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2
[81] (byte*) print_char_cursor#142 ← phi( print_str/(byte*) print_char_cursor#164 print_str::@2/(byte*) print_char_cursor#1 )
[81] (byte*) print_str::str#18 ← phi( print_str/(byte*) print_str::str#20 print_str::@2/(byte*) print_str::str#0 )
[82] if(*((byte*) print_str::str#18)!=(byte) '@') goto print_str::@2
to:print_str::@return
print_str::@return: scope:[print_str] from print_str::@1
[83] return
to:@return
print_str::@2: scope:[print_str] from print_str::@1
[84] *((byte*) print_char_cursor#142) ← *((byte*) print_str::str#18)
[85] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#142
[86] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#18
to:print_str::@1
print_ln: scope:[print_ln] from main::@11 main::@12 main::@14 main::@18 main::@19 main::@21 printEntry::@14 printEntry::@16 printEntry::@18 printEntry::@20 printEntry::@22 printEntry::@24 printEntry::@26 printEntry::@28 printEntry::@30 printEntry::@32 printEntry::@34 printEntry::@36 printEntry::@38
[87] (byte*) print_char_cursor#143 ← phi( main::@11/(byte*) print_char_cursor#142 main::@12/(byte*~) print_char_cursor#230 main::@14/(byte*~) print_char_cursor#231 main::@18/(byte*) print_char_cursor#142 main::@19/(byte*~) print_char_cursor#233 main::@21/(byte*~) print_char_cursor#234 printEntry::@14/(byte*) print_char_cursor#11 printEntry::@16/(byte*) print_char_cursor#11 printEntry::@18/(byte*) print_char_cursor#11 printEntry::@20/(byte*) print_char_cursor#11 printEntry::@22/(byte*) print_char_cursor#11 printEntry::@24/(byte*) print_char_cursor#11 printEntry::@26/(byte*) print_char_cursor#11 printEntry::@28/(byte*) print_char_cursor#11 printEntry::@30/(byte*) print_char_cursor#11 printEntry::@32/(byte*) print_char_cursor#11 printEntry::@34/(byte*) print_char_cursor#11 printEntry::@36/(byte*) print_char_cursor#11 printEntry::@38/(byte*) print_char_cursor#11 )
[87] (byte*) print_line_cursor#63 ← phi( main::@11/((byte*))(word/signed word/dword/signed dword) $400 main::@12/(byte*~) print_line_cursor#159 main::@14/(byte*~) print_line_cursor#160 main::@18/((byte*))(word/signed word/dword/signed dword) $400 main::@19/(byte*~) print_line_cursor#161 main::@21/(byte*~) print_line_cursor#162 printEntry::@14/(byte*~) print_line_cursor#163 printEntry::@16/(byte*~) print_line_cursor#164 printEntry::@18/(byte*~) print_line_cursor#165 printEntry::@20/(byte*~) print_line_cursor#166 printEntry::@22/(byte*~) print_line_cursor#167 printEntry::@24/(byte*~) print_line_cursor#168 printEntry::@26/(byte*~) print_line_cursor#169 printEntry::@28/(byte*~) print_line_cursor#170 printEntry::@30/(byte*~) print_line_cursor#171 printEntry::@32/(byte*~) print_line_cursor#172 printEntry::@34/(byte*~) print_line_cursor#173 printEntry::@36/(byte*~) print_line_cursor#174 printEntry::@38/(byte*~) print_line_cursor#175 )
to:print_ln::@1
print_ln::@1: scope:[print_ln] from print_ln print_ln::@2
[88] (byte*) print_line_cursor#32 ← phi( print_ln/(byte*) print_line_cursor#63 print_ln::@2/(byte*~) print_line_cursor#177 )
[89] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#32 + (byte/signed byte/word/signed word/dword/signed dword) $28
[90] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#143) goto print_ln::@2
to:print_ln::@return
print_ln::@return: scope:[print_ln] from print_ln::@1
[91] return
to:@return
print_ln::@2: scope:[print_ln] from print_ln::@1
[92] (byte*~) print_line_cursor#177 ← (byte*) print_line_cursor#1
to:print_ln::@1
printEntry: scope:[printEntry] from main::@13 main::@20
[93] (byte*) printEntry::entryBufDisk1_$0#0 ← phi( main::@13/(byte*) printEntry::entry#0 main::@20/(byte*) printEntry::entry#1 )
[94] (byte*~) print_char_cursor#214 ← (byte*) print_line_cursor#1
[95] call print_str
to:printEntry::entryBufDisk1
printEntry::entryBufDisk1: scope:[printEntry] from printEntry
[96] (byte**) printEntry::entryBufDisk1_return#0 ← ((byte**)) (byte*) printEntry::entryBufDisk1_$0#0
to:printEntry::@1
printEntry::@1: scope:[printEntry] from printEntry::entryBufDisk1
[97] (word~) print_word::w#7 ← (word)*((byte**) printEntry::entryBufDisk1_return#0)
[98] call print_word
to:printEntry::@14
printEntry::@14: scope:[printEntry] from printEntry::@1
[99] (byte*~) print_line_cursor#163 ← (byte*) print_line_cursor#1
[100] call print_ln
to:printEntry::@15
printEntry::@15: scope:[printEntry] from printEntry::@14
[101] (byte*~) print_char_cursor#215 ← (byte*) print_line_cursor#1
[102] call print_str
to:printEntry::entryBufEdit1
printEntry::entryBufEdit1: scope:[printEntry] from printEntry::@15
[103] (byte*) printEntry::entryBufEdit1_$0#0 ← (byte*) printEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) 2
[104] (byte**) printEntry::entryBufEdit1_return#0 ← ((byte**)) (byte*) printEntry::entryBufEdit1_$0#0
to:printEntry::@2
printEntry::@2: scope:[printEntry] from printEntry::entryBufEdit1
[105] (word~) print_word::w#8 ← (word)*((byte**) printEntry::entryBufEdit1_return#0)
[106] call print_word
to:printEntry::@16
printEntry::@16: scope:[printEntry] from printEntry::@2
[107] (byte*~) print_line_cursor#164 ← (byte*) print_line_cursor#1
[108] call print_ln
to:printEntry::@17
printEntry::@17: scope:[printEntry] from printEntry::@16
[109] (byte*~) print_char_cursor#216 ← (byte*) print_line_cursor#1
[110] call print_str
to:printEntry::entryTsLen1
printEntry::entryTsLen1: scope:[printEntry] from printEntry::@17
[111] (byte*) printEntry::entryTsLen1_$0#0 ← (byte*) printEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) 4
[112] (word*) printEntry::entryTsLen1_return#0 ← ((word*)) (byte*) printEntry::entryTsLen1_$0#0
to:printEntry::@3
printEntry::@3: scope:[printEntry] from printEntry::entryTsLen1
[113] (word) print_word::w#2 ← *((word*) printEntry::entryTsLen1_return#0)
[114] call print_word
to:printEntry::@18
printEntry::@18: scope:[printEntry] from printEntry::@3
[115] (byte*~) print_line_cursor#165 ← (byte*) print_line_cursor#1
[116] call print_ln
to:printEntry::@19
printEntry::@19: scope:[printEntry] from printEntry::@18
[117] (byte*~) print_char_cursor#217 ← (byte*) print_line_cursor#1
[118] call print_str
to:printEntry::entryTsOrder1
printEntry::entryTsOrder1: scope:[printEntry] from printEntry::@19
[119] (byte*) printEntry::entryTsOrder1_$0#0 ← (byte*) printEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) 6
[120] (word**) printEntry::entryTsOrder1_return#0 ← ((word**)) (byte*) printEntry::entryTsOrder1_$0#0
to:printEntry::@4
printEntry::@4: scope:[printEntry] from printEntry::entryTsOrder1
[121] (word~) print_word::w#10 ← (word)*((word**) printEntry::entryTsOrder1_return#0)
[122] call print_word
to:printEntry::@20
printEntry::@20: scope:[printEntry] from printEntry::@4
[123] (byte*~) print_line_cursor#166 ← (byte*) print_line_cursor#1
[124] call print_ln
to:printEntry::@21
printEntry::@21: scope:[printEntry] from printEntry::@20
[125] (byte*~) print_char_cursor#218 ← (byte*) print_line_cursor#1
[126] call print_str
to:printEntry::entryTLastLink1
printEntry::entryTLastLink1: scope:[printEntry] from printEntry::@21
[127] (byte*) printEntry::entryTLastLink1_return#0 ← (byte*) printEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) 8
to:printEntry::@5
printEntry::@5: scope:[printEntry] from printEntry::entryTLastLink1
[128] (byte) print_byte::b#2 ← *((byte*) printEntry::entryTLastLink1_return#0)
[129] call print_byte
to:printEntry::@22
printEntry::@22: scope:[printEntry] from printEntry::@5
[130] (byte*~) print_line_cursor#167 ← (byte*) print_line_cursor#1
[131] call print_ln
to:printEntry::@23
printEntry::@23: scope:[printEntry] from printEntry::@22
[132] (byte*~) print_char_cursor#219 ← (byte*) print_line_cursor#1
[133] call print_str
to:printEntry::entrySLastLink1
printEntry::entrySLastLink1: scope:[printEntry] from printEntry::@23
[134] (byte*) printEntry::entrySLastLink1_return#0 ← (byte*) printEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) 9
to:printEntry::@6
printEntry::@6: scope:[printEntry] from printEntry::entrySLastLink1
[135] (byte) print_byte::b#3 ← *((byte*) printEntry::entrySLastLink1_return#0)
[136] call print_byte
to:printEntry::@24
printEntry::@24: scope:[printEntry] from printEntry::@6
[137] (byte*~) print_line_cursor#168 ← (byte*) print_line_cursor#1
[138] call print_ln
to:printEntry::@25
printEntry::@25: scope:[printEntry] from printEntry::@24
[139] (byte*~) print_char_cursor#220 ← (byte*) print_line_cursor#1
[140] call print_str
to:printEntry::entryBFlag1
printEntry::entryBFlag1: scope:[printEntry] from printEntry::@25
[141] (byte*) printEntry::entryBFlag1_return#0 ← (byte*) printEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) $a
to:printEntry::@7
printEntry::@7: scope:[printEntry] from printEntry::entryBFlag1
[142] (byte) print_byte::b#4 ← *((byte*) printEntry::entryBFlag1_return#0)
[143] call print_byte
to:printEntry::@26
printEntry::@26: scope:[printEntry] from printEntry::@7
[144] (byte*~) print_line_cursor#169 ← (byte*) print_line_cursor#1
[145] call print_ln
to:printEntry::@27
printEntry::@27: scope:[printEntry] from printEntry::@26
[146] (byte*~) print_char_cursor#221 ← (byte*) print_line_cursor#1
[147] call print_str
to:printEntry::entryBError1
printEntry::entryBError1: scope:[printEntry] from printEntry::@27
[148] (byte*) printEntry::entryBError1_return#0 ← (byte*) printEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) $b
to:printEntry::@8
printEntry::@8: scope:[printEntry] from printEntry::entryBError1
[149] (byte) print_byte::b#5 ← *((byte*) printEntry::entryBError1_return#0)
[150] call print_byte
to:printEntry::@28
printEntry::@28: scope:[printEntry] from printEntry::@8
[151] (byte*~) print_line_cursor#170 ← (byte*) print_line_cursor#1
[152] call print_ln
to:printEntry::@29
printEntry::@29: scope:[printEntry] from printEntry::@28
[153] (byte*~) print_char_cursor#222 ← (byte*) print_line_cursor#1
[154] call print_str
to:printEntry::entryUCross1
printEntry::entryUCross1: scope:[printEntry] from printEntry::@29
[155] (byte*) printEntry::entryUCross1_$0#0 ← (byte*) printEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) $c
[156] (word*) printEntry::entryUCross1_return#0 ← ((word*)) (byte*) printEntry::entryUCross1_$0#0
to:printEntry::@9
printEntry::@9: scope:[printEntry] from printEntry::entryUCross1
[157] (word) print_word::w#4 ← *((word*) printEntry::entryUCross1_return#0)
[158] call print_word
to:printEntry::@30
printEntry::@30: scope:[printEntry] from printEntry::@9
[159] (byte*~) print_line_cursor#171 ← (byte*) print_line_cursor#1
[160] call print_ln
to:printEntry::@31
printEntry::@31: scope:[printEntry] from printEntry::@30
[161] (byte*~) print_char_cursor#223 ← (byte*) print_line_cursor#1
[162] call print_str
to:printEntry::entryBAddrLo1
printEntry::entryBAddrLo1: scope:[printEntry] from printEntry::@31
[163] (byte*) printEntry::entryBAddrLo1_return#0 ← (byte*) printEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) $e
to:printEntry::@10
printEntry::@10: scope:[printEntry] from printEntry::entryBAddrLo1
[164] (byte) print_byte::b#6 ← *((byte*) printEntry::entryBAddrLo1_return#0)
[165] call print_byte
to:printEntry::@32
printEntry::@32: scope:[printEntry] from printEntry::@10
[166] (byte*~) print_line_cursor#172 ← (byte*) print_line_cursor#1
[167] call print_ln
to:printEntry::@33
printEntry::@33: scope:[printEntry] from printEntry::@32
[168] (byte*~) print_char_cursor#224 ← (byte*) print_line_cursor#1
[169] call print_str
to:printEntry::entryBAddrHi1
printEntry::entryBAddrHi1: scope:[printEntry] from printEntry::@33
[170] (byte*) printEntry::entryBAddrHi1_return#0 ← (byte*) printEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) $f
to:printEntry::@11
printEntry::@11: scope:[printEntry] from printEntry::entryBAddrHi1
[171] (byte) print_byte::b#7 ← *((byte*) printEntry::entryBAddrHi1_return#0)
[172] call print_byte
to:printEntry::@34
printEntry::@34: scope:[printEntry] from printEntry::@11
[173] (byte*~) print_line_cursor#173 ← (byte*) print_line_cursor#1
[174] call print_ln
to:printEntry::@35
printEntry::@35: scope:[printEntry] from printEntry::@34
[175] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1
[176] call print_str
to:printEntry::entryTHi1
printEntry::entryTHi1: scope:[printEntry] from printEntry::@35
[177] (byte*) printEntry::entryTHi1_return#0 ← (byte*) printEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) $10
to:printEntry::@12
printEntry::@12: scope:[printEntry] from printEntry::entryTHi1
[178] (byte) print_byte::b#8 ← *((byte*) printEntry::entryTHi1_return#0)
[179] call print_byte
to:printEntry::@36
printEntry::@36: scope:[printEntry] from printEntry::@12
[180] (byte*~) print_line_cursor#174 ← (byte*) print_line_cursor#1
[181] call print_ln
to:printEntry::@37
printEntry::@37: scope:[printEntry] from printEntry::@36
[182] (byte*~) print_char_cursor#226 ← (byte*) print_line_cursor#1
[183] call print_str
to:printEntry::entryTLo1
printEntry::entryTLo1: scope:[printEntry] from printEntry::@37
[184] (byte*) printEntry::entryTLo1_return#0 ← (byte*) printEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) $11
to:printEntry::@13
printEntry::@13: scope:[printEntry] from printEntry::entryTLo1
[185] (byte) print_byte::b#9 ← *((byte*) printEntry::entryTLo1_return#0)
[186] call print_byte
to:printEntry::@38
printEntry::@38: scope:[printEntry] from printEntry::@13
[187] (byte*~) print_line_cursor#175 ← (byte*) print_line_cursor#1
[188] call print_ln
to:printEntry::@return
printEntry::@return: scope:[printEntry] from printEntry::@38
[189] return
to:@return
print_byte: scope:[print_byte] from printEntry::@10 printEntry::@11 printEntry::@12 printEntry::@13 printEntry::@5 printEntry::@6 printEntry::@7 printEntry::@8 print_word print_word::@1
[190] (byte*) print_char_cursor#145 ← phi( printEntry::@10/(byte*) print_char_cursor#142 printEntry::@11/(byte*) print_char_cursor#142 printEntry::@12/(byte*) print_char_cursor#142 printEntry::@13/(byte*) print_char_cursor#142 printEntry::@5/(byte*) print_char_cursor#142 printEntry::@6/(byte*) print_char_cursor#142 printEntry::@7/(byte*) print_char_cursor#142 printEntry::@8/(byte*) print_char_cursor#142 print_word/(byte*) print_char_cursor#142 print_word::@1/(byte*) print_char_cursor#11 )
[190] (byte) print_byte::b#10 ← phi( printEntry::@10/(byte) print_byte::b#6 printEntry::@11/(byte) print_byte::b#7 printEntry::@12/(byte) print_byte::b#8 printEntry::@13/(byte) print_byte::b#9 printEntry::@5/(byte) print_byte::b#2 printEntry::@6/(byte) print_byte::b#3 printEntry::@7/(byte) print_byte::b#4 printEntry::@8/(byte) print_byte::b#5 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
[191] (byte~) print_byte::$0 ← (byte) print_byte::b#10 >> (byte/signed byte/word/signed word/dword/signed dword) 4
[192] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[193] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[194] (byte~) print_byte::$2 ← (byte) print_byte::b#10 & (byte/signed byte/word/signed word/dword/signed dword) $f
[195] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[196] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
[197] return
to:@return
print_char: scope:[print_char] from print_byte print_byte::@1
[198] (byte*) print_char_cursor#82 ← phi( print_byte/(byte*) print_char_cursor#145 print_byte::@1/(byte*) print_char_cursor#11 )
[198] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 )
[199] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#2
[200] (byte*) print_char_cursor#11 ← ++ (byte*) print_char_cursor#82
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[201] return
to:@return
print_word: scope:[print_word] from printEntry::@1 printEntry::@2 printEntry::@3 printEntry::@4 printEntry::@9
[202] (word) print_word::w#5 ← phi( printEntry::@1/(word~) print_word::w#7 printEntry::@2/(word~) print_word::w#8 printEntry::@3/(word) print_word::w#2 printEntry::@4/(word~) print_word::w#10 printEntry::@9/(word) print_word::w#4 )
[203] (byte) print_byte::b#0 ← > (word) print_word::w#5
[204] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
[205] (byte) print_byte::b#1 ← < (word) print_word::w#5
[206] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
[207] return
to:@return
initEntry: scope:[initEntry] from main::@5 main::@8
[208] (byte) initEntry::n#10 ← phi( main::@5/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@8/(byte/word/signed word/dword/signed dword) $80 )
[208] (byte*) initEntry::entryBufDisk1_$0#0 ← phi( main::@5/(byte*) initEntry::entry#0 main::@8/(byte*) initEntry::entry#1 )
to:initEntry::entryBufDisk1
initEntry::entryBufDisk1: scope:[initEntry] from initEntry
[209] (byte**) initEntry::entryBufDisk1_return#0 ← ((byte**)) (byte*) initEntry::entryBufDisk1_$0#0
to:initEntry::@1
initEntry::@1: scope:[initEntry] from initEntry::entryBufDisk1
[210] (byte/signed word/word/dword/signed dword~) initEntry::$1 ← (byte) initEntry::n#10 + (byte/signed byte/word/signed word/dword/signed dword) 1
[211] *((byte**) initEntry::entryBufDisk1_return#0) ← ((byte*)) (byte/signed word/word/dword/signed dword~) initEntry::$1
to:initEntry::entryBufEdit1
initEntry::entryBufEdit1: scope:[initEntry] from initEntry::@1
[212] (byte*) initEntry::entryBufEdit1_$0#0 ← (byte*) initEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) 2
[213] (byte**) initEntry::entryBufEdit1_return#0 ← ((byte**)) (byte*) initEntry::entryBufEdit1_$0#0
to:initEntry::@2
initEntry::@2: scope:[initEntry] from initEntry::entryBufEdit1
[214] (byte/signed word/word/dword/signed dword~) initEntry::$3 ← (byte) initEntry::n#10 + (byte/signed byte/word/signed word/dword/signed dword) 2
[215] *((byte**) initEntry::entryBufEdit1_return#0) ← ((byte*)) (byte/signed word/word/dword/signed dword~) initEntry::$3
to:initEntry::entryTsLen1
initEntry::entryTsLen1: scope:[initEntry] from initEntry::@2
[216] (byte*) initEntry::entryTsLen1_$0#0 ← (byte*) initEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) 4
[217] (word*) initEntry::entryTsLen1_return#0 ← ((word*)) (byte*) initEntry::entryTsLen1_$0#0
to:initEntry::@3
initEntry::@3: scope:[initEntry] from initEntry::entryTsLen1
[218] (byte/signed word/word/dword/signed dword~) initEntry::$5 ← (byte) initEntry::n#10 + (byte/signed byte/word/signed word/dword/signed dword) 3
[219] *((word*) initEntry::entryTsLen1_return#0) ← (byte/signed word/word/dword/signed dword~) initEntry::$5
to:initEntry::entryTsOrder1
initEntry::entryTsOrder1: scope:[initEntry] from initEntry::@3
[220] (byte*) initEntry::entryTsOrder1_$0#0 ← (byte*) initEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) 6
[221] (word**) initEntry::entryTsOrder1_return#0 ← ((word**)) (byte*) initEntry::entryTsOrder1_$0#0
to:initEntry::@4
initEntry::@4: scope:[initEntry] from initEntry::entryTsOrder1
[222] (byte/signed word/word/dword/signed dword~) initEntry::$7 ← (byte) initEntry::n#10 + (byte/signed byte/word/signed word/dword/signed dword) 4
[223] *((word**) initEntry::entryTsOrder1_return#0) ← ((word*)) (byte/signed word/word/dword/signed dword~) initEntry::$7
to:initEntry::entryTLastLink1
initEntry::entryTLastLink1: scope:[initEntry] from initEntry::@4
[224] (byte*) initEntry::entryTLastLink1_return#0 ← (byte*) initEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) 8
to:initEntry::@5
initEntry::@5: scope:[initEntry] from initEntry::entryTLastLink1
[225] (byte/signed word/word/dword/signed dword~) initEntry::$9 ← (byte) initEntry::n#10 + (byte/signed byte/word/signed word/dword/signed dword) 5
[226] *((byte*) initEntry::entryTLastLink1_return#0) ← (byte/signed word/word/dword/signed dword~) initEntry::$9
to:initEntry::entrySLastLink1
initEntry::entrySLastLink1: scope:[initEntry] from initEntry::@5
[227] (byte*) initEntry::entrySLastLink1_return#0 ← (byte*) initEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) 9
to:initEntry::@6
initEntry::@6: scope:[initEntry] from initEntry::entrySLastLink1
[228] (byte/signed word/word/dword/signed dword~) initEntry::$11 ← (byte) initEntry::n#10 + (byte/signed byte/word/signed word/dword/signed dword) 6
[229] *((byte*) initEntry::entrySLastLink1_return#0) ← (byte/signed word/word/dword/signed dword~) initEntry::$11
to:initEntry::entryBFlag1
initEntry::entryBFlag1: scope:[initEntry] from initEntry::@6
[230] (byte*) initEntry::entryBFlag1_return#0 ← (byte*) initEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) $a
to:initEntry::@7
initEntry::@7: scope:[initEntry] from initEntry::entryBFlag1
[231] (byte/signed word/word/dword/signed dword~) initEntry::$13 ← (byte) initEntry::n#10 + (byte/signed byte/word/signed word/dword/signed dword) 7
[232] *((byte*) initEntry::entryBFlag1_return#0) ← (byte/signed word/word/dword/signed dword~) initEntry::$13
to:initEntry::entryBError1
initEntry::entryBError1: scope:[initEntry] from initEntry::@7
[233] (byte*) initEntry::entryBError1_return#0 ← (byte*) initEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) $b
to:initEntry::@8
initEntry::@8: scope:[initEntry] from initEntry::entryBError1
[234] (byte/signed word/word/dword/signed dword~) initEntry::$15 ← (byte) initEntry::n#10 + (byte/signed byte/word/signed word/dword/signed dword) 8
[235] *((byte*) initEntry::entryBError1_return#0) ← (byte/signed word/word/dword/signed dword~) initEntry::$15
to:initEntry::entryUCross1
initEntry::entryUCross1: scope:[initEntry] from initEntry::@8
[236] (byte*) initEntry::entryUCross1_$0#0 ← (byte*) initEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) $c
[237] (word*) initEntry::entryUCross1_return#0 ← ((word*)) (byte*) initEntry::entryUCross1_$0#0
to:initEntry::@9
initEntry::@9: scope:[initEntry] from initEntry::entryUCross1
[238] (byte/signed word/word/dword/signed dword~) initEntry::$17 ← (byte) initEntry::n#10 + (byte/signed byte/word/signed word/dword/signed dword) 9
[239] *((word*) initEntry::entryUCross1_return#0) ← (byte/signed word/word/dword/signed dword~) initEntry::$17
to:initEntry::entryBAddrLo1
initEntry::entryBAddrLo1: scope:[initEntry] from initEntry::@9
[240] (byte*) initEntry::entryBAddrLo1_return#0 ← (byte*) initEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) $e
to:initEntry::@10
initEntry::@10: scope:[initEntry] from initEntry::entryBAddrLo1
[241] (byte/signed word/word/dword/signed dword~) initEntry::$19 ← (byte) initEntry::n#10 + (byte/signed byte/word/signed word/dword/signed dword) $a
[242] *((byte*) initEntry::entryBAddrLo1_return#0) ← (byte/signed word/word/dword/signed dword~) initEntry::$19
to:initEntry::entryBAddrHi1
initEntry::entryBAddrHi1: scope:[initEntry] from initEntry::@10
[243] (byte*) initEntry::entryBAddrHi1_return#0 ← (byte*) initEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) $f
to:initEntry::@11
initEntry::@11: scope:[initEntry] from initEntry::entryBAddrHi1
[244] (byte/signed word/word/dword/signed dword~) initEntry::$21 ← (byte) initEntry::n#10 + (byte/signed byte/word/signed word/dword/signed dword) $b
[245] *((byte*) initEntry::entryBAddrHi1_return#0) ← (byte/signed word/word/dword/signed dword~) initEntry::$21
to:initEntry::entryTHi1
initEntry::entryTHi1: scope:[initEntry] from initEntry::@11
[246] (byte*) initEntry::entryTHi1_return#0 ← (byte*) initEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) $10
to:initEntry::@12
initEntry::@12: scope:[initEntry] from initEntry::entryTHi1
[247] (byte/signed word/word/dword/signed dword~) initEntry::$23 ← (byte) initEntry::n#10 + (byte/signed byte/word/signed word/dword/signed dword) $c
[248] *((byte*) initEntry::entryTHi1_return#0) ← (byte/signed word/word/dword/signed dword~) initEntry::$23
to:initEntry::entryTLo1
initEntry::entryTLo1: scope:[initEntry] from initEntry::@12
[249] (byte*) initEntry::entryTLo1_return#0 ← (byte*) initEntry::entryBufDisk1_$0#0 + (byte/signed byte/word/signed word/dword/signed dword) $11
to:initEntry::@13
initEntry::@13: scope:[initEntry] from initEntry::entryTLo1
[250] (byte/signed word/word/dword/signed dword~) initEntry::$25 ← (byte) initEntry::n#10 + (byte/signed byte/word/signed word/dword/signed dword) $d
[251] *((byte*) initEntry::entryTLo1_return#0) ← (byte/signed word/word/dword/signed dword~) initEntry::$25
to:initEntry::@return
initEntry::@return: scope:[initEntry] from initEntry::@13
[252] return
to:@return
mul8u: scope:[mul8u] from main::fileEntry1 main::fileEntry2
[253] (byte) mul8u::a#6 ← phi( main::fileEntry1/(const byte) main::fileEntry1_idx#0 main::fileEntry2/(const byte) main::fileEntry2_idx#0 )
to:mul8u::@1
mul8u::@1: scope:[mul8u] from mul8u mul8u::@3
[254] (word) mul8u::mb#2 ← phi( mul8u/((word))(const byte) ENTRY_SIZE#0 mul8u::@3/(word) mul8u::mb#1 )
[254] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@3/(word) mul8u::res#6 )
[254] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@3/(byte) mul8u::a#0 )
[255] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2
to:mul8u::@return
mul8u::@return: scope:[mul8u] from mul8u::@1
[256] return
to:@return
mul8u::@2: scope:[mul8u] from mul8u::@1
[257] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
[258] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@3
to:mul8u::@4
mul8u::@4: scope:[mul8u] from mul8u::@2
[259] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
to:mul8u::@3
mul8u::@3: scope:[mul8u] from mul8u::@2 mul8u::@4
[260] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@4/(word) mul8u::res#1 )
[261] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
[262] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
to:mul8u::@1
keyboard_init: scope:[keyboard_init] from main
[263] *((const byte*) CIA1_PORT_A_DDR#0) ← (byte/word/signed word/dword/signed dword) $ff
[264] *((const byte*) CIA1_PORT_B_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:keyboard_init::@return
keyboard_init::@return: scope:[keyboard_init] from keyboard_init
[265] return
to:@return

11427
src/test/ref/semi-struct-2.log Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,491 @@
(label) @1
(label) @begin
(label) @end
(byte*) CIA1_PORT_A
(const byte*) CIA1_PORT_A#0 CIA1_PORT_A = ((byte*))(word/dword/signed dword) $dc00
(byte*) CIA1_PORT_A_DDR
(const byte*) CIA1_PORT_A_DDR#0 CIA1_PORT_A_DDR = ((byte*))(word/dword/signed dword) $dc02
(byte*) CIA1_PORT_B
(const byte*) CIA1_PORT_B#0 CIA1_PORT_B = ((byte*))(word/dword/signed dword) $dc01
(byte*) CIA1_PORT_B_DDR
(const byte*) CIA1_PORT_B_DDR#0 CIA1_PORT_B_DDR = ((byte*))(word/dword/signed dword) $dc03
(byte) ENTRY_SIZE
(const byte) ENTRY_SIZE#0 ENTRY_SIZE = (byte/signed byte/word/signed word/dword/signed dword) $12
(byte) KEY_SPACE
(const byte) KEY_SPACE#0 KEY_SPACE = (byte/signed byte/word/signed word/dword/signed dword) $3c
(byte) MAX_FILES
(const byte) MAX_FILES#0 MAX_FILES = (byte/word/signed word/dword/signed dword) $90
(byte[((word))MAX_FILES#0*ENTRY_SIZE#0]) files
(const byte[((word))MAX_FILES#0*ENTRY_SIZE#0]) files#0 files = { fill( ((word))MAX_FILES#0*ENTRY_SIZE#0, 0) }
(void()) initEntry((byte*) initEntry::entry , (byte) initEntry::n)
(byte/signed word/word/dword/signed dword~) initEntry::$1 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) initEntry::$11 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) initEntry::$13 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) initEntry::$15 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) initEntry::$17 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) initEntry::$19 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) initEntry::$21 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) initEntry::$23 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) initEntry::$25 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) initEntry::$3 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) initEntry::$5 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) initEntry::$7 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) initEntry::$9 reg byte a 4.0
(label) initEntry::@1
(label) initEntry::@10
(label) initEntry::@11
(label) initEntry::@12
(label) initEntry::@13
(label) initEntry::@2
(label) initEntry::@3
(label) initEntry::@4
(label) initEntry::@5
(label) initEntry::@6
(label) initEntry::@7
(label) initEntry::@8
(label) initEntry::@9
(label) initEntry::@return
(byte*) initEntry::entry
(byte*) initEntry::entry#0 entry zp ZP_WORD:2 4.0
(byte*) initEntry::entry#1 entry zp ZP_WORD:2 4.0
(label) initEntry::entryBAddrHi1
(byte*~) initEntry::entryBAddrHi1_$0
(byte*) initEntry::entryBAddrHi1_entry
(byte*) initEntry::entryBAddrHi1_return
(byte*) initEntry::entryBAddrHi1_return#0 entryBAddrHi1_return zp ZP_WORD:6 2.0
(label) initEntry::entryBAddrLo1
(byte*~) initEntry::entryBAddrLo1_$0
(byte*) initEntry::entryBAddrLo1_entry
(byte*) initEntry::entryBAddrLo1_return
(byte*) initEntry::entryBAddrLo1_return#0 entryBAddrLo1_return zp ZP_WORD:6 2.0
(label) initEntry::entryBError1
(byte*~) initEntry::entryBError1_$0
(byte*) initEntry::entryBError1_entry
(byte*) initEntry::entryBError1_return
(byte*) initEntry::entryBError1_return#0 entryBError1_return zp ZP_WORD:6 2.0
(label) initEntry::entryBFlag1
(byte*~) initEntry::entryBFlag1_$0
(byte*) initEntry::entryBFlag1_entry
(byte*) initEntry::entryBFlag1_return
(byte*) initEntry::entryBFlag1_return#0 entryBFlag1_return zp ZP_WORD:6 2.0
(label) initEntry::entryBufDisk1
(byte*~) initEntry::entryBufDisk1_$0
(byte*) initEntry::entryBufDisk1_$0#0 entryBufDisk1_$0 zp ZP_WORD:2 0.7317073170731708
(byte**~) initEntry::entryBufDisk1_$1
(byte*) initEntry::entryBufDisk1_entry
(byte**) initEntry::entryBufDisk1_return
(byte**) initEntry::entryBufDisk1_return#0 entryBufDisk1_return zp ZP_WORD:6 2.0
(label) initEntry::entryBufEdit1
(byte*~) initEntry::entryBufEdit1_$0
(byte*) initEntry::entryBufEdit1_$0#0 entryBufEdit1_$0 zp ZP_WORD:6 4.0
(byte**~) initEntry::entryBufEdit1_$1
(byte*) initEntry::entryBufEdit1_entry
(byte**) initEntry::entryBufEdit1_return
(byte**) initEntry::entryBufEdit1_return#0 entryBufEdit1_return zp ZP_WORD:6 2.0
(label) initEntry::entrySLastLink1
(byte*~) initEntry::entrySLastLink1_$0
(byte*) initEntry::entrySLastLink1_entry
(byte*) initEntry::entrySLastLink1_return
(byte*) initEntry::entrySLastLink1_return#0 entrySLastLink1_return zp ZP_WORD:6 2.0
(label) initEntry::entryTHi1
(byte*~) initEntry::entryTHi1_$0
(byte*) initEntry::entryTHi1_entry
(byte*) initEntry::entryTHi1_return
(byte*) initEntry::entryTHi1_return#0 entryTHi1_return zp ZP_WORD:6 2.0
(label) initEntry::entryTLastLink1
(byte*~) initEntry::entryTLastLink1_$0
(byte*) initEntry::entryTLastLink1_entry
(byte*) initEntry::entryTLastLink1_return
(byte*) initEntry::entryTLastLink1_return#0 entryTLastLink1_return zp ZP_WORD:6 2.0
(label) initEntry::entryTLo1
(byte*~) initEntry::entryTLo1_$0
(byte*) initEntry::entryTLo1_entry
(byte*) initEntry::entryTLo1_return
(byte*) initEntry::entryTLo1_return#0 entryTLo1_return zp ZP_WORD:2 2.0
(label) initEntry::entryTsLen1
(byte*~) initEntry::entryTsLen1_$0
(byte*) initEntry::entryTsLen1_$0#0 entryTsLen1_$0 zp ZP_WORD:6 4.0
(word*~) initEntry::entryTsLen1_$1
(byte*) initEntry::entryTsLen1_entry
(word*) initEntry::entryTsLen1_return
(word*) initEntry::entryTsLen1_return#0 entryTsLen1_return zp ZP_WORD:6 2.0
(label) initEntry::entryTsOrder1
(byte*~) initEntry::entryTsOrder1_$0
(byte*) initEntry::entryTsOrder1_$0#0 entryTsOrder1_$0 zp ZP_WORD:6 4.0
(word**~) initEntry::entryTsOrder1_$1
(byte*) initEntry::entryTsOrder1_entry
(word**) initEntry::entryTsOrder1_return
(word**) initEntry::entryTsOrder1_return#0 entryTsOrder1_return zp ZP_WORD:6 2.0
(label) initEntry::entryUCross1
(byte*~) initEntry::entryUCross1_$0
(byte*) initEntry::entryUCross1_$0#0 entryUCross1_$0 zp ZP_WORD:6 4.0
(word*~) initEntry::entryUCross1_$1
(byte*) initEntry::entryUCross1_entry
(word*) initEntry::entryUCross1_return
(word*) initEntry::entryUCross1_return#0 entryUCross1_return zp ZP_WORD:6 2.0
(byte) initEntry::n
(byte) initEntry::n#10 n zp ZP_BYTE:8 0.6190476190476191
(void()) keyboard_init()
(label) keyboard_init::@return
(byte()) keyboard_key_pressed((byte) keyboard_key_pressed::key)
(byte~) keyboard_key_pressed::$2 reg byte a 4.0
(label) keyboard_key_pressed::@1
(label) keyboard_key_pressed::@return
(byte) keyboard_key_pressed::colidx
(const byte) keyboard_key_pressed::colidx#0 colidx = (const byte) KEY_SPACE#0&(byte/signed byte/word/signed word/dword/signed dword) 7
(byte) keyboard_key_pressed::key
(byte) keyboard_key_pressed::return
(byte) keyboard_key_pressed::return#0 reg byte a 6.0
(byte) keyboard_key_pressed::return#2 reg byte a 22.0
(byte) keyboard_key_pressed::return#3 reg byte a 22.0
(byte) keyboard_key_pressed::rowidx
(const byte) keyboard_key_pressed::rowidx#0 rowidx = (const byte) KEY_SPACE#0>>(byte/signed byte/word/signed word/dword/signed dword) 3
(byte[8]) keyboard_matrix_col_bitmask
(const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) $10, (byte/signed byte/word/signed word/dword/signed dword) $20, (byte/signed byte/word/signed word/dword/signed dword) $40, (byte/word/signed word/dword/signed dword) $80 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
(label) keyboard_matrix_read::@return
(byte) keyboard_matrix_read::return
(byte) keyboard_matrix_read::return#0 reg byte a 1.3333333333333333
(byte) keyboard_matrix_read::return#2 reg byte a 4.0
(byte) keyboard_matrix_read::row_pressed_bits
(byte) keyboard_matrix_read::rowid
(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) $fe, (byte/word/signed word/dword/signed dword) $fd, (byte/word/signed word/dword/signed dword) $fb, (byte/word/signed word/dword/signed dword) $f7, (byte/word/signed word/dword/signed dword) $ef, (byte/word/signed word/dword/signed dword) $df, (byte/word/signed word/dword/signed dword) $bf, (byte/signed byte/word/signed word/dword/signed dword) $7f }
(void()) main()
(byte~) main::$20 reg byte a 22.0
(byte~) main::$22 reg byte a 22.0
(label) main::@1
(label) main::@10
(label) main::@11
(label) main::@12
(label) main::@13
(label) main::@14
(label) main::@15
(label) main::@16
(label) main::@17
(label) main::@18
(label) main::@19
(label) main::@2
(label) main::@20
(label) main::@21
(label) main::@22
(label) main::@23
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@6
(label) main::@7
(label) main::@8
(label) main::@9
(label) main::@return
(byte*) main::entry1
(byte*) main::entry1#0 entry1 zp ZP_WORD:4 0.3157894736842105
(byte*) main::entry2
(byte*) main::entry2#0 entry2 zp ZP_WORD:9 0.17142857142857143
(label) main::fileEntry1
(word~) main::fileEntry1_$0
(word) main::fileEntry1_$0#0 fileEntry1_$0 zp ZP_WORD:4 4.0
(byte*~) main::fileEntry1_$1
(byte) main::fileEntry1_idx
(const byte) main::fileEntry1_idx#0 fileEntry1_idx = (byte/signed byte/word/signed word/dword/signed dword) 1
(byte*) main::fileEntry1_return
(label) main::fileEntry2
(word~) main::fileEntry2_$0
(word) main::fileEntry2_$0#0 fileEntry2_$0 zp ZP_WORD:9 4.0
(byte*~) main::fileEntry2_$1
(byte) main::fileEntry2_idx
(const byte) main::fileEntry2_idx#0 fileEntry2_idx = (byte/signed byte/word/signed word/dword/signed dword) 2
(byte*) main::fileEntry2_return
(const string) main::str str = (string) "** entry 1 **@"
(const string) main::str1 str1 = (string) "- press space -@"
(const string) main::str2 str2 = (string) "** entry 2 **@"
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(byte~) mul8u::$1 reg byte a 22.0
(label) mul8u::@1
(label) mul8u::@2
(label) mul8u::@3
(label) mul8u::@4
(label) mul8u::@return
(byte) mul8u::a
(byte) mul8u::a#0 reg byte x 11.0
(byte) mul8u::a#3 reg byte x 7.666666666666666
(byte) mul8u::a#6 reg byte x 2.0
(byte) mul8u::b
(word) mul8u::mb
(word) mul8u::mb#1 mb zp ZP_WORD:2 22.0
(word) mul8u::mb#2 mb zp ZP_WORD:2 4.714285714285714
(word) mul8u::res
(word) mul8u::res#1 res zp ZP_WORD:9 22.0
(word) mul8u::res#2 res zp ZP_WORD:9 5.285714285714286
(word) mul8u::res#6 res zp ZP_WORD:9 11.0
(word) mul8u::return
(word) mul8u::return#2 return zp ZP_WORD:9 4.0
(word) mul8u::return#3 return zp ZP_WORD:9 4.0
(void()) printEntry((byte*) printEntry::entry)
(label) printEntry::@1
(label) printEntry::@10
(label) printEntry::@11
(label) printEntry::@12
(label) printEntry::@13
(label) printEntry::@14
(label) printEntry::@15
(label) printEntry::@16
(label) printEntry::@17
(label) printEntry::@18
(label) printEntry::@19
(label) printEntry::@2
(label) printEntry::@20
(label) printEntry::@21
(label) printEntry::@22
(label) printEntry::@23
(label) printEntry::@24
(label) printEntry::@25
(label) printEntry::@26
(label) printEntry::@27
(label) printEntry::@28
(label) printEntry::@29
(label) printEntry::@3
(label) printEntry::@30
(label) printEntry::@31
(label) printEntry::@32
(label) printEntry::@33
(label) printEntry::@34
(label) printEntry::@35
(label) printEntry::@36
(label) printEntry::@37
(label) printEntry::@38
(label) printEntry::@4
(label) printEntry::@5
(label) printEntry::@6
(label) printEntry::@7
(label) printEntry::@8
(label) printEntry::@9
(label) printEntry::@return
(byte*) printEntry::entry
(byte*) printEntry::entry#0 entry zp ZP_WORD:4 4.0
(byte*) printEntry::entry#1 entry zp ZP_WORD:4 4.0
(label) printEntry::entryBAddrHi1
(byte*~) printEntry::entryBAddrHi1_$0
(byte*) printEntry::entryBAddrHi1_entry
(byte*) printEntry::entryBAddrHi1_return
(byte*) printEntry::entryBAddrHi1_return#0 entryBAddrHi1_return zp ZP_WORD:2 4.0
(label) printEntry::entryBAddrLo1
(byte*~) printEntry::entryBAddrLo1_$0
(byte*) printEntry::entryBAddrLo1_entry
(byte*) printEntry::entryBAddrLo1_return
(byte*) printEntry::entryBAddrLo1_return#0 entryBAddrLo1_return zp ZP_WORD:2 4.0
(label) printEntry::entryBError1
(byte*~) printEntry::entryBError1_$0
(byte*) printEntry::entryBError1_entry
(byte*) printEntry::entryBError1_return
(byte*) printEntry::entryBError1_return#0 entryBError1_return zp ZP_WORD:2 4.0
(label) printEntry::entryBFlag1
(byte*~) printEntry::entryBFlag1_$0
(byte*) printEntry::entryBFlag1_entry
(byte*) printEntry::entryBFlag1_return
(byte*) printEntry::entryBFlag1_return#0 entryBFlag1_return zp ZP_WORD:2 4.0
(label) printEntry::entryBufDisk1
(byte*~) printEntry::entryBufDisk1_$0
(byte*) printEntry::entryBufDisk1_$0#0 entryBufDisk1_$0 zp ZP_WORD:4 0.3296703296703296
(byte**~) printEntry::entryBufDisk1_$1
(byte*) printEntry::entryBufDisk1_entry
(byte**) printEntry::entryBufDisk1_return
(byte**) printEntry::entryBufDisk1_return#0 entryBufDisk1_return zp ZP_WORD:2 2.0
(label) printEntry::entryBufEdit1
(byte*~) printEntry::entryBufEdit1_$0
(byte*) printEntry::entryBufEdit1_$0#0 entryBufEdit1_$0 zp ZP_WORD:2 4.0
(byte**~) printEntry::entryBufEdit1_$1
(byte*) printEntry::entryBufEdit1_entry
(byte**) printEntry::entryBufEdit1_return
(byte**) printEntry::entryBufEdit1_return#0 entryBufEdit1_return zp ZP_WORD:2 2.0
(label) printEntry::entrySLastLink1
(byte*~) printEntry::entrySLastLink1_$0
(byte*) printEntry::entrySLastLink1_entry
(byte*) printEntry::entrySLastLink1_return
(byte*) printEntry::entrySLastLink1_return#0 entrySLastLink1_return zp ZP_WORD:2 4.0
(label) printEntry::entryTHi1
(byte*~) printEntry::entryTHi1_$0
(byte*) printEntry::entryTHi1_entry
(byte*) printEntry::entryTHi1_return
(byte*) printEntry::entryTHi1_return#0 entryTHi1_return zp ZP_WORD:2 4.0
(label) printEntry::entryTLastLink1
(byte*~) printEntry::entryTLastLink1_$0
(byte*) printEntry::entryTLastLink1_entry
(byte*) printEntry::entryTLastLink1_return
(byte*) printEntry::entryTLastLink1_return#0 entryTLastLink1_return zp ZP_WORD:2 4.0
(label) printEntry::entryTLo1
(byte*~) printEntry::entryTLo1_$0
(byte*) printEntry::entryTLo1_entry
(byte*) printEntry::entryTLo1_return
(byte*) printEntry::entryTLo1_return#0 entryTLo1_return zp ZP_WORD:4 4.0
(label) printEntry::entryTsLen1
(byte*~) printEntry::entryTsLen1_$0
(byte*) printEntry::entryTsLen1_$0#0 entryTsLen1_$0 zp ZP_WORD:2 4.0
(word*~) printEntry::entryTsLen1_$1
(byte*) printEntry::entryTsLen1_entry
(word*) printEntry::entryTsLen1_return
(word*) printEntry::entryTsLen1_return#0 entryTsLen1_return zp ZP_WORD:2 4.0
(label) printEntry::entryTsOrder1
(byte*~) printEntry::entryTsOrder1_$0
(byte*) printEntry::entryTsOrder1_$0#0 entryTsOrder1_$0 zp ZP_WORD:2 4.0
(word**~) printEntry::entryTsOrder1_$1
(byte*) printEntry::entryTsOrder1_entry
(word**) printEntry::entryTsOrder1_return
(word**) printEntry::entryTsOrder1_return#0 entryTsOrder1_return zp ZP_WORD:2 2.0
(label) printEntry::entryUCross1
(byte*~) printEntry::entryUCross1_$0
(byte*) printEntry::entryUCross1_$0#0 entryUCross1_$0 zp ZP_WORD:2 4.0
(word*~) printEntry::entryUCross1_$1
(byte*) printEntry::entryUCross1_entry
(word*) printEntry::entryUCross1_return
(word*) printEntry::entryUCross1_return#0 entryUCross1_return zp ZP_WORD:2 4.0
(const string) printEntry::str str = (string) "bufdisk @"
(const string) printEntry::str1 str1 = (string) "bufedit @"
(const string) printEntry::str10 str10 = (string) "baddrhi @"
(const string) printEntry::str11 str11 = (string) "thi @"
(const string) printEntry::str12 str12 = (string) "tlo @"
(const string) printEntry::str2 str2 = (string) "tslen @"
(const string) printEntry::str3 str3 = (string) "tsorder @"
(const string) printEntry::str4 str4 = (string) "tlastlink @"
(const string) printEntry::str5 str5 = (string) "slastlink @"
(const string) printEntry::str6 str6 = (string) "bflag @"
(const string) printEntry::str7 str7 = (string) "berror @"
(const string) printEntry::str8 str8 = (string) "ucross @"
(const string) printEntry::str9 str9 = (string) "baddrlo @"
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte a 4.0
(byte~) print_byte::$2 reg byte x 4.0
(label) print_byte::@1
(label) print_byte::@return
(byte) print_byte::b
(byte) print_byte::b#0 reg byte x 4.0
(byte) print_byte::b#1 reg byte x 4.0
(byte) print_byte::b#10 reg byte x 6.0
(byte) print_byte::b#2 reg byte x 4.0
(byte) print_byte::b#3 reg byte x 4.0
(byte) print_byte::b#4 reg byte x 4.0
(byte) print_byte::b#5 reg byte x 4.0
(byte) print_byte::b#6 reg byte x 4.0
(byte) print_byte::b#7 reg byte x 4.0
(byte) print_byte::b#8 reg byte x 4.0
(byte) print_byte::b#9 reg byte x 4.0
(void()) print_char((byte) print_char::ch)
(label) print_char::@return
(byte) print_char::ch
(byte) print_char::ch#0 reg byte a 4.0
(byte) print_char::ch#1 reg byte a 4.0
(byte) print_char::ch#2 reg byte a 6.0
(byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:6 11.0
(byte*) print_char_cursor#11 print_char_cursor zp ZP_WORD:6 0.8648648648648649
(byte*) print_char_cursor#142 print_char_cursor zp ZP_WORD:6 1.0754716981132075
(byte*) print_char_cursor#143 print_char_cursor zp ZP_WORD:6 9.800000000000002
(byte*) print_char_cursor#145 print_char_cursor zp ZP_WORD:6 7.333333333333334
(byte*) print_char_cursor#164 print_char_cursor zp ZP_WORD:6 32.0
(byte*~) print_char_cursor#212 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#213 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#214 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#215 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#216 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#217 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#218 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#219 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#220 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#221 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#222 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#223 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#224 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#225 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#226 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#230 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#231 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#233 print_char_cursor zp ZP_WORD:6 4.0
(byte*~) print_char_cursor#234 print_char_cursor zp ZP_WORD:6 4.0
(byte*) print_char_cursor#82 print_char_cursor zp ZP_WORD:6 4.0
(void()) print_cls()
(label) print_cls::@1
(label) print_cls::@return
(byte*) print_cls::sc
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
(byte[]) print_hextab
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"
(byte*) print_line_cursor
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:11 1.03960396039604
(byte*~) print_line_cursor#159 print_line_cursor#159 zp ZP_WORD:2 2.0
(byte*~) print_line_cursor#160 print_line_cursor#160 zp ZP_WORD:2 2.0
(byte*~) print_line_cursor#161 print_line_cursor#161 zp ZP_WORD:2 2.0
(byte*~) print_line_cursor#162 print_line_cursor#162 zp ZP_WORD:2 2.0
(byte*~) print_line_cursor#163 print_line_cursor#163 zp ZP_WORD:2 4.0
(byte*~) print_line_cursor#164 print_line_cursor#164 zp ZP_WORD:2 4.0
(byte*~) print_line_cursor#165 print_line_cursor#165 zp ZP_WORD:2 4.0
(byte*~) print_line_cursor#166 print_line_cursor#166 zp ZP_WORD:2 4.0
(byte*~) print_line_cursor#167 print_line_cursor#167 zp ZP_WORD:2 4.0
(byte*~) print_line_cursor#168 print_line_cursor#168 zp ZP_WORD:2 4.0
(byte*~) print_line_cursor#169 print_line_cursor#169 zp ZP_WORD:2 4.0
(byte*~) print_line_cursor#170 print_line_cursor#170 zp ZP_WORD:2 4.0
(byte*~) print_line_cursor#171 print_line_cursor#171 zp ZP_WORD:2 4.0
(byte*~) print_line_cursor#172 print_line_cursor#172 zp ZP_WORD:2 4.0
(byte*~) print_line_cursor#173 print_line_cursor#173 zp ZP_WORD:2 4.0
(byte*~) print_line_cursor#174 print_line_cursor#174 zp ZP_WORD:2 4.0
(byte*~) print_line_cursor#175 print_line_cursor#175 zp ZP_WORD:2 4.0
(byte*~) print_line_cursor#177 print_line_cursor#177 zp ZP_WORD:2 22.0
(byte*) print_line_cursor#32 print_line_cursor#32 zp ZP_WORD:2 24.0
(byte*) print_line_cursor#63 print_line_cursor#63 zp ZP_WORD:2 36.0
(void()) print_ln()
(label) print_ln::@1
(label) print_ln::@2
(label) print_ln::@return
(byte*) print_screen
(void()) print_str((byte*) print_str::str)
(label) print_str::@1
(label) print_str::@2
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0 str zp ZP_WORD:2 22.0
(byte*) print_str::str#18 str zp ZP_WORD:2 11.5
(byte*) print_str::str#20 str zp ZP_WORD:2 2.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
(word) print_word::w
(word~) print_word::w#10 w zp ZP_WORD:2 4.0
(word) print_word::w#2 w zp ZP_WORD:2 4.0
(word) print_word::w#4 w zp ZP_WORD:2 4.0
(word) print_word::w#5 w zp ZP_WORD:2 4.666666666666666
(word~) print_word::w#7 w zp ZP_WORD:2 4.0
(word~) print_word::w#8 w zp ZP_WORD:2 4.0
zp ZP_WORD:2 [ print_cls::sc#2 print_cls::sc#1 print_str::str#18 print_str::str#20 print_str::str#0 print_line_cursor#32 print_line_cursor#63 print_line_cursor#159 print_line_cursor#160 print_line_cursor#161 print_line_cursor#162 print_line_cursor#163 print_line_cursor#164 print_line_cursor#165 print_line_cursor#166 print_line_cursor#167 print_line_cursor#168 print_line_cursor#169 print_line_cursor#170 print_line_cursor#171 print_line_cursor#172 print_line_cursor#173 print_line_cursor#174 print_line_cursor#175 print_line_cursor#177 print_word::w#5 print_word::w#7 print_word::w#8 print_word::w#2 print_word::w#10 print_word::w#4 printEntry::entryBufDisk1_return#0 printEntry::entryBufEdit1_return#0 printEntry::entryTsLen1_return#0 printEntry::entryTsOrder1_return#0 printEntry::entryUCross1_return#0 printEntry::entryBufEdit1_$0#0 printEntry::entryTsLen1_$0#0 printEntry::entryTsOrder1_$0#0 printEntry::entryUCross1_$0#0 initEntry::entryBufDisk1_$0#0 initEntry::entry#0 initEntry::entry#1 initEntry::entryTLo1_return#0 mul8u::mb#2 mul8u::mb#1 printEntry::entryTLastLink1_return#0 printEntry::entrySLastLink1_return#0 printEntry::entryBFlag1_return#0 printEntry::entryBError1_return#0 printEntry::entryBAddrLo1_return#0 printEntry::entryBAddrHi1_return#0 printEntry::entryTHi1_return#0 ]
zp ZP_WORD:4 [ printEntry::entryBufDisk1_$0#0 printEntry::entry#0 printEntry::entry#1 main::entry1#0 printEntry::entryTLo1_return#0 main::fileEntry1_$0#0 ]
reg byte x [ print_byte::b#10 print_byte::b#6 print_byte::b#7 print_byte::b#8 print_byte::b#9 print_byte::b#2 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#0 print_byte::b#1 ]
reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
zp ZP_WORD:6 [ print_char_cursor#82 print_char_cursor#145 print_char_cursor#143 print_char_cursor#142 print_char_cursor#164 print_char_cursor#212 print_char_cursor#213 print_char_cursor#214 print_char_cursor#215 print_char_cursor#216 print_char_cursor#217 print_char_cursor#218 print_char_cursor#219 print_char_cursor#220 print_char_cursor#221 print_char_cursor#222 print_char_cursor#223 print_char_cursor#224 print_char_cursor#225 print_char_cursor#226 print_char_cursor#1 print_char_cursor#230 print_char_cursor#231 print_char_cursor#233 print_char_cursor#234 print_char_cursor#11 initEntry::entryBufDisk1_return#0 initEntry::entryBufEdit1_$0#0 initEntry::entryBufEdit1_return#0 initEntry::entryTsLen1_$0#0 initEntry::entryTsLen1_return#0 initEntry::entryTsOrder1_$0#0 initEntry::entryTsOrder1_return#0 initEntry::entryTLastLink1_return#0 initEntry::entrySLastLink1_return#0 initEntry::entryBFlag1_return#0 initEntry::entryBError1_return#0 initEntry::entryUCross1_$0#0 initEntry::entryUCross1_return#0 initEntry::entryBAddrLo1_return#0 initEntry::entryBAddrHi1_return#0 initEntry::entryTHi1_return#0 ]
zp ZP_BYTE:8 [ initEntry::n#10 ]
reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#0 ]
zp ZP_WORD:9 [ mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mul8u::return#3 main::fileEntry2_$0#0 main::entry2#0 ]
reg byte a [ keyboard_key_pressed::return#2 ]
reg byte a [ main::$20 ]
reg byte a [ keyboard_key_pressed::return#3 ]
reg byte a [ main::$22 ]
reg byte a [ keyboard_matrix_read::return#2 ]
reg byte a [ keyboard_key_pressed::$2 ]
reg byte a [ keyboard_key_pressed::return#0 ]
reg byte a [ keyboard_matrix_read::return#0 ]
zp ZP_WORD:11 [ print_line_cursor#1 ]
reg byte a [ print_byte::$0 ]
reg byte x [ print_byte::$2 ]
reg byte a [ initEntry::$1 ]
reg byte a [ initEntry::$3 ]
reg byte a [ initEntry::$5 ]
reg byte a [ initEntry::$7 ]
reg byte a [ initEntry::$9 ]
reg byte a [ initEntry::$11 ]
reg byte a [ initEntry::$13 ]
reg byte a [ initEntry::$15 ]
reg byte a [ initEntry::$17 ]
reg byte a [ initEntry::$19 ]
reg byte a [ initEntry::$21 ]
reg byte a [ initEntry::$23 ]
reg byte a [ initEntry::$25 ]
reg byte a [ mul8u::$1 ]