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

Implemented word multiplication

This commit is contained in:
jespergravgaard 2018-02-15 20:36:26 +01:00
parent b5a79848f3
commit 34d3c732da
7 changed files with 9550 additions and 5475 deletions

View File

@ -0,0 +1,14 @@
lda {z1}
clc
adc {z2}
sta {z1}
lda {z1}+1
adc {z2}+1
sta {z1}+1
lda {z1}+2
adc {z2}+2
sta {z1}+2
lda {z1}+3
adc {z2}+3
sta {z1}+3

View File

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

View File

@ -13,7 +13,7 @@ void main() {
mulf_tables_cmp();
mul8u_compare();
mul8s_compare();
//mul16u_compare();
mul16u_compare();
}
// Slow multiplication of unsigned bytes
@ -234,12 +234,12 @@ void mul16u_compare() {
}
}
}
print_str("multiply results match!@");
print_str("word multiply results match!@");
print_ln();
}
void mul16u_error(word a, word b, dword ms, dword mn) {
print_str("multiply mismatch @");
print_str("word multiply mismatch @");
print_word(a);
print_str("*@");
print_word(b);

View File

@ -3,8 +3,8 @@
.pc = $80d "Program"
.label SCREEN = $400
.label BGCOL = $d021
.label char_cursor = $a
.label line_cursor = 4
.label char_cursor = $e
.label line_cursor = 6
jsr main
main: {
lda #5
@ -15,14 +15,340 @@ main: {
jsr mulf_tables_cmp
jsr mul8u_compare
jsr mul8s_compare
jsr mul16u_compare
rts
}
mul16u_compare: {
.label a = 2
.label b = 4
.label ms = $a
.label mn = $10
ldx #0
txa
sta b
sta b+1
sta a
sta a+1
b1:
ldy #0
b2:
lda a
clc
adc #<$d2b
sta a
lda a+1
adc #>$d2b
sta a+1
lda b
clc
adc #<$ffd
sta b
lda b+1
adc #>$ffd
sta b+1
jsr muls16u
lda a
sta mul16u.a
lda a+1
sta mul16u.a+1
jsr mul16u
lda ms
cmp mn
bne !+
lda ms+1
cmp mn+1
bne !+
lda ms+2
cmp mn+2
bne !+
lda ms+3
cmp mn+3
beq b5
!:
lda #0
jmp b3
b5:
lda #1
b3:
cmp #0
bne b4
lda #2
sta BGCOL
jsr mul16u_error
breturn:
rts
b4:
iny
cpy #$10
bne b2
inx
cpx #$10
bne b1
lda line_cursor
sta char_cursor
lda line_cursor+1
sta char_cursor+1
lda #<str
sta print_str.str
lda #>str
sta print_str.str+1
jsr print_str
jsr print_ln
jmp breturn
str: .text "word multiply results match!@"
}
print_ln: {
b1:
lda line_cursor
clc
adc #$28
sta line_cursor
bcc !+
inc line_cursor+1
!:
lda line_cursor+1
cmp char_cursor+1
bcc b1
bne !+
lda line_cursor
cmp char_cursor
bcc b1
!:
rts
}
print_str: {
.label str = 8
b1:
ldy #0
lda (str),y
cmp #'@'
bne b2
rts
b2:
ldy #0
lda (str),y
sta (char_cursor),y
inc char_cursor
bne !+
inc char_cursor+1
!:
inc str
bne !+
inc str+1
!:
jmp b1
}
mul16u_error: {
.label a = 2
.label b = 4
.label ms = $a
.label mn = $10
lda line_cursor
sta char_cursor
lda line_cursor+1
sta char_cursor+1
lda #<str
sta print_str.str
lda #>str
sta print_str.str+1
jsr print_str
jsr print_word
lda #<str1
sta print_str.str
lda #>str1
sta print_str.str+1
jsr print_str
lda b
sta print_word.w
lda b+1
sta print_word.w+1
jsr print_word
lda #<str2
sta print_str.str
lda #>str2
sta print_str.str+1
jsr print_str
jsr print_dword
lda #<str3
sta print_str.str
lda #>str3
sta print_str.str+1
jsr print_str
lda mn
sta print_dword.dw
lda mn+1
sta print_dword.dw+1
lda mn+2
sta print_dword.dw+2
lda mn+3
sta print_dword.dw+3
jsr print_dword
jsr print_ln
rts
str: .text "word multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
}
print_dword: {
.label dw = $a
lda dw+2
sta print_word.w
lda dw+3
sta print_word.w+1
jsr print_word
lda dw
sta print_word.w
lda dw+1
sta print_word.w+1
jsr print_word
rts
}
print_word: {
.label w = 2
lda w+1
tax
jsr print_byte
lda w
tax
jsr print_byte
rts
}
print_byte: {
txa
lsr
lsr
lsr
lsr
tay
lda hextab,y
jsr print_char
txa
and #$f
tay
lda hextab,y
jsr print_char
rts
hextab: .text "0123456789abcdef"
}
print_char: {
ldy #0
sta (char_cursor),y
inc char_cursor
bne !+
inc char_cursor+1
!:
rts
}
mul16u: {
.label mb = $14
.label a = 8
.label res = $10
.label b = 4
.label return = $10
lda b
sta mb
lda b+1
sta mb+1
lda #0
sta mb+2
sta mb+3
sta res
sta res+1
sta res+2
sta res+3
b1:
lda a
bne b2
lda a+1
bne b2
rts
b2:
lda a
and #1
cmp #0
beq b4
lda res
clc
adc mb
sta res
lda res+1
adc mb+1
sta res+1
lda res+2
adc mb+2
sta res+2
lda res+3
adc mb+3
sta res+3
b4:
clc
ror a+1
ror a
asl mb
rol mb+1
rol mb+2
rol mb+3
jmp b1
}
muls16u: {
.label return = $a
.label m = $a
.label i = 8
.label a = 2
.label b = 4
lda a
bne !+
lda a+1
beq b3
!:
lda #0
sta i
sta i+1
sta m
sta m+1
sta m+2
sta m+3
b2:
lda m
clc
adc b
sta m
lda m+1
adc b+1
sta m+1
lda m+2
adc #0
sta m+2
lda m+3
adc #0
sta m+3
inc i
bne !+
inc i+1
!:
lda i+1
cmp a+1
bne b2
lda i
cmp a
bne b2
jmp b1
b3:
lda #0
sta return
sta return+1
sta return+2
sta return+3
b1:
rts
}
mul8s_compare: {
.label ms = 8
.label mf = $e
.label mn = $c
.label b = 3
.label a = 2
.label ms = 2
.label mf = $1a
.label mn = 4
.label b = $19
.label a = $18
lda #-$80
sta a
b1:
@ -86,52 +412,11 @@ mul8s_compare: {
jmp breturn
str: .text "signed multiply results match!@"
}
print_ln: {
b1:
lda line_cursor
clc
adc #$28
sta line_cursor
bcc !+
inc line_cursor+1
!:
lda line_cursor+1
cmp char_cursor+1
bcc b1
bne !+
lda line_cursor
cmp char_cursor
bcc b1
!:
rts
}
print_str: {
.label str = 6
b1:
ldy #0
lda (str),y
cmp #'@'
bne b2
rts
b2:
ldy #0
lda (str),y
sta (char_cursor),y
inc char_cursor
bne !+
inc char_cursor+1
!:
inc str
bne !+
inc str+1
!:
jmp b1
}
mul8s_error: {
.label b = 3
.label ms = 8
.label mn = $c
.label mf = $e
.label b = $19
.label ms = 2
.label mn = 4
.label mf = $1a
lda line_cursor
sta char_cursor
lda line_cursor+1
@ -184,7 +469,7 @@ mul8s_error: {
str4: .text " / fast:@"
}
print_sword: {
.label w = 8
.label w = 2
lda w+1
bpl b1
lda #'-'
@ -202,42 +487,6 @@ print_sword: {
jsr print_word
rts
}
print_word: {
.label w = 8
lda w+1
tax
jsr print_byte
lda w
tax
jsr print_byte
rts
}
print_byte: {
txa
lsr
lsr
lsr
lsr
tay
lda hextab,y
jsr print_char
txa
and #$f
tay
lda hextab,y
jsr print_char
rts
hextab: .text "0123456789abcdef"
}
print_char: {
ldy #0
sta (char_cursor),y
inc char_cursor
bne !+
inc char_cursor+1
!:
rts
}
print_sbyte: {
cpx #0
bpl b1
@ -253,9 +502,9 @@ print_sbyte: {
rts
}
mul8s: {
.label m = $c
.label a = 2
.label return = $c
.label m = 4
.label a = $18
.label return = 4
tya
ldx a
jsr mul8u
@ -278,9 +527,9 @@ mul8s: {
rts
}
mul8u: {
.label mb = 6
.label res = $c
.label return = $c
.label mb = 8
.label res = 4
.label return = 4
sta mb
lda #0
sta mb+1
@ -311,9 +560,9 @@ mul8u: {
jmp b1
}
mulf8s: {
.label m = $e
.label b = 3
.label return = $e
.label m = $1a
.label b = $19
.label return = $1a
tya
ldx b
jsr mulf8u
@ -338,7 +587,7 @@ mulf8s: {
mulf8u: {
.label memA = $fe
.label memB = $ff
.label return = $e
.label return = $1a
sta memA
stx memB
sta sm1+1
@ -364,9 +613,9 @@ mulf8u: {
rts
}
muls8s: {
.label m = 8
.label return = 8
.label a = 2
.label m = 2
.label return = 2
.label a = $18
lda a
cmp #0
bpl b1
@ -428,11 +677,11 @@ muls8s: {
jmp b3
}
mul8u_compare: {
.label ms = 8
.label mf = $e
.label mn = $c
.label b = 3
.label a = 2
.label ms = 2
.label mf = $1a
.label mn = 4
.label b = $19
.label a = $18
lda #0
sta a
b1:
@ -493,10 +742,10 @@ mul8u_compare: {
str: .text "multiply results match!@"
}
mul8u_error: {
.label b = 3
.label ms = 8
.label mn = $c
.label mf = $e
.label b = $19
.label ms = 2
.label mn = 4
.label mf = $1a
lda #<str
sta print_str.str
lda #>str
@ -545,9 +794,9 @@ mul8u_error: {
str4: .text " / fast:@"
}
muls8u: {
.label return = 8
.label m = 8
.label a = 2
.label return = 2
.label m = 2
.label a = $18
lda a
beq b3
ldy #0
@ -574,7 +823,7 @@ muls8u: {
rts
}
mulf_tables_cmp: {
.label asm_sqr = 8
.label asm_sqr = 2
.label kc_sqr = 4
lda #<mula_sqr1_lo
sta asm_sqr
@ -708,13 +957,13 @@ mulf_init_asm: {
rts
}
mulf_init: {
.label sqr1_hi = 6
.label sqr = 8
.label sqr1_lo = 4
.label x_2 = 2
.label sqr2_hi = 6
.label sqr2_lo = 4
.label dir = 2
.label sqr1_hi = 4
.label sqr = 6
.label sqr1_lo = 2
.label x_2 = $18
.label sqr2_hi = 4
.label sqr2_lo = 2
.label dir = $18
lda #0
sta x_2
lda #<mulf_sqr1_hi+1
@ -814,7 +1063,7 @@ mulf_init: {
rts
}
print_cls: {
.label sc = 4
.label sc = 2
lda #<SCREEN
sta sc
lda #>SCREEN

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -6,32 +6,114 @@
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
(byte*) char_cursor
(byte*) char_cursor#1 char_cursor zp ZP_WORD:10 11.0
(byte*) char_cursor#130 char_cursor zp ZP_WORD:10 1.5750000000000004
(byte*) char_cursor#131 char_cursor zp ZP_WORD:10 5.25
(byte*) char_cursor#132 char_cursor zp ZP_WORD:10 3.0
(byte*) char_cursor#134 char_cursor zp ZP_WORD:10 3.0
(byte*) char_cursor#136 char_cursor zp ZP_WORD:10 7.0
(byte*) char_cursor#137 char_cursor zp ZP_WORD:10 3.9999999999999996
(byte*) char_cursor#149 char_cursor zp ZP_WORD:10 28.0
(byte*) char_cursor#17 char_cursor zp ZP_WORD:10 0.8095238095238098
(byte*~) char_cursor#188 char_cursor zp ZP_WORD:10 4.0
(byte*~) char_cursor#189 char_cursor zp ZP_WORD:10 4.0
(byte*~) char_cursor#222 char_cursor zp ZP_WORD:10 4.0
(byte*) char_cursor#30 char_cursor zp ZP_WORD:10 0.1951219512195122
(byte*) char_cursor#82 char_cursor zp ZP_WORD:10 6.0
(byte*) char_cursor#1 char_cursor zp ZP_WORD:14 11.0
(byte*) char_cursor#103 char_cursor zp ZP_WORD:14 6.0
(byte*) char_cursor#104 char_cursor zp ZP_WORD:14 0.8148148148148144
(byte*) char_cursor#116 char_cursor zp ZP_WORD:14 0.1951219512195122
(byte*) char_cursor#166 char_cursor zp ZP_WORD:14 1.365384615384616
(byte*) char_cursor#167 char_cursor zp ZP_WORD:14 6.25
(byte*) char_cursor#168 char_cursor zp ZP_WORD:14 3.0
(byte*) char_cursor#170 char_cursor zp ZP_WORD:14 3.0
(byte*) char_cursor#172 char_cursor zp ZP_WORD:14 11.0
(byte*) char_cursor#174 char_cursor zp ZP_WORD:14 3.9999999999999996
(byte*) char_cursor#189 char_cursor zp ZP_WORD:14 38.0
(byte*~) char_cursor#239 char_cursor zp ZP_WORD:14 4.0
(byte*~) char_cursor#240 char_cursor zp ZP_WORD:14 4.0
(byte*~) char_cursor#244 char_cursor zp ZP_WORD:14 4.0
(byte*~) char_cursor#245 char_cursor zp ZP_WORD:14 4.0
(byte*~) char_cursor#282 char_cursor zp ZP_WORD:14 4.0
(byte*) line_cursor
(byte*) line_cursor#1 line_cursor zp ZP_WORD:4 0.6338028169014083
(byte*) line_cursor#10 line_cursor zp ZP_WORD:4 0.09523809523809523
(byte*) line_cursor#23 line_cursor zp ZP_WORD:4 24.0
(byte*) line_cursor#45 line_cursor zp ZP_WORD:4 10.0
(byte*) line_cursor#1 line_cursor zp ZP_WORD:6 0.42063492063492064
(byte*) line_cursor#11 line_cursor zp ZP_WORD:6 0.09523809523809523
(byte*) line_cursor#29 line_cursor zp ZP_WORD:6 24.0
(byte*) line_cursor#57 line_cursor zp ZP_WORD:6 14.0
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@5
(label) main::@6
(label) main::@return
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
(byte~) mul16u::$1 reg byte a 2002.0
(label) mul16u::@1
(label) mul16u::@2
(label) mul16u::@4
(label) mul16u::@7
(label) mul16u::@return
(word) mul16u::a
(word) mul16u::a#0 a zp ZP_WORD:8 1001.0
(word) mul16u::a#1 a zp ZP_WORD:8 34.33333333333333
(word) mul16u::a#2 a zp ZP_WORD:8 667.6666666666667
(word) mul16u::b
(word) mul16u::b#0 b zp ZP_WORD:4 103.0
(dword) mul16u::mb
(dword) mul16u::mb#0 mb zp ZP_DWORD:20 4.0
(dword) mul16u::mb#1 mb zp ZP_DWORD:20 2002.0
(dword) mul16u::mb#2 mb zp ZP_DWORD:20 429.2857142857143
(dword) mul16u::res
(dword) mul16u::res#1 res zp ZP_DWORD:16 2002.0
(dword) mul16u::res#2 res zp ZP_DWORD:16 517.3333333333334
(dword) mul16u::res#6 res zp ZP_DWORD:16 1001.0
(dword) mul16u::return
(dword) mul16u::return#2 return zp ZP_DWORD:16 202.0
(void()) mul16u_compare()
(label) mul16u_compare::@1
(label) mul16u_compare::@10
(label) mul16u_compare::@11
(label) mul16u_compare::@13
(label) mul16u_compare::@2
(label) mul16u_compare::@3
(label) mul16u_compare::@4
(label) mul16u_compare::@5
(label) mul16u_compare::@6
(label) mul16u_compare::@8
(label) mul16u_compare::@9
(label) mul16u_compare::@return
(word) mul16u_compare::a
(word) mul16u_compare::a#1 a zp ZP_WORD:2 19.857142857142858
(word) mul16u_compare::a#2 a zp ZP_WORD:2 213.0
(word) mul16u_compare::a#5 a zp ZP_WORD:2 22.0
(word) mul16u_compare::b
(word) mul16u_compare::b#1 b zp ZP_WORD:4 19.857142857142858
(word) mul16u_compare::b#2 b zp ZP_WORD:4 106.5
(word) mul16u_compare::b#5 b zp ZP_WORD:4 22.0
(byte) mul16u_compare::i
(byte) mul16u_compare::i#1 reg byte x 16.5
(byte) mul16u_compare::i#9 reg byte x 1.1
(byte) mul16u_compare::j
(byte) mul16u_compare::j#1 reg byte y 151.5
(byte) mul16u_compare::j#2 reg byte y 11.882352941176471
(dword) mul16u_compare::mn
(dword) mul16u_compare::mn#0 mn zp ZP_DWORD:16 22.666666666666664
(dword) mul16u_compare::ms
(dword) mul16u_compare::ms#0 ms zp ZP_DWORD:10 15.692307692307692
(byte) mul16u_compare::ok
(byte) mul16u_compare::ok#2 reg byte a 101.0
(const string) mul16u_compare::str str = (string) "word multiply results match!@"
(void()) mul16u_error((word) mul16u_error::a , (word) mul16u_error::b , (dword) mul16u_error::ms , (dword) mul16u_error::mn)
(label) mul16u_error::@1
(label) mul16u_error::@2
(label) mul16u_error::@3
(label) mul16u_error::@4
(label) mul16u_error::@5
(label) mul16u_error::@6
(label) mul16u_error::@7
(label) mul16u_error::@8
(label) mul16u_error::@return
(word) mul16u_error::a
(word) mul16u_error::a#0 a zp ZP_WORD:2 0.6666666666666666
(word) mul16u_error::b
(word) mul16u_error::b#0 b zp ZP_WORD:4 0.4444444444444444
(dword) mul16u_error::mn
(dword) mul16u_error::mn#0 mn zp ZP_DWORD:16 0.26666666666666666
(dword) mul16u_error::ms
(dword) mul16u_error::ms#0 ms zp ZP_DWORD:10 0.3333333333333333
(const string) mul16u_error::str str = (string) "word multiply mismatch @"
(const string) mul16u_error::str1 str1 = (string) "*@"
(const string) mul16u_error::str2 str2 = (string) " slow:@"
(const string) mul16u_error::str3 str3 = (string) " / normal:@"
(signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b)
(byte~) mul8s::$12 reg byte a 4.0
(byte/signed byte/word/signed word/dword/signed dword~) mul8s::$16 reg byte a 4.0
@ -44,17 +126,17 @@
(label) mul8s::@6
(label) mul8s::@return
(signed byte) mul8s::a
(signed byte) mul8s::a#0 a zp ZP_BYTE:2 7.357142857142858
(signed byte) mul8s::a#0 a zp ZP_BYTE:24 7.357142857142858
(signed byte) mul8s::b
(signed byte) mul8s::b#0 reg byte y 9.363636363636363
(word) mul8s::m
(word) mul8s::m#0 m zp ZP_WORD:12 2.0
(word) mul8s::m#1 m zp ZP_WORD:12 4.0
(word) mul8s::m#2 m zp ZP_WORD:12 4.0
(word) mul8s::m#4 m zp ZP_WORD:12 1.3333333333333333
(word) mul8s::m#5 m zp ZP_WORD:12 2.5
(word) mul8s::m#0 m zp ZP_WORD:4 2.0
(word) mul8s::m#1 m zp ZP_WORD:4 4.0
(word) mul8s::m#2 m zp ZP_WORD:4 4.0
(word) mul8s::m#4 m zp ZP_WORD:4 1.3333333333333333
(word) mul8s::m#5 m zp ZP_WORD:4 2.5
(signed word) mul8s::return
(signed word) mul8s::return#2 return zp ZP_WORD:12 202.0
(signed word) mul8s::return#2 return zp ZP_WORD:4 202.0
(void()) mul8s_compare()
(label) mul8s_compare::@1
(label) mul8s_compare::@10
@ -72,17 +154,17 @@
(label) mul8s_compare::@8
(label) mul8s_compare::@return
(signed byte) mul8s_compare::a
(signed byte) mul8s_compare::a#1 a zp ZP_BYTE:2 16.5
(signed byte) mul8s_compare::a#7 a zp ZP_BYTE:2 12.11111111111111
(signed byte) mul8s_compare::a#1 a zp ZP_BYTE:24 16.5
(signed byte) mul8s_compare::a#7 a zp ZP_BYTE:24 12.11111111111111
(signed byte) mul8s_compare::b
(signed byte) mul8s_compare::b#1 b zp ZP_BYTE:3 151.5
(signed byte) mul8s_compare::b#10 b zp ZP_BYTE:3 20.279999999999998
(signed byte) mul8s_compare::b#1 b zp ZP_BYTE:25 151.5
(signed byte) mul8s_compare::b#10 b zp ZP_BYTE:25 20.279999999999998
(signed word) mul8s_compare::mf
(signed word) mul8s_compare::mf#0 mf zp ZP_WORD:14 11.333333333333332
(signed word) mul8s_compare::mf#0 mf zp ZP_WORD:26 11.333333333333332
(signed word) mul8s_compare::mn
(signed word) mul8s_compare::mn#0 mn zp ZP_WORD:12 17.0
(signed word) mul8s_compare::mn#0 mn zp ZP_WORD:4 17.0
(signed word) mul8s_compare::ms
(signed word) mul8s_compare::ms#0 ms zp ZP_WORD:8 14.523809523809522
(signed word) mul8s_compare::ms#0 ms zp ZP_WORD:2 14.523809523809522
(byte) mul8s_compare::ok
(byte) mul8s_compare::ok#3 reg byte x 202.0
(byte) mul8s_compare::ok#4 reg byte x 33.666666666666664
@ -102,13 +184,13 @@
(signed byte) mul8s_error::a
(signed byte) mul8s_error::a#0 reg byte x 0.5714285714285714
(signed byte) mul8s_error::b
(signed byte) mul8s_error::b#0 b zp ZP_BYTE:3 0.4
(signed byte) mul8s_error::b#0 b zp ZP_BYTE:25 0.4
(signed word) mul8s_error::mf
(signed word) mul8s_error::mf#0 mf zp ZP_WORD:14 0.21052631578947367
(signed word) mul8s_error::mf#0 mf zp ZP_WORD:26 0.21052631578947367
(signed word) mul8s_error::mn
(signed word) mul8s_error::mn#0 mn zp ZP_WORD:12 0.25
(signed word) mul8s_error::mn#0 mn zp ZP_WORD:4 0.25
(signed word) mul8s_error::ms
(signed word) mul8s_error::ms#0 ms zp ZP_WORD:8 0.3076923076923077
(signed word) mul8s_error::ms#0 ms zp ZP_WORD:2 0.3076923076923077
(const string) mul8s_error::str str = (string) "signed multiply mismatch @"
(const string) mul8s_error::str1 str1 = (string) "*@"
(const string) mul8s_error::str2 str2 = (string) " slow:@"
@ -132,16 +214,16 @@
(byte) mul8u::b#2 reg byte a 105.0
(byte~) mul8u::b#3 reg byte a 2.0
(word) mul8u::mb
(word) mul8u::mb#0 mb zp ZP_WORD:6 4.0
(word) mul8u::mb#1 mb zp ZP_WORD:6 2002.0
(word) mul8u::mb#2 mb zp ZP_WORD:6 429.2857142857143
(word) mul8u::mb#0 mb zp ZP_WORD:8 4.0
(word) mul8u::mb#1 mb zp ZP_WORD:8 2002.0
(word) mul8u::mb#2 mb zp ZP_WORD:8 429.2857142857143
(word) mul8u::res
(word) mul8u::res#1 res zp ZP_WORD:12 2002.0
(word) mul8u::res#2 res zp ZP_WORD:12 443.7142857142857
(word) mul8u::res#6 res zp ZP_WORD:12 1001.0
(word) mul8u::res#1 res zp ZP_WORD:4 2002.0
(word) mul8u::res#2 res zp ZP_WORD:4 443.7142857142857
(word) mul8u::res#6 res zp ZP_WORD:4 1001.0
(word) mul8u::return
(word) mul8u::return#2 return zp ZP_WORD:12 4.0
(word) mul8u::return#3 return zp ZP_WORD:12 202.0
(word) mul8u::return#2 return zp ZP_WORD:4 4.0
(word) mul8u::return#3 return zp ZP_WORD:4 202.0
(void()) mul8u_compare()
(label) mul8u_compare::@1
(label) mul8u_compare::@10
@ -159,17 +241,17 @@
(label) mul8u_compare::@8
(label) mul8u_compare::@return
(byte) mul8u_compare::a
(byte) mul8u_compare::a#1 a zp ZP_BYTE:2 16.5
(byte) mul8u_compare::a#7 a zp ZP_BYTE:2 12.11111111111111
(byte) mul8u_compare::a#1 a zp ZP_BYTE:24 16.5
(byte) mul8u_compare::a#7 a zp ZP_BYTE:24 12.11111111111111
(byte) mul8u_compare::b
(byte) mul8u_compare::b#1 b zp ZP_BYTE:3 151.5
(byte) mul8u_compare::b#10 b zp ZP_BYTE:3 20.279999999999998
(byte) mul8u_compare::b#1 b zp ZP_BYTE:25 151.5
(byte) mul8u_compare::b#10 b zp ZP_BYTE:25 20.279999999999998
(word) mul8u_compare::mf
(word) mul8u_compare::mf#0 mf zp ZP_WORD:14 11.333333333333332
(word) mul8u_compare::mf#0 mf zp ZP_WORD:26 11.333333333333332
(word) mul8u_compare::mn
(word) mul8u_compare::mn#0 mn zp ZP_WORD:12 17.0
(word) mul8u_compare::mn#0 mn zp ZP_WORD:4 17.0
(word) mul8u_compare::ms
(word) mul8u_compare::ms#0 ms zp ZP_WORD:8 14.523809523809522
(word) mul8u_compare::ms#0 ms zp ZP_WORD:2 14.523809523809522
(byte) mul8u_compare::ok
(byte) mul8u_compare::ok#3 reg byte x 202.0
(byte) mul8u_compare::ok#4 reg byte x 33.666666666666664
@ -189,13 +271,13 @@
(byte) mul8u_error::a
(byte) mul8u_error::a#0 reg byte x 0.5714285714285714
(byte) mul8u_error::b
(byte) mul8u_error::b#0 b zp ZP_BYTE:3 0.4
(byte) mul8u_error::b#0 b zp ZP_BYTE:25 0.4
(word) mul8u_error::mf
(word) mul8u_error::mf#0 mf zp ZP_WORD:14 0.21052631578947367
(word) mul8u_error::mf#0 mf zp ZP_WORD:26 0.21052631578947367
(word) mul8u_error::mn
(word) mul8u_error::mn#0 mn zp ZP_WORD:12 0.25
(word) mul8u_error::mn#0 mn zp ZP_WORD:4 0.25
(word) mul8u_error::ms
(word) mul8u_error::ms#0 ms zp ZP_WORD:8 0.3076923076923077
(word) mul8u_error::ms#0 ms zp ZP_WORD:2 0.3076923076923077
(const string) mul8u_error::str str = (string) "multiply mismatch @"
(const string) mul8u_error::str1 str1 = (string) "*@"
(const string) mul8u_error::str2 str2 = (string) " slow:@"
@ -223,15 +305,15 @@
(signed byte) mulf8s::a
(signed byte) mulf8s::a#0 reg byte y 7.357142857142858
(signed byte) mulf8s::b
(signed byte) mulf8s::b#0 b zp ZP_BYTE:3 9.363636363636363
(signed byte) mulf8s::b#0 b zp ZP_BYTE:25 9.363636363636363
(word) mulf8s::m
(word) mulf8s::m#0 m zp ZP_WORD:14 2.0
(word) mulf8s::m#1 m zp ZP_WORD:14 4.0
(word) mulf8s::m#2 m zp ZP_WORD:14 4.0
(word) mulf8s::m#4 m zp ZP_WORD:14 1.3333333333333333
(word) mulf8s::m#5 m zp ZP_WORD:14 2.5
(word) mulf8s::m#0 m zp ZP_WORD:26 2.0
(word) mulf8s::m#1 m zp ZP_WORD:26 4.0
(word) mulf8s::m#2 m zp ZP_WORD:26 4.0
(word) mulf8s::m#4 m zp ZP_WORD:26 1.3333333333333333
(word) mulf8s::m#5 m zp ZP_WORD:26 2.5
(signed word) mulf8s::return
(signed word) mulf8s::return#2 return zp ZP_WORD:14 202.0
(signed word) mulf8s::return#2 return zp ZP_WORD:26 202.0
(word()) mulf8u((byte) mulf8u::a , (byte) mulf8u::b)
(label) mulf8u::@return
(byte) mulf8u::a
@ -247,9 +329,9 @@
(byte*) mulf8u::memB
(const byte*) mulf8u::memB#0 memB = ((byte*))(byte/word/signed word/dword/signed dword) 255
(word) mulf8u::return
(word) mulf8u::return#0 return zp ZP_WORD:14 26.25
(word) mulf8u::return#2 return zp ZP_WORD:14 4.0
(word) mulf8u::return#3 return zp ZP_WORD:14 202.0
(word) mulf8u::return#0 return zp ZP_WORD:26 26.25
(word) mulf8u::return#2 return zp ZP_WORD:26 4.0
(word) mulf8u::return#3 return zp ZP_WORD:26 202.0
(void()) mulf_init()
(byte~) mulf_init::$2 reg byte a 22.0
(byte~) mulf_init::$5 reg byte a 22.0
@ -266,29 +348,29 @@
(byte) mulf_init::c#1 reg byte x 2.357142857142857
(byte) mulf_init::c#2 reg byte x 22.0
(byte) mulf_init::dir
(byte) mulf_init::dir#2 dir zp ZP_BYTE:2 4.714285714285714
(byte) mulf_init::dir#3 dir zp ZP_BYTE:2 7.333333333333333
(byte) mulf_init::dir#2 dir zp ZP_BYTE:24 4.714285714285714
(byte) mulf_init::dir#3 dir zp ZP_BYTE:24 7.333333333333333
(word) mulf_init::sqr
(word) mulf_init::sqr#1 sqr zp ZP_WORD:8 7.333333333333333
(word) mulf_init::sqr#2 sqr zp ZP_WORD:8 22.0
(word) mulf_init::sqr#3 sqr zp ZP_WORD:8 9.166666666666666
(word) mulf_init::sqr#4 sqr zp ZP_WORD:8 6.6000000000000005
(word) mulf_init::sqr#1 sqr zp ZP_WORD:6 7.333333333333333
(word) mulf_init::sqr#2 sqr zp ZP_WORD:6 22.0
(word) mulf_init::sqr#3 sqr zp ZP_WORD:6 9.166666666666666
(word) mulf_init::sqr#4 sqr zp ZP_WORD:6 6.6000000000000005
(byte*) mulf_init::sqr1_hi
(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp ZP_WORD:6 5.5
(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp ZP_WORD:6 3.0
(byte*) mulf_init::sqr1_hi#1 sqr1_hi zp ZP_WORD:4 5.5
(byte*) mulf_init::sqr1_hi#2 sqr1_hi zp ZP_WORD:4 3.0
(byte*) mulf_init::sqr1_lo
(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp ZP_WORD:4 16.5
(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp ZP_WORD:4 2.5384615384615383
(byte*) mulf_init::sqr1_lo#1 sqr1_lo zp ZP_WORD:2 16.5
(byte*) mulf_init::sqr1_lo#2 sqr1_lo zp ZP_WORD:2 2.5384615384615383
(byte*) mulf_init::sqr2_hi
(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp ZP_WORD:6 3.142857142857143
(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp ZP_WORD:6 11.0
(byte*) mulf_init::sqr2_hi#1 sqr2_hi zp ZP_WORD:4 3.142857142857143
(byte*) mulf_init::sqr2_hi#2 sqr2_hi zp ZP_WORD:4 11.0
(byte*) mulf_init::sqr2_lo
(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp ZP_WORD:4 16.5
(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp ZP_WORD:4 4.125
(byte*) mulf_init::sqr2_lo#1 sqr2_lo zp ZP_WORD:2 16.5
(byte*) mulf_init::sqr2_lo#2 sqr2_lo zp ZP_WORD:2 4.125
(byte) mulf_init::x_2
(byte) mulf_init::x_2#1 x_2 zp ZP_BYTE:2 11.0
(byte) mulf_init::x_2#2 x_2 zp ZP_BYTE:2 4.888888888888889
(byte) mulf_init::x_2#3 x_2 zp ZP_BYTE:2 8.25
(byte) mulf_init::x_2#1 x_2 zp ZP_BYTE:24 11.0
(byte) mulf_init::x_2#2 x_2 zp ZP_BYTE:24 4.888888888888889
(byte) mulf_init::x_2#3 x_2 zp ZP_BYTE:24 8.25
(byte) mulf_init::x_255
(byte) mulf_init::x_255#1 reg byte x 5.5
(byte) mulf_init::x_255#2 reg byte x 11.0
@ -315,14 +397,31 @@
(label) mulf_tables_cmp::@8
(label) mulf_tables_cmp::@return
(byte*) mulf_tables_cmp::asm_sqr
(byte*) mulf_tables_cmp::asm_sqr#1 asm_sqr zp ZP_WORD:8 7.333333333333333
(byte*) mulf_tables_cmp::asm_sqr#2 asm_sqr zp ZP_WORD:8 8.25
(byte*) mulf_tables_cmp::asm_sqr#1 asm_sqr zp ZP_WORD:2 7.333333333333333
(byte*) mulf_tables_cmp::asm_sqr#2 asm_sqr zp ZP_WORD:2 8.25
(byte*) mulf_tables_cmp::kc_sqr
(byte*) mulf_tables_cmp::kc_sqr#1 kc_sqr zp ZP_WORD:4 16.5
(byte*) mulf_tables_cmp::kc_sqr#2 kc_sqr zp ZP_WORD:4 3.666666666666667
(const string) mulf_tables_cmp::str str = (string) "multiply table mismatch at @"
(const string) mulf_tables_cmp::str1 str1 = (string) " / @"
(const string) mulf_tables_cmp::str2 str2 = (string) "multiply tables match!@"
(dword()) muls16u((word) muls16u::a , (word) muls16u::b)
(label) muls16u::@1
(label) muls16u::@2
(label) muls16u::@return
(word) muls16u::a
(word) muls16u::a#0 a zp ZP_WORD:2 157.71428571428572
(word) muls16u::b
(word) muls16u::b#0 b zp ZP_WORD:4 183.66666666666669
(word) muls16u::i
(word) muls16u::i#1 i zp ZP_WORD:8 1501.5
(word) muls16u::i#2 i zp ZP_WORD:8 1001.0
(dword) muls16u::m
(dword) muls16u::m#1 m zp ZP_DWORD:10 1001.0
(dword) muls16u::m#3 m zp ZP_DWORD:10 2002.0
(dword) muls16u::return
(dword) muls16u::return#0 return zp ZP_DWORD:10 367.33333333333337
(dword) muls16u::return#2 return zp ZP_DWORD:10 202.0
(signed word()) muls8s((signed byte) muls8s::a , (signed byte) muls8s::b)
(label) muls8s::@1
(label) muls8s::@2
@ -330,7 +429,7 @@
(label) muls8s::@5
(label) muls8s::@return
(signed byte) muls8s::a
(signed byte) muls8s::a#0 a zp ZP_BYTE:2 175.58333333333334
(signed byte) muls8s::a#0 a zp ZP_BYTE:24 175.58333333333334
(signed byte) muls8s::b
(signed byte) muls8s::b#0 reg byte x 191.1818181818182
(signed byte) muls8s::i
@ -340,30 +439,30 @@
(signed byte) muls8s::j#1 reg byte y 1501.5
(signed byte) muls8s::j#2 reg byte y 1001.0
(signed word) muls8s::m
(signed word) muls8s::m#1 m zp ZP_WORD:8 1001.0
(signed word) muls8s::m#2 m zp ZP_WORD:8 1001.0
(signed word) muls8s::m#3 m zp ZP_WORD:8 2002.0
(signed word) muls8s::m#5 m zp ZP_WORD:8 2002.0
(signed word) muls8s::m#1 m zp ZP_WORD:2 1001.0
(signed word) muls8s::m#2 m zp ZP_WORD:2 1001.0
(signed word) muls8s::m#3 m zp ZP_WORD:2 2002.0
(signed word) muls8s::m#5 m zp ZP_WORD:2 2002.0
(signed word) muls8s::return
(signed word) muls8s::return#0 return zp ZP_WORD:8 701.0
(signed word) muls8s::return#2 return zp ZP_WORD:8 202.0
(signed word) muls8s::return#0 return zp ZP_WORD:2 701.0
(signed word) muls8s::return#2 return zp ZP_WORD:2 202.0
(word()) muls8u((byte) muls8u::a , (byte) muls8u::b)
(label) muls8u::@1
(label) muls8u::@2
(label) muls8u::@return
(byte) muls8u::a
(byte) muls8u::a#0 a zp ZP_BYTE:2 157.71428571428572
(byte) muls8u::a#0 a zp ZP_BYTE:24 157.71428571428572
(byte) muls8u::b
(byte) muls8u::b#0 reg byte x 183.66666666666669
(byte) muls8u::i
(byte) muls8u::i#1 reg byte y 1501.5
(byte) muls8u::i#2 reg byte y 1001.0
(word) muls8u::m
(word) muls8u::m#1 m zp ZP_WORD:8 1001.0
(word) muls8u::m#3 m zp ZP_WORD:8 2002.0
(word) muls8u::m#1 m zp ZP_WORD:2 1001.0
(word) muls8u::m#3 m zp ZP_WORD:2 2002.0
(word) muls8u::return
(word) muls8u::return#0 return zp ZP_WORD:8 367.33333333333337
(word) muls8u::return#2 return zp ZP_WORD:8 202.0
(word) muls8u::return#0 return zp ZP_WORD:2 367.33333333333337
(word) muls8u::return#2 return zp ZP_WORD:2 202.0
(void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte a 4.0
(byte~) print_byte::$2 reg byte a 4.0
@ -388,8 +487,15 @@
(label) print_cls::@1
(label) print_cls::@return
(byte*) print_cls::sc
(byte*) print_cls::sc#1 sc zp ZP_WORD:4 16.5
(byte*) print_cls::sc#2 sc zp ZP_WORD:4 16.5
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
(void()) print_dword((dword) print_dword::dw)
(label) print_dword::@1
(label) print_dword::@return
(dword) print_dword::dw
(dword) print_dword::dw#0 dw zp ZP_DWORD:10 4.0
(dword) print_dword::dw#1 dw zp ZP_DWORD:10 4.0
(dword) print_dword::dw#2 dw zp ZP_DWORD:10 2.6666666666666665
(void()) print_ln()
(label) print_ln::@1
(label) print_ln::@return
@ -409,47 +515,57 @@
(label) print_str::@2
(label) print_str::@return
(byte*) print_str::str
(byte*) print_str::str#0 str zp ZP_WORD:6 22.0
(byte*) print_str::str#16 str zp ZP_WORD:6 11.5
(byte*) print_str::str#18 str zp ZP_WORD:6 2.0
(byte*) print_str::str#0 str zp ZP_WORD:8 22.0
(byte*) print_str::str#21 str zp ZP_WORD:8 11.5
(byte*) print_str::str#23 str zp ZP_WORD:8 2.0
(void()) print_sword((signed word) print_sword::w)
(label) print_sword::@1
(label) print_sword::@2
(label) print_sword::@4
(label) print_sword::@return
(signed word) print_sword::w
(signed word) print_sword::w#0 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#2 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#3 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#4 w zp ZP_WORD:8 3.0
(signed word) print_sword::w#5 w zp ZP_WORD:8 4.0
(signed word) print_sword::w#0 w zp ZP_WORD:2 4.0
(signed word) print_sword::w#1 w zp ZP_WORD:2 4.0
(signed word) print_sword::w#2 w zp ZP_WORD:2 4.0
(signed word) print_sword::w#3 w zp ZP_WORD:2 4.0
(signed word) print_sword::w#4 w zp ZP_WORD:2 3.0
(signed word) print_sword::w#5 w zp ZP_WORD:2 4.0
(void()) print_word((word) print_word::w)
(label) print_word::@1
(label) print_word::@return
(word) print_word::w
(word~) print_word::w#11 w zp ZP_WORD:8 4.0
(word~) print_word::w#12 w zp ZP_WORD:8 4.0
(word~) print_word::w#13 w zp ZP_WORD:8 4.0
(word) print_word::w#3 w zp ZP_WORD:8 4.0
(word) print_word::w#4 w zp ZP_WORD:8 4.0
(word) print_word::w#5 w zp ZP_WORD:8 4.0
(word) print_word::w#6 w zp ZP_WORD:8 5.333333333333333
(word) print_word::w#1 w zp ZP_WORD:2 4.0
(word) print_word::w#10 w zp ZP_WORD:2 8.0
(word~) print_word::w#17 w zp ZP_WORD:2 4.0
(word~) print_word::w#18 w zp ZP_WORD:2 4.0
(word) print_word::w#2 w zp ZP_WORD:2 4.0
(word~) print_word::w#21 w zp ZP_WORD:2 4.0
(word) print_word::w#5 w zp ZP_WORD:2 4.0
(word) print_word::w#6 w zp ZP_WORD:2 4.0
(word) print_word::w#7 w zp ZP_WORD:2 4.0
(word) print_word::w#8 w zp ZP_WORD:2 4.0
(word) print_word::w#9 w zp ZP_WORD:2 4.0
zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ]
zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mulf8s::b#0 mul8s_error::b#0 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ]
reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
zp ZP_WORD:4 [ line_cursor#23 line_cursor#45 line_cursor#1 line_cursor#10 mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ]
zp ZP_WORD:6 [ print_str::str#16 print_str::str#18 print_str::str#0 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
zp ZP_WORD:8 [ print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 print_word::w#6 print_word::w#3 print_word::w#4 print_word::w#5 print_word::w#11 print_word::w#12 print_word::w#13 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_error::ms#0 mul8s_compare::ms#0 muls8s::return#2 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 mul8u_error::ms#0 mul8u_compare::ms#0 muls8u::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
reg byte x [ mul16u_compare::i#9 mul16u_compare::i#1 ]
zp ZP_WORD:2 [ mul16u_compare::a#2 mul16u_compare::a#5 mul16u_compare::a#1 muls16u::a#0 mul16u_error::a#0 print_word::w#10 print_word::w#8 print_word::w#9 print_word::w#5 print_word::w#6 print_word::w#7 print_word::w#17 print_word::w#18 print_word::w#1 print_word::w#2 print_word::w#21 print_sword::w#5 print_sword::w#4 print_sword::w#1 print_sword::w#2 print_sword::w#3 print_sword::w#0 mulf_tables_cmp::asm_sqr#2 mulf_tables_cmp::asm_sqr#1 mul8s_error::ms#0 mul8s_compare::ms#0 muls8s::return#2 muls8s::m#5 muls8s::return#0 muls8s::m#3 muls8s::m#1 muls8s::m#2 mul8u_error::ms#0 mul8u_compare::ms#0 muls8u::return#2 muls8u::return#0 muls8u::m#3 muls8u::m#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ]
zp ZP_WORD:4 [ mul16u_compare::b#2 mul16u_compare::b#5 mul16u_compare::b#1 muls16u::b#0 mul16u::b#0 mul16u_error::b#0 mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8s_compare::mn#0 mul8s_error::mn#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8u_compare::mn#0 mul8u_error::mn#0 mulf_tables_cmp::kc_sqr#2 mulf_tables_cmp::kc_sqr#1 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
reg byte y [ mul16u_compare::j#2 mul16u_compare::j#1 ]
reg byte a [ mul16u_compare::ok#2 ]
zp ZP_WORD:6 [ line_cursor#29 line_cursor#57 line_cursor#1 line_cursor#11 mulf_init::sqr#3 mulf_init::sqr#4 mulf_init::sqr#1 mulf_init::sqr#2 ]
zp ZP_WORD:8 [ print_str::str#21 print_str::str#23 print_str::str#0 mul16u::a#2 mul16u::a#1 mul16u::a#0 muls16u::i#2 muls16u::i#1 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
zp ZP_DWORD:10 [ print_dword::dw#2 print_dword::dw#0 print_dword::dw#1 mul16u_error::ms#0 mul16u_compare::ms#0 muls16u::return#2 muls16u::return#0 muls16u::m#3 muls16u::m#1 ]
reg byte x [ print_byte::b#5 print_byte::b#3 print_byte::b#4 print_byte::b#9 print_byte::b#1 print_byte::b#2 ]
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
zp ZP_WORD:10 [ char_cursor#82 char_cursor#137 char_cursor#136 char_cursor#132 char_cursor#149 char_cursor#188 char_cursor#189 char_cursor#131 char_cursor#130 char_cursor#17 char_cursor#30 char_cursor#1 char_cursor#134 char_cursor#222 ]
zp ZP_WORD:14 [ char_cursor#103 char_cursor#174 char_cursor#172 char_cursor#189 char_cursor#239 char_cursor#240 char_cursor#167 char_cursor#166 char_cursor#104 char_cursor#244 char_cursor#245 char_cursor#116 char_cursor#1 char_cursor#168 char_cursor#170 char_cursor#282 ]
zp ZP_DWORD:16 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mul16u_compare::mn#0 mul16u_error::mn#0 ]
zp ZP_DWORD:20 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
zp ZP_BYTE:24 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ]
zp ZP_BYTE:25 [ mul8s_compare::b#10 mul8s_compare::b#1 mulf8s::b#0 mul8s_error::b#0 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 ]
reg byte x [ mul8s_compare::ok#3 mul8s_compare::ok#4 ]
reg byte x [ print_sbyte::b#4 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#2 print_sbyte::b#0 ]
zp ZP_WORD:12 [ mul8s::m#4 mul8s::m#5 mul8s::m#1 mul8s::m#0 mul8s::m#2 mul8s::return#2 mul8s_compare::mn#0 mul8s_error::mn#0 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 mul8u_compare::mn#0 mul8u_error::mn#0 ]
reg byte a [ mul8u::b#2 mul8u::b#3 mul8u::b#1 ]
reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ]
zp ZP_WORD:14 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 mulf8s::return#2 mul8s_compare::mf#0 mul8s_error::mf#0 mulf8u::return#2 mulf8u::return#0 mulf8u::return#3 mul8u_compare::mf#0 mul8u_error::mf#0 ]
zp ZP_WORD:26 [ mulf8s::m#4 mulf8s::m#5 mulf8s::m#1 mulf8s::m#0 mulf8s::m#2 mulf8s::return#2 mul8s_compare::mf#0 mul8s_error::mf#0 mulf8u::return#2 mulf8u::return#0 mulf8u::return#3 mul8u_compare::mf#0 mul8u_error::mf#0 ]
reg byte a [ mulf8u::a#2 mulf8u::a#1 mulf8u::a#4 ]
reg byte x [ mulf8u::b#2 mulf8u::b#1 mulf8u::b#4 ]
reg byte y [ muls8s::i#2 muls8s::i#1 ]
@ -458,12 +574,13 @@ reg byte x [ mul8u_compare::ok#3 mul8u_compare::ok#4 ]
reg byte y [ muls8u::i#2 muls8u::i#1 ]
reg byte x [ mulf_init::c#2 mulf_init::c#1 ]
reg byte x [ mulf_init::x_255#2 mulf_init::x_255#1 ]
reg byte a [ print_byte::$0 ]
reg byte a [ print_byte::$2 ]
reg byte a [ mul16u::$1 ]
reg byte x [ muls8s::b#0 ]
reg byte y [ mulf8s::a#0 ]
reg byte y [ mul8s::b#0 ]
reg byte x [ mul8s_error::a#0 ]
reg byte a [ print_byte::$0 ]
reg byte a [ print_byte::$2 ]
reg byte a [ mul8s::$6 ]
reg byte a [ mul8s::$16 ]
reg byte a [ mul8s::$12 ]