mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-11-23 23:32:55 +00:00
Added test for memcpy
This commit is contained in:
parent
1e3a6a2750
commit
03e76570b8
@ -1,6 +1,6 @@
|
||||
clc
|
||||
lda {z1}
|
||||
adc {z1}
|
||||
adc {z2}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
adc #0
|
||||
|
@ -7,7 +7,8 @@ typedef word size_t ;
|
||||
void* memcpy( void* destination, void* source, size_t num ) {
|
||||
byte* src = source;
|
||||
byte* dst = destination;
|
||||
for( size_t i=0; i<num; i++) *dst++ = *src++;
|
||||
byte* src_end = (byte*)source+num;
|
||||
while(src!=src_end) *dst++ = *src++;
|
||||
return destination;
|
||||
}
|
||||
|
||||
|
@ -35,6 +35,11 @@ public class TestPrograms {
|
||||
public TestPrograms() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMemcpy0() throws IOException, URISyntaxException {
|
||||
compileAndCompare("memcpy-0", log());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBitmapPlot2() throws IOException, URISyntaxException {
|
||||
compileAndCompare("bitmap-plot-2", log());
|
||||
|
@ -22,7 +22,7 @@ void main() {
|
||||
word idx_x = 0;
|
||||
word idx_y = 0x80;
|
||||
signed word r = 0;
|
||||
byte r_add = 4;
|
||||
byte r_add = 32;
|
||||
while(true) {
|
||||
signed word cos_x = SINUS[idx_x];
|
||||
signed dword xpos = mul16s(r, cos_x);
|
||||
@ -37,7 +37,7 @@ void main() {
|
||||
idx_y += r_add;
|
||||
if(idx_y>=512) idx_y = 0;
|
||||
r += r_add;
|
||||
//if((idx_x==0) && (r_add!=1)) r_add /= 2;
|
||||
if((idx_x==0) && (r_add!=1)) r_add /= 2;
|
||||
if(r>=512*12+256) break;
|
||||
}
|
||||
while(true)
|
||||
|
18
src/test/kc/memcpy-0.kc
Normal file
18
src/test/kc/memcpy-0.kc
Normal file
@ -0,0 +1,18 @@
|
||||
// Test memcpy - copy charset and screen using memcpy() from stdlib string
|
||||
|
||||
import "c64"
|
||||
import "string"
|
||||
|
||||
const byte* CHARSET = 0x2000;
|
||||
const byte* SCREEN = 0x0400;
|
||||
const byte* SCREEN_COPY = 0x2400;
|
||||
|
||||
void main() {
|
||||
*D018 = toD018(SCREEN_COPY, CHARSET);
|
||||
memcpy(SCREEN_COPY, SCREEN, 0x0400);
|
||||
asm { sei }
|
||||
*PROCPORT = PROCPORT_RAM_CHARROM;
|
||||
memcpy(CHARSET, CHARGEN, 0x0800);
|
||||
*PROCPORT = PROCPORT_BASIC_KERNEL_IO;
|
||||
asm { cli }
|
||||
}
|
@ -44,8 +44,8 @@
|
||||
.const PI_HALF_u4f28 = $1921fb54
|
||||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
.label rem16u = $2b
|
||||
.label frame_cnt = $31
|
||||
.label rem16u = $2c
|
||||
.label frame_cnt = $32
|
||||
bbegin:
|
||||
// Counts frames - updated by the IRQ
|
||||
lda #1
|
||||
@ -53,24 +53,24 @@ bbegin:
|
||||
jsr main
|
||||
rts
|
||||
main: {
|
||||
.const r_add = 4
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
|
||||
.label _9 = $32
|
||||
.label _11 = $32
|
||||
.label _15 = $34
|
||||
.label _17 = $34
|
||||
.label _18 = $34
|
||||
.label _28 = 8
|
||||
.label _29 = 8
|
||||
.label cos_x = 8
|
||||
.label xpos = $a
|
||||
.label sin_y = 8
|
||||
.label ypos = $a
|
||||
.label _9 = $33
|
||||
.label _11 = $33
|
||||
.label _15 = $35
|
||||
.label _17 = $35
|
||||
.label _18 = $35
|
||||
.label _32 = 9
|
||||
.label _33 = 9
|
||||
.label cos_x = 9
|
||||
.label xpos = $b
|
||||
.label sin_y = 9
|
||||
.label ypos = $b
|
||||
.label idx_x = 2
|
||||
.label idx_y = 6
|
||||
.label r = 4
|
||||
.label _30 = 8
|
||||
.label _31 = 8
|
||||
.label r_add = 8
|
||||
.label _34 = 9
|
||||
.label _35 = 9
|
||||
jsr sin16s_gen2
|
||||
jsr bitmap_init
|
||||
jsr bitmap_clear
|
||||
@ -79,6 +79,8 @@ main: {
|
||||
lda #toD0181_return
|
||||
sta D018
|
||||
jsr init_irq
|
||||
lda #$20
|
||||
sta r_add
|
||||
lda #$80
|
||||
sta idx_y
|
||||
lda #0
|
||||
@ -90,17 +92,17 @@ main: {
|
||||
b2:
|
||||
lda idx_x
|
||||
asl
|
||||
sta _28
|
||||
sta _32
|
||||
lda idx_x+1
|
||||
rol
|
||||
sta _28+1
|
||||
sta _32+1
|
||||
clc
|
||||
lda _30
|
||||
lda _34
|
||||
adc #<SINUS
|
||||
sta _30
|
||||
lda _30+1
|
||||
sta _34
|
||||
lda _34+1
|
||||
adc #>SINUS
|
||||
sta _30+1
|
||||
sta _34+1
|
||||
ldy #0
|
||||
lda (cos_x),y
|
||||
tax
|
||||
@ -130,17 +132,17 @@ main: {
|
||||
sta bitmap_plot.x+1
|
||||
lda idx_y
|
||||
asl
|
||||
sta _29
|
||||
sta _33
|
||||
lda idx_y+1
|
||||
rol
|
||||
sta _29+1
|
||||
sta _33+1
|
||||
clc
|
||||
lda _31
|
||||
lda _35
|
||||
adc #<SINUS
|
||||
sta _31
|
||||
lda _31+1
|
||||
sta _35
|
||||
lda _35+1
|
||||
adc #>SINUS
|
||||
sta _31+1
|
||||
sta _35+1
|
||||
ldy #0
|
||||
lda (sin_y),y
|
||||
tax
|
||||
@ -179,7 +181,7 @@ main: {
|
||||
jsr bitmap_plot
|
||||
ldx frame_cnt
|
||||
inc plots_per_frame,x
|
||||
lda #r_add
|
||||
lda r_add
|
||||
clc
|
||||
adc idx_x
|
||||
sta idx_x
|
||||
@ -198,7 +200,7 @@ main: {
|
||||
sta idx_x
|
||||
sta idx_x+1
|
||||
b3:
|
||||
lda #r_add
|
||||
lda r_add
|
||||
clc
|
||||
adc idx_y
|
||||
sta idx_y
|
||||
@ -217,20 +219,22 @@ main: {
|
||||
sta idx_y
|
||||
sta idx_y+1
|
||||
b4:
|
||||
lda #r_add
|
||||
sta $fe
|
||||
ora #$7f
|
||||
bmi !+
|
||||
lda #0
|
||||
!:
|
||||
sta $ff
|
||||
clc
|
||||
lda r
|
||||
adc $fe
|
||||
adc r_add
|
||||
sta r
|
||||
lda r+1
|
||||
adc $ff
|
||||
adc #0
|
||||
sta r+1
|
||||
lda idx_x
|
||||
bne b5
|
||||
lda idx_x+1
|
||||
bne b5
|
||||
lda #1
|
||||
cmp r_add
|
||||
beq b5
|
||||
lsr r_add
|
||||
b5:
|
||||
lda r
|
||||
cmp #<$200*$c+$100
|
||||
lda r+1
|
||||
@ -238,19 +242,19 @@ main: {
|
||||
bvc !+
|
||||
eor #$80
|
||||
!:
|
||||
bpl b5
|
||||
bpl b7
|
||||
jmp b2
|
||||
b5:
|
||||
b7:
|
||||
inc BORDERCOL
|
||||
jmp b5
|
||||
jmp b7
|
||||
}
|
||||
// Plot a single dot in the bitmap
|
||||
// bitmap_plot(signed word zeropage($32) x, byte register(A) y)
|
||||
// bitmap_plot(signed word zeropage($33) x, byte register(A) y)
|
||||
bitmap_plot: {
|
||||
.label _1 = $38
|
||||
.label plotter = $36
|
||||
.label x = $32
|
||||
.label _3 = $36
|
||||
.label _1 = $39
|
||||
.label plotter = $37
|
||||
.label x = $33
|
||||
.label _3 = $37
|
||||
tay
|
||||
lda bitmap_plot_yhi,y
|
||||
sta _3+1
|
||||
@ -279,16 +283,16 @@ bitmap_plot: {
|
||||
}
|
||||
// Multiply of two signed words to a signed double word
|
||||
// Fixes offsets introduced by using unsigned multiplication
|
||||
// mul16s(signed word zeropage(4) a, signed word zeropage(8) b)
|
||||
// mul16s(signed word zeropage(4) a, signed word zeropage(9) b)
|
||||
mul16s: {
|
||||
.label _9 = $3a
|
||||
.label _13 = $3c
|
||||
.label _16 = $3a
|
||||
.label _17 = $3c
|
||||
.label m = $a
|
||||
.label return = $a
|
||||
.label _9 = $3b
|
||||
.label _13 = $3d
|
||||
.label _16 = $3b
|
||||
.label _17 = $3d
|
||||
.label m = $b
|
||||
.label return = $b
|
||||
.label a = 4
|
||||
.label b = 8
|
||||
.label b = 9
|
||||
lda b
|
||||
sta mul16u.mb
|
||||
lda b+1
|
||||
@ -340,13 +344,13 @@ mul16s: {
|
||||
rts
|
||||
}
|
||||
// Perform binary multiplication of two unsigned 16-bit words into a 32-bit unsigned double word
|
||||
// mul16u(word zeropage($10) a, word zeropage($e) b)
|
||||
// mul16u(word zeropage($11) a, word zeropage($f) b)
|
||||
mul16u: {
|
||||
.label mb = $12
|
||||
.label a = $10
|
||||
.label res = $a
|
||||
.label return = $a
|
||||
.label b = $e
|
||||
.label mb = $13
|
||||
.label a = $11
|
||||
.label res = $b
|
||||
.label return = $b
|
||||
.label b = $f
|
||||
lda #0
|
||||
sta res
|
||||
sta res+1
|
||||
@ -441,12 +445,12 @@ bitmap_clear: {
|
||||
rts
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// memset(void* zeropage($16) str, byte register(X) c, word zeropage($18) num)
|
||||
// memset(void* zeropage($17) str, byte register(X) c, word zeropage($19) num)
|
||||
memset: {
|
||||
.label end = $18
|
||||
.label dst = $16
|
||||
.label str = $16
|
||||
.label num = $18
|
||||
.label end = $19
|
||||
.label dst = $17
|
||||
.label str = $17
|
||||
.label num = $19
|
||||
lda end
|
||||
clc
|
||||
adc str
|
||||
@ -472,8 +476,8 @@ memset: {
|
||||
}
|
||||
// Initialize bitmap plotting tables
|
||||
bitmap_init: {
|
||||
.label _7 = $3e
|
||||
.label yoffs = $1a
|
||||
.label _7 = $3f
|
||||
.label yoffs = $1b
|
||||
ldx #0
|
||||
lda #$80
|
||||
b1:
|
||||
@ -518,18 +522,18 @@ bitmap_init: {
|
||||
// Generate signed word sinus table - with values in the range min-max.
|
||||
// sintab - the table to generate into
|
||||
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
|
||||
// sin16s_gen2(signed word* zeropage($20) sintab)
|
||||
// sin16s_gen2(signed word* zeropage($21) sintab)
|
||||
sin16s_gen2: {
|
||||
.label wavelength = $200
|
||||
.const min = -$1001
|
||||
.const max = $1001
|
||||
.const ampl = max-min
|
||||
.label _5 = $a
|
||||
.label _6 = $43
|
||||
.label step = $3f
|
||||
.label sintab = $20
|
||||
.label x = $1c
|
||||
.label i = $22
|
||||
.label _5 = $b
|
||||
.label _6 = $44
|
||||
.label step = $40
|
||||
.label sintab = $21
|
||||
.label x = $1d
|
||||
.label i = $23
|
||||
jsr div32u16u
|
||||
lda #0
|
||||
sta i
|
||||
@ -606,21 +610,21 @@ sin16s_gen2: {
|
||||
// Calculate signed word sinus sin(x)
|
||||
// x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28
|
||||
// result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff
|
||||
// sin16s(dword zeropage($25) x)
|
||||
// sin16s(dword zeropage($26) x)
|
||||
sin16s: {
|
||||
.label _4 = $25
|
||||
.label x = $25
|
||||
.label _4 = $26
|
||||
.label x = $26
|
||||
.label return = 4
|
||||
.label x1 = $45
|
||||
.label x2 = $29
|
||||
.label x3 = $29
|
||||
.label x3_6 = $47
|
||||
.label x1 = $46
|
||||
.label x2 = $2a
|
||||
.label x3 = $2a
|
||||
.label x3_6 = $48
|
||||
.label usinx = 4
|
||||
.label x4 = $29
|
||||
.label x5 = $47
|
||||
.label x5_128 = $47
|
||||
.label x4 = $2a
|
||||
.label x5 = $48
|
||||
.label x5_128 = $48
|
||||
.label sinx = 4
|
||||
.label isUpper = $24
|
||||
.label isUpper = $25
|
||||
lda x+3
|
||||
cmp #>PI_u4f28>>$10
|
||||
bcc b4
|
||||
@ -782,15 +786,15 @@ sin16s: {
|
||||
}
|
||||
// Calculate val*val for two unsigned word values - the result is 16 selected bits of the 32-bit result.
|
||||
// The select parameter indicates how many of the highest bits of the 32-bit result to skip
|
||||
// mulu16_sel(word zeropage($29) v1, word zeropage($e) v2, byte register(X) select)
|
||||
// mulu16_sel(word zeropage($2a) v1, word zeropage($f) v2, byte register(X) select)
|
||||
mulu16_sel: {
|
||||
.label _0 = $a
|
||||
.label _1 = $a
|
||||
.label v1 = $29
|
||||
.label v2 = $e
|
||||
.label return = $47
|
||||
.label return_1 = $29
|
||||
.label return_10 = $29
|
||||
.label _0 = $b
|
||||
.label _1 = $b
|
||||
.label v1 = $2a
|
||||
.label v2 = $f
|
||||
.label return = $48
|
||||
.label return_1 = $2a
|
||||
.label return_10 = $2a
|
||||
lda v1
|
||||
sta mul16u.a
|
||||
lda v1+1
|
||||
@ -822,9 +826,9 @@ mulu16_sel: {
|
||||
// Divide unsigned 32-bit dword dividend with a 16-bit word divisor
|
||||
// The 16-bit word remainder can be found in rem16u after the division
|
||||
div32u16u: {
|
||||
.label quotient_hi = $49
|
||||
.label quotient_lo = $2f
|
||||
.label return = $3f
|
||||
.label quotient_hi = $4a
|
||||
.label quotient_lo = $30
|
||||
.label return = $40
|
||||
lda #<PI2_u4f28>>$10
|
||||
sta divr16u.dividend
|
||||
lda #>PI2_u4f28>>$10
|
||||
@ -856,12 +860,12 @@ div32u16u: {
|
||||
// Returns the quotient dividend/divisor.
|
||||
// The final remainder will be set into the global variable rem16u
|
||||
// Implemented using simple binary division
|
||||
// divr16u(word zeropage($2d) dividend, word zeropage($2b) rem)
|
||||
// divr16u(word zeropage($2e) dividend, word zeropage($2c) rem)
|
||||
divr16u: {
|
||||
.label rem = $2b
|
||||
.label dividend = $2d
|
||||
.label quotient = $2f
|
||||
.label return = $2f
|
||||
.label rem = $2c
|
||||
.label dividend = $2e
|
||||
.label quotient = $30
|
||||
.label return = $30
|
||||
ldx #0
|
||||
txa
|
||||
sta quotient
|
||||
|
@ -13,421 +13,432 @@
|
||||
main: scope:[main] from @2
|
||||
[5] phi()
|
||||
[6] call sin16s_gen2
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main
|
||||
[7] phi()
|
||||
[8] call bitmap_init
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@7
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@9
|
||||
[9] phi()
|
||||
[10] call bitmap_clear
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@8
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@10
|
||||
[11] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte) 3
|
||||
to:main::toD0181
|
||||
main::toD0181: scope:[main] from main::@9
|
||||
main::toD0181: scope:[main] from main::@11
|
||||
[12] phi()
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::toD0181
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::toD0181
|
||||
[13] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0
|
||||
[14] call init_irq
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@4 main::@6
|
||||
[15] (word) main::idx_y#3 ← phi( main::@6/(byte) $80 main::@4/(word) main::idx_y#10 )
|
||||
[15] (signed word) main::r#10 ← phi( main::@6/(signed byte) 0 main::@4/(signed word) main::r#1 )
|
||||
[15] (word) main::idx_x#3 ← phi( main::@6/(byte) 0 main::@4/(word) main::idx_x#10 )
|
||||
main::@1: scope:[main] from main::@5 main::@8
|
||||
[15] (byte) main::r_add#10 ← phi( main::@8/(byte) $20 main::@5/(byte) main::r_add#12 )
|
||||
[15] (word) main::idx_y#3 ← phi( main::@8/(byte) $80 main::@5/(word) main::idx_y#10 )
|
||||
[15] (signed word) main::r#10 ← phi( main::@8/(signed byte) 0 main::@5/(signed word) main::r#1 )
|
||||
[15] (word) main::idx_x#11 ← phi( main::@8/(byte) 0 main::@5/(word) main::idx_x#10 )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
[16] (word~) main::$28 ← (word) main::idx_x#3 << (byte) 1
|
||||
[17] (signed word*~) main::$30 ← (const signed word[$200]) SINUS#0 + (word~) main::$28
|
||||
[18] (signed word) main::cos_x#0 ← *((signed word*~) main::$30)
|
||||
[16] (word~) main::$32 ← (word) main::idx_x#11 << (byte) 1
|
||||
[17] (signed word*~) main::$34 ← (const signed word[$200]) SINUS#0 + (word~) main::$32
|
||||
[18] (signed word) main::cos_x#0 ← *((signed word*~) main::$34)
|
||||
[19] (signed word) mul16s::a#1 ← (signed word) main::r#10
|
||||
[20] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0
|
||||
[21] call mul16s
|
||||
[22] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@2
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main::@2
|
||||
[23] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3
|
||||
[24] (word~) main::$9 ← > (signed dword) main::xpos#0
|
||||
[25] (signed word~) main::$11 ← (signed word)(word~) main::$9 >> (signed byte) 2
|
||||
[26] (signed word) bitmap_plot::x#0 ← (signed word) $a0 + (signed word~) main::$11
|
||||
[27] (word~) main::$29 ← (word) main::idx_y#3 << (byte) 1
|
||||
[28] (signed word*~) main::$31 ← (const signed word[$200]) SINUS#0 + (word~) main::$29
|
||||
[29] (signed word) main::sin_y#0 ← *((signed word*~) main::$31)
|
||||
[27] (word~) main::$33 ← (word) main::idx_y#3 << (byte) 1
|
||||
[28] (signed word*~) main::$35 ← (const signed word[$200]) SINUS#0 + (word~) main::$33
|
||||
[29] (signed word) main::sin_y#0 ← *((signed word*~) main::$35)
|
||||
[30] (signed word) mul16s::a#2 ← (signed word) main::r#10
|
||||
[31] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0
|
||||
[32] call mul16s
|
||||
[33] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@10
|
||||
to:main::@13
|
||||
main::@13: scope:[main] from main::@12
|
||||
[34] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4
|
||||
[35] (word~) main::$15 ← > (signed dword) main::ypos#0
|
||||
[36] (signed word~) main::$17 ← (signed word)(word~) main::$15 >> (signed byte) 2
|
||||
[37] (signed word~) main::$18 ← (signed byte) $64 + (signed word~) main::$17
|
||||
[38] (byte) bitmap_plot::y#0 ← (byte)(word)(signed word~) main::$18
|
||||
[39] call bitmap_plot
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main::@11
|
||||
to:main::@14
|
||||
main::@14: scope:[main] from main::@13
|
||||
[40] *((const byte[$100]) plots_per_frame#0 + (byte) frame_cnt#0) ← ++ *((const byte[$100]) plots_per_frame#0 + (byte) frame_cnt#0)
|
||||
[41] (word) main::idx_x#1 ← (word) main::idx_x#3 + (const byte) main::r_add#0
|
||||
[42] if((word) main::idx_x#1<(word) $200) goto main::@13
|
||||
[41] (word) main::idx_x#1 ← (word) main::idx_x#11 + (byte) main::r_add#10
|
||||
[42] if((word) main::idx_x#1<(word) $200) goto main::@16
|
||||
to:main::@3
|
||||
main::@13: scope:[main] from main::@12
|
||||
main::@16: scope:[main] from main::@14
|
||||
[43] phi()
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@12 main::@13
|
||||
[44] (word) main::idx_x#10 ← phi( main::@12/(byte) 0 main::@13/(word) main::idx_x#1 )
|
||||
[45] (word) main::idx_y#1 ← (word) main::idx_y#3 + (const byte) main::r_add#0
|
||||
[46] if((word) main::idx_y#1<(word) $200) goto main::@14
|
||||
main::@3: scope:[main] from main::@14 main::@16
|
||||
[44] (word) main::idx_x#10 ← phi( main::@14/(byte) 0 main::@16/(word) main::idx_x#1 )
|
||||
[45] (word) main::idx_y#1 ← (word) main::idx_y#3 + (byte) main::r_add#10
|
||||
[46] if((word) main::idx_y#1<(word) $200) goto main::@17
|
||||
to:main::@4
|
||||
main::@14: scope:[main] from main::@3
|
||||
main::@17: scope:[main] from main::@3
|
||||
[47] phi()
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@14 main::@3
|
||||
[48] (word) main::idx_y#10 ← phi( main::@3/(byte) 0 main::@14/(word) main::idx_y#1 )
|
||||
[49] (signed word) main::r#1 ← (signed word) main::r#10 + (const byte) main::r_add#0
|
||||
[50] if((signed word) main::r#1>=(signed word)(number) $200*(number) $c+(number) $100) goto main::@5
|
||||
to:main::@1
|
||||
main::@5: scope:[main] from main::@4 main::@5
|
||||
[51] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
|
||||
main::@4: scope:[main] from main::@17 main::@3
|
||||
[48] (word) main::idx_y#10 ← phi( main::@3/(byte) 0 main::@17/(word) main::idx_y#1 )
|
||||
[49] (signed word) main::r#1 ← (signed word) main::r#10 + (byte) main::r_add#10
|
||||
[50] if((word) main::idx_x#10!=(byte) 0) goto main::@5
|
||||
to:main::@15
|
||||
main::@15: scope:[main] from main::@4
|
||||
[51] if((byte) main::r_add#10==(byte) 1) goto main::@5
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@15
|
||||
[52] (byte) main::r_add#1 ← (byte) main::r_add#10 >> (byte) 1
|
||||
to:main::@5
|
||||
bitmap_plot: scope:[bitmap_plot] from main::@11
|
||||
[52] (word~) bitmap_plot::$3 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0)
|
||||
[53] (word~) bitmap_plot::$1 ← (word)(signed word) bitmap_plot::x#0 & (word) $fff8
|
||||
[54] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1
|
||||
[55] (byte~) bitmap_plot::$2 ← < (word)(signed word) bitmap_plot::x#0
|
||||
[56] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2)
|
||||
main::@5: scope:[main] from main::@15 main::@4 main::@6
|
||||
[53] (byte) main::r_add#12 ← phi( main::@6/(byte) main::r_add#1 main::@4/(byte) main::r_add#10 )
|
||||
[54] if((signed word) main::r#1>=(signed word)(number) $200*(number) $c+(number) $100) goto main::@7
|
||||
to:main::@1
|
||||
main::@7: scope:[main] from main::@5 main::@7
|
||||
[55] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
|
||||
to:main::@7
|
||||
bitmap_plot: scope:[bitmap_plot] from main::@13
|
||||
[56] (word~) bitmap_plot::$3 ← *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0)
|
||||
[57] (word~) bitmap_plot::$1 ← (word)(signed word) bitmap_plot::x#0 & (word) $fff8
|
||||
[58] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1
|
||||
[59] (byte~) bitmap_plot::$2 ← < (word)(signed word) bitmap_plot::x#0
|
||||
[60] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[$100]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2)
|
||||
to:bitmap_plot::@return
|
||||
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||
[57] return
|
||||
[61] return
|
||||
to:@return
|
||||
mul16s: scope:[mul16s] from main::@10 main::@2 sin16s_gen2::@3
|
||||
[58] (signed word) mul16s::b#3 ← phi( main::@2/(signed word) mul16s::b#1 main::@10/(signed word) mul16s::b#2 sin16s_gen2::@3/(const signed word) sin16s_gen2::ampl#0 )
|
||||
[58] (signed word) mul16s::a#3 ← phi( main::@2/(signed word) mul16s::a#1 main::@10/(signed word) mul16s::a#2 sin16s_gen2::@3/(signed word) mul16s::a#0 )
|
||||
[59] (dword~) mul16u::mb#6 ← (word)(signed word) mul16s::b#3
|
||||
[60] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#3
|
||||
[61] call mul16u
|
||||
[62] (dword) mul16u::return#2 ← (dword) mul16u::res#2
|
||||
mul16s: scope:[mul16s] from main::@12 main::@2 sin16s_gen2::@3
|
||||
[62] (signed word) mul16s::b#3 ← phi( main::@2/(signed word) mul16s::b#1 main::@12/(signed word) mul16s::b#2 sin16s_gen2::@3/(const signed word) sin16s_gen2::ampl#0 )
|
||||
[62] (signed word) mul16s::a#3 ← phi( main::@2/(signed word) mul16s::a#1 main::@12/(signed word) mul16s::a#2 sin16s_gen2::@3/(signed word) mul16s::a#0 )
|
||||
[63] (dword~) mul16u::mb#6 ← (word)(signed word) mul16s::b#3
|
||||
[64] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#3
|
||||
[65] call mul16u
|
||||
[66] (dword) mul16u::return#2 ← (dword) mul16u::res#2
|
||||
to:mul16s::@5
|
||||
mul16s::@5: scope:[mul16s] from mul16s
|
||||
[63] (dword) mul16s::m#0 ← (dword) mul16u::return#2
|
||||
[64] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1
|
||||
[67] (dword) mul16s::m#0 ← (dword) mul16u::return#2
|
||||
[68] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1
|
||||
to:mul16s::@3
|
||||
mul16s::@3: scope:[mul16s] from mul16s::@5
|
||||
[65] (word~) mul16s::$9 ← > (dword) mul16s::m#0
|
||||
[66] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#3
|
||||
[67] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
|
||||
[69] (word~) mul16s::$9 ← > (dword) mul16s::m#0
|
||||
[70] (word~) mul16s::$16 ← (word~) mul16s::$9 - (word)(signed word) mul16s::b#3
|
||||
[71] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
|
||||
to:mul16s::@1
|
||||
mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@5
|
||||
[68] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 )
|
||||
[69] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2
|
||||
[72] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 )
|
||||
[73] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2
|
||||
to:mul16s::@4
|
||||
mul16s::@4: scope:[mul16s] from mul16s::@1
|
||||
[70] (word~) mul16s::$13 ← > (dword) mul16s::m#5
|
||||
[71] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#3
|
||||
[72] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17
|
||||
[74] (word~) mul16s::$13 ← > (dword) mul16s::m#5
|
||||
[75] (word~) mul16s::$17 ← (word~) mul16s::$13 - (word)(signed word) mul16s::a#3
|
||||
[76] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17
|
||||
to:mul16s::@2
|
||||
mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4
|
||||
[73] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 )
|
||||
[74] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4
|
||||
[77] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 )
|
||||
[78] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4
|
||||
to:mul16s::@return
|
||||
mul16s::@return: scope:[mul16s] from mul16s::@2
|
||||
[75] return
|
||||
to:@return
|
||||
mul16u: scope:[mul16u] from mul16s mulu16_sel
|
||||
[76] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 )
|
||||
[76] (dword) mul16u::mb#0 ← phi( mul16s/(dword~) mul16u::mb#6 mulu16_sel/(word) mul16u::b#1 )
|
||||
to:mul16u::@1
|
||||
mul16u::@1: scope:[mul16u] from mul16u mul16u::@3
|
||||
[77] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 )
|
||||
[77] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 )
|
||||
[77] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 )
|
||||
[78] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2
|
||||
to:mul16u::@return
|
||||
mul16u::@return: scope:[mul16u] from mul16u::@1
|
||||
[79] return
|
||||
to:@return
|
||||
mul16u: scope:[mul16u] from mul16s mulu16_sel
|
||||
[80] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 )
|
||||
[80] (dword) mul16u::mb#0 ← phi( mul16s/(dword~) mul16u::mb#6 mulu16_sel/(word) mul16u::b#1 )
|
||||
to:mul16u::@1
|
||||
mul16u::@1: scope:[mul16u] from mul16u mul16u::@3
|
||||
[81] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 )
|
||||
[81] (dword) mul16u::res#2 ← phi( mul16u/(byte) 0 mul16u::@3/(dword) mul16u::res#6 )
|
||||
[81] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 )
|
||||
[82] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2
|
||||
to:mul16u::@return
|
||||
mul16u::@return: scope:[mul16u] from mul16u::@1
|
||||
[83] return
|
||||
to:@return
|
||||
mul16u::@2: scope:[mul16u] from mul16u::@1
|
||||
[80] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1
|
||||
[81] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
|
||||
[84] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1
|
||||
[85] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
|
||||
to:mul16u::@4
|
||||
mul16u::@4: scope:[mul16u] from mul16u::@2
|
||||
[82] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
||||
[86] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
||||
to:mul16u::@3
|
||||
mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4
|
||||
[83] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
|
||||
[84] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1
|
||||
[85] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
|
||||
[87] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
|
||||
[88] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1
|
||||
[89] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
|
||||
to:mul16u::@1
|
||||
init_irq: scope:[init_irq] from main::@6
|
||||
init_irq: scope:[init_irq] from main::@8
|
||||
asm { sei }
|
||||
[87] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
[88] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
|
||||
[89] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0
|
||||
[90] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte) $80
|
||||
[91] *((const byte*) RASTER#0) ← (byte) 0
|
||||
[92] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0
|
||||
[93] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
[91] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
[92] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
|
||||
[93] *((const byte*) CIA1_INTERRUPT#0) ← (const byte) CIA_INTERRUPT_CLEAR#0
|
||||
[94] *((const byte*) VIC_CONTROL#0) ← *((const byte*) VIC_CONTROL#0) | (byte) $80
|
||||
[95] *((const byte*) RASTER#0) ← (byte) 0
|
||||
[96] *((const byte*) IRQ_ENABLE#0) ← (const byte) IRQ_RASTER#0
|
||||
[97] *((const void()**) HARDWARE_IRQ#0) ← &interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
asm { cli }
|
||||
to:init_irq::@return
|
||||
init_irq::@return: scope:[init_irq] from init_irq
|
||||
[95] return
|
||||
[99] return
|
||||
to:@return
|
||||
bitmap_clear: scope:[bitmap_clear] from main::@8
|
||||
[96] phi()
|
||||
[97] call memset
|
||||
bitmap_clear: scope:[bitmap_clear] from main::@10
|
||||
[100] phi()
|
||||
[101] call memset
|
||||
to:bitmap_clear::@1
|
||||
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear
|
||||
[98] phi()
|
||||
[99] call memset
|
||||
[102] phi()
|
||||
[103] call memset
|
||||
to:bitmap_clear::@return
|
||||
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1
|
||||
[100] return
|
||||
[104] return
|
||||
to:@return
|
||||
memset: scope:[memset] from bitmap_clear bitmap_clear::@1
|
||||
[101] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 )
|
||||
[101] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 )
|
||||
[101] (void*) memset::str#2 ← phi( bitmap_clear/(void*)(const byte*) SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP#0 )
|
||||
[102] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2
|
||||
[103] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2
|
||||
[105] (byte) memset::c#3 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 )
|
||||
[105] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 )
|
||||
[105] (void*) memset::str#2 ← phi( bitmap_clear/(void*)(const byte*) SCREEN#0 bitmap_clear::@1/(void*)(const byte*) BITMAP#0 )
|
||||
[106] (byte*) memset::end#0 ← (byte*)(void*) memset::str#2 + (word) memset::num#2
|
||||
[107] (byte*~) memset::dst#3 ← (byte*)(void*) memset::str#2
|
||||
to:memset::@1
|
||||
memset::@1: scope:[memset] from memset memset::@1
|
||||
[104] (byte*) memset::dst#2 ← phi( memset/(byte*~) memset::dst#3 memset::@1/(byte*) memset::dst#1 )
|
||||
[105] *((byte*) memset::dst#2) ← (byte) memset::c#3
|
||||
[106] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
|
||||
[107] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1
|
||||
[108] (byte*) memset::dst#2 ← phi( memset/(byte*~) memset::dst#3 memset::@1/(byte*) memset::dst#1 )
|
||||
[109] *((byte*) memset::dst#2) ← (byte) memset::c#3
|
||||
[110] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
|
||||
[111] if((byte*) memset::dst#1!=(byte*) memset::end#0) goto memset::@1
|
||||
to:memset::@return
|
||||
memset::@return: scope:[memset] from memset::@1
|
||||
[108] return
|
||||
[112] return
|
||||
to:@return
|
||||
bitmap_init: scope:[bitmap_init] from main::@7
|
||||
[109] phi()
|
||||
bitmap_init: scope:[bitmap_init] from main::@9
|
||||
[113] phi()
|
||||
to:bitmap_init::@1
|
||||
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
|
||||
[110] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
|
||||
[110] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 )
|
||||
[111] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
|
||||
[112] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1
|
||||
[113] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6
|
||||
[114] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
|
||||
[114] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 )
|
||||
[115] *((const byte[$100]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
|
||||
[116] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1
|
||||
[117] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6
|
||||
to:bitmap_init::@2
|
||||
bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1
|
||||
[114] phi()
|
||||
[118] phi()
|
||||
to:bitmap_init::@2
|
||||
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6
|
||||
[115] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 )
|
||||
[116] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
|
||||
[117] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1
|
||||
[119] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 )
|
||||
[120] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
|
||||
[121] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1
|
||||
to:bitmap_init::@3
|
||||
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4
|
||||
[118] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 )
|
||||
[118] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 )
|
||||
[119] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
|
||||
[120] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
|
||||
[121] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4
|
||||
[122] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
|
||||
[123] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
|
||||
[124] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
|
||||
[125] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4
|
||||
[122] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP#0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 )
|
||||
[122] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 )
|
||||
[123] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
|
||||
[124] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
|
||||
[125] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4
|
||||
[126] *((const byte[$100]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
|
||||
[127] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
|
||||
[128] *((const byte[$100]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
|
||||
[129] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4
|
||||
to:bitmap_init::@5
|
||||
bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3
|
||||
[126] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8
|
||||
[130] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8
|
||||
to:bitmap_init::@4
|
||||
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5
|
||||
[127] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 )
|
||||
[128] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
|
||||
[129] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3
|
||||
[131] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 )
|
||||
[132] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
|
||||
[133] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3
|
||||
to:bitmap_init::@return
|
||||
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
|
||||
[130] return
|
||||
[134] return
|
||||
to:@return
|
||||
sin16s_gen2: scope:[sin16s_gen2] from main
|
||||
[131] phi()
|
||||
[132] call div32u16u
|
||||
[133] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
|
||||
[135] phi()
|
||||
[136] call div32u16u
|
||||
[137] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
|
||||
to:sin16s_gen2::@2
|
||||
sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2
|
||||
[134] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2
|
||||
[138] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2
|
||||
to:sin16s_gen2::@1
|
||||
sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2::@2 sin16s_gen2::@4
|
||||
[135] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(word) sin16s_gen2::i#1 )
|
||||
[135] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@2/(const signed word[$200]) SINUS#0 sin16s_gen2::@4/(signed word*) sin16s_gen2::sintab#0 )
|
||||
[135] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(dword) sin16s_gen2::x#1 )
|
||||
[136] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2
|
||||
[137] call sin16s
|
||||
[138] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
|
||||
[139] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(word) sin16s_gen2::i#1 )
|
||||
[139] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@2/(const signed word[$200]) SINUS#0 sin16s_gen2::@4/(signed word*) sin16s_gen2::sintab#0 )
|
||||
[139] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@2/(byte) 0 sin16s_gen2::@4/(dword) sin16s_gen2::x#1 )
|
||||
[140] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2
|
||||
[141] call sin16s
|
||||
[142] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
|
||||
to:sin16s_gen2::@3
|
||||
sin16s_gen2::@3: scope:[sin16s_gen2] from sin16s_gen2::@1
|
||||
[139] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0
|
||||
[140] call mul16s
|
||||
[141] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
|
||||
[143] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0
|
||||
[144] call mul16s
|
||||
[145] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
|
||||
to:sin16s_gen2::@4
|
||||
sin16s_gen2::@4: scope:[sin16s_gen2] from sin16s_gen2::@3
|
||||
[142] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2
|
||||
[143] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5
|
||||
[144] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$6
|
||||
[145] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
|
||||
[146] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0
|
||||
[147] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2
|
||||
[148] if((word) sin16s_gen2::i#1<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@1
|
||||
[146] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2
|
||||
[147] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5
|
||||
[148] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$6
|
||||
[149] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
|
||||
[150] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0
|
||||
[151] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2
|
||||
[152] if((word) sin16s_gen2::i#1<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@1
|
||||
to:sin16s_gen2::@return
|
||||
sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@4
|
||||
[149] return
|
||||
[153] return
|
||||
to:@return
|
||||
sin16s: scope:[sin16s] from sin16s_gen2::@1
|
||||
[150] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
|
||||
[154] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
|
||||
to:sin16s::@4
|
||||
sin16s::@4: scope:[sin16s] from sin16s
|
||||
[151] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
|
||||
[155] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
|
||||
to:sin16s::@1
|
||||
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
|
||||
[152] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 )
|
||||
[152] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
|
||||
[153] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
[156] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 )
|
||||
[156] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
|
||||
[157] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
to:sin16s::@5
|
||||
sin16s::@5: scope:[sin16s] from sin16s::@1
|
||||
[154] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
|
||||
[158] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
|
||||
to:sin16s::@2
|
||||
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
|
||||
[155] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
|
||||
[156] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3
|
||||
[157] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
|
||||
[158] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
|
||||
[159] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
|
||||
[160] call mulu16_sel
|
||||
[161] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
||||
[159] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
|
||||
[160] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3
|
||||
[161] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
|
||||
[162] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
|
||||
[163] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
|
||||
[164] call mulu16_sel
|
||||
[165] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@7
|
||||
sin16s::@7: scope:[sin16s] from sin16s::@2
|
||||
[162] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
|
||||
[163] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
||||
[164] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
|
||||
[165] call mulu16_sel
|
||||
[166] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
|
||||
[166] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
|
||||
[167] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
||||
[168] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
|
||||
[169] call mulu16_sel
|
||||
[170] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@8
|
||||
sin16s::@8: scope:[sin16s] from sin16s::@7
|
||||
[167] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
||||
[168] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
||||
[169] call mulu16_sel
|
||||
[170] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
||||
[171] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
||||
[172] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
||||
[173] call mulu16_sel
|
||||
[174] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@9
|
||||
sin16s::@9: scope:[sin16s] from sin16s::@8
|
||||
[171] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
||||
[172] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
|
||||
[173] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
||||
[174] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
|
||||
[175] call mulu16_sel
|
||||
[176] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
|
||||
[175] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
||||
[176] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
|
||||
[177] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
||||
[178] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
|
||||
[179] call mulu16_sel
|
||||
[180] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@10
|
||||
sin16s::@10: scope:[sin16s] from sin16s::@9
|
||||
[177] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
||||
[178] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
||||
[179] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
|
||||
[180] call mulu16_sel
|
||||
[181] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
||||
[181] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
||||
[182] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
||||
[183] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
|
||||
[184] call mulu16_sel
|
||||
[185] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@11
|
||||
sin16s::@11: scope:[sin16s] from sin16s::@10
|
||||
[182] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
||||
[183] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4
|
||||
[184] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
|
||||
[185] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12
|
||||
[186] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
||||
[187] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4
|
||||
[188] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
|
||||
[189] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12
|
||||
to:sin16s::@6
|
||||
sin16s::@6: scope:[sin16s] from sin16s::@11
|
||||
[186] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
|
||||
[190] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
|
||||
to:sin16s::@3
|
||||
sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6
|
||||
[187] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
|
||||
[191] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
|
||||
to:sin16s::@return
|
||||
sin16s::@return: scope:[sin16s] from sin16s::@3
|
||||
[188] return
|
||||
[192] return
|
||||
to:@return
|
||||
sin16s::@12: scope:[sin16s] from sin16s::@11
|
||||
[189] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
||||
[193] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
||||
to:sin16s::@3
|
||||
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9
|
||||
[190] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 )
|
||||
[190] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 )
|
||||
[190] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 )
|
||||
[191] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
||||
[192] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
||||
[193] call mul16u
|
||||
[194] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
||||
[194] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte) 0 sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 )
|
||||
[194] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word)(number) $10000/(number) 6 )
|
||||
[194] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 )
|
||||
[195] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
||||
[196] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
||||
[197] call mul16u
|
||||
[198] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
||||
to:mulu16_sel::@1
|
||||
mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel
|
||||
[195] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
||||
[196] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
|
||||
[197] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
|
||||
[199] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
||||
[200] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
|
||||
[201] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
|
||||
to:mulu16_sel::@return
|
||||
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1
|
||||
[198] return
|
||||
[202] return
|
||||
to:@return
|
||||
div32u16u: scope:[div32u16u] from sin16s_gen2
|
||||
[199] phi()
|
||||
[200] call divr16u
|
||||
[201] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
[203] phi()
|
||||
[204] call divr16u
|
||||
[205] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
to:div32u16u::@1
|
||||
div32u16u::@1: scope:[div32u16u] from div32u16u
|
||||
[202] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
|
||||
[203] (word) divr16u::rem#4 ← (word) rem16u#1
|
||||
[204] call divr16u
|
||||
[205] (word) divr16u::return#3 ← (word) divr16u::return#0
|
||||
[206] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
|
||||
[207] (word) divr16u::rem#4 ← (word) rem16u#1
|
||||
[208] call divr16u
|
||||
[209] (word) divr16u::return#3 ← (word) divr16u::return#0
|
||||
to:div32u16u::@2
|
||||
div32u16u::@2: scope:[div32u16u] from div32u16u::@1
|
||||
[206] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
||||
[207] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
|
||||
[210] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
||||
[211] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
|
||||
to:div32u16u::@return
|
||||
div32u16u::@return: scope:[div32u16u] from div32u16u::@2
|
||||
[208] return
|
||||
[212] return
|
||||
to:@return
|
||||
divr16u: scope:[divr16u] from div32u16u div32u16u::@1
|
||||
[209] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 )
|
||||
[209] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 )
|
||||
[213] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 )
|
||||
[213] (word) divr16u::rem#10 ← phi( div32u16u/(byte) 0 div32u16u::@1/(word) divr16u::rem#4 )
|
||||
to:divr16u::@1
|
||||
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
||||
[210] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[210] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[210] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[210] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
||||
[211] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
|
||||
[212] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
||||
[213] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
|
||||
[214] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
|
||||
[214] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[214] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[214] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[214] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
||||
[215] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
|
||||
[216] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
||||
[217] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
|
||||
[218] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
|
||||
to:divr16u::@4
|
||||
divr16u::@4: scope:[divr16u] from divr16u::@1
|
||||
[215] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
|
||||
[219] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
|
||||
to:divr16u::@2
|
||||
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
||||
[216] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[217] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
|
||||
[218] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
|
||||
[219] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3
|
||||
[220] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[221] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
|
||||
[222] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
|
||||
[223] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3
|
||||
to:divr16u::@5
|
||||
divr16u::@5: scope:[divr16u] from divr16u::@2
|
||||
[220] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[221] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0
|
||||
[224] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[225] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0
|
||||
to:divr16u::@3
|
||||
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
||||
[222] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[222] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[223] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[224] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
|
||||
[226] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[226] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[227] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[228] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
|
||||
to:divr16u::@6
|
||||
divr16u::@6: scope:[divr16u] from divr16u::@3
|
||||
[225] (word) rem16u#1 ← (word) divr16u::rem#11
|
||||
[229] (word) rem16u#1 ← (word) divr16u::rem#11
|
||||
to:divr16u::@return
|
||||
divr16u::@return: scope:[divr16u] from divr16u::@6
|
||||
[226] return
|
||||
[230] return
|
||||
to:@return
|
||||
irq: scope:[irq] from
|
||||
[227] *((const byte*) BGCOL#0) ← (const byte) WHITE#0
|
||||
[228] if((byte) 0==(byte) frame_cnt#0) goto irq::@1
|
||||
[231] *((const byte*) BGCOL#0) ← (const byte) WHITE#0
|
||||
[232] if((byte) 0==(byte) frame_cnt#0) goto irq::@1
|
||||
to:irq::@2
|
||||
irq::@2: scope:[irq] from irq
|
||||
[229] (byte) frame_cnt#1 ← ++ (byte) frame_cnt#0
|
||||
[233] (byte) frame_cnt#1 ← ++ (byte) frame_cnt#0
|
||||
to:irq::@1
|
||||
irq::@1: scope:[irq] from irq irq::@2
|
||||
[230] (byte) frame_cnt#2 ← phi( irq/(byte) frame_cnt#0 irq::@2/(byte) frame_cnt#1 )
|
||||
[231] *((const byte*) BGCOL#0) ← (const byte) BLACK#0
|
||||
[232] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
|
||||
[234] (byte) frame_cnt#2 ← phi( irq/(byte) frame_cnt#0 irq::@2/(byte) frame_cnt#1 )
|
||||
[235] *((const byte*) BGCOL#0) ← (const byte) BLACK#0
|
||||
[236] *((const byte*) IRQ_STATUS#0) ← (const byte) IRQ_RASTER#0
|
||||
to:irq::@return
|
||||
irq::@return: scope:[irq] from irq::@1
|
||||
[233] return
|
||||
[237] return
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -69,7 +69,7 @@
|
||||
(byte~) bitmap_init::$4 reg byte a 22.0
|
||||
(byte~) bitmap_init::$5 reg byte a 22.0
|
||||
(byte~) bitmap_init::$6 reg byte a 22.0
|
||||
(byte~) bitmap_init::$7 $7 zp ZP_BYTE:62 5.5
|
||||
(byte~) bitmap_init::$7 $7 zp ZP_BYTE:63 5.5
|
||||
(label) bitmap_init::@1
|
||||
(label) bitmap_init::@2
|
||||
(label) bitmap_init::@3
|
||||
@ -90,18 +90,18 @@
|
||||
(byte) bitmap_init::y#1 reg byte x 16.5
|
||||
(byte) bitmap_init::y#2 reg byte x 5.5
|
||||
(byte*) bitmap_init::yoffs
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:26 22.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:26 6.875
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:26 11.0
|
||||
(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:27 22.0
|
||||
(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:27 6.875
|
||||
(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:27 11.0
|
||||
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||
(word~) bitmap_plot::$1 $1 zp ZP_WORD:56 4.0
|
||||
(word~) bitmap_plot::$1 $1 zp ZP_WORD:57 4.0
|
||||
(byte~) bitmap_plot::$2 reg byte a 4.0
|
||||
(word~) bitmap_plot::$3 $3 zp ZP_WORD:54 1.0
|
||||
(word~) bitmap_plot::$3 $3 zp ZP_WORD:55 1.0
|
||||
(label) bitmap_plot::@return
|
||||
(byte*) bitmap_plot::plotter
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:54 3.0
|
||||
(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:55 3.0
|
||||
(word) bitmap_plot::x
|
||||
(signed word) bitmap_plot::x#0 x zp ZP_WORD:50 0.6875
|
||||
(signed word) bitmap_plot::x#0 x zp ZP_WORD:51 0.6875
|
||||
(byte) bitmap_plot::y
|
||||
(byte) bitmap_plot::y#0 reg byte a 15.0
|
||||
(byte[$100]) bitmap_plot_bit
|
||||
@ -119,12 +119,12 @@
|
||||
(word) div32u16u::divisor
|
||||
(dword) div32u16u::quotient
|
||||
(word) div32u16u::quotient_hi
|
||||
(word) div32u16u::quotient_hi#0 quotient_hi zp ZP_WORD:73 0.8
|
||||
(word) div32u16u::quotient_hi#0 quotient_hi zp ZP_WORD:74 0.8
|
||||
(word) div32u16u::quotient_lo
|
||||
(word) div32u16u::quotient_lo#0 quotient_lo zp ZP_WORD:47 4.0
|
||||
(word) div32u16u::quotient_lo#0 quotient_lo zp ZP_WORD:48 4.0
|
||||
(dword) div32u16u::return
|
||||
(dword) div32u16u::return#0 return zp ZP_DWORD:63 1.3333333333333333
|
||||
(dword) div32u16u::return#2 return zp ZP_DWORD:63 4.0
|
||||
(dword) div32u16u::return#0 return zp ZP_DWORD:64 1.3333333333333333
|
||||
(dword) div32u16u::return#2 return zp ZP_DWORD:64 4.0
|
||||
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
||||
(byte~) divr16u::$1 reg byte a 22.0
|
||||
(byte~) divr16u::$2 reg byte a 22.0
|
||||
@ -136,34 +136,34 @@
|
||||
(label) divr16u::@6
|
||||
(label) divr16u::@return
|
||||
(word) divr16u::dividend
|
||||
(word) divr16u::dividend#0 dividend zp ZP_WORD:45 2.75
|
||||
(word) divr16u::dividend#3 dividend zp ZP_WORD:45 5.0
|
||||
(word) divr16u::dividend#5 dividend zp ZP_WORD:45 2.0
|
||||
(word) divr16u::dividend#0 dividend zp ZP_WORD:46 2.75
|
||||
(word) divr16u::dividend#3 dividend zp ZP_WORD:46 5.0
|
||||
(word) divr16u::dividend#5 dividend zp ZP_WORD:46 2.0
|
||||
(word) divr16u::divisor
|
||||
(byte) divr16u::i
|
||||
(byte) divr16u::i#1 reg byte x 16.5
|
||||
(byte) divr16u::i#2 reg byte x 1.6923076923076923
|
||||
(word) divr16u::quotient
|
||||
(word) divr16u::quotient#1 quotient zp ZP_WORD:47 16.5
|
||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:47 11.0
|
||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:47 2.75
|
||||
(word) divr16u::quotient#1 quotient zp ZP_WORD:48 16.5
|
||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:48 11.0
|
||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:48 2.75
|
||||
(word) divr16u::rem
|
||||
(word) divr16u::rem#0 rem zp ZP_WORD:43 8.25
|
||||
(word) divr16u::rem#1 rem zp ZP_WORD:43 22.0
|
||||
(word) divr16u::rem#10 rem zp ZP_WORD:43 4.0
|
||||
(word) divr16u::rem#11 rem zp ZP_WORD:43 11.666666666666666
|
||||
(word) divr16u::rem#2 rem zp ZP_WORD:43 22.0
|
||||
(word) divr16u::rem#4 rem zp ZP_WORD:43 4.0
|
||||
(word) divr16u::rem#5 rem zp ZP_WORD:43 24.0
|
||||
(word) divr16u::rem#6 rem zp ZP_WORD:43 11.0
|
||||
(word) divr16u::rem#0 rem zp ZP_WORD:44 8.25
|
||||
(word) divr16u::rem#1 rem zp ZP_WORD:44 22.0
|
||||
(word) divr16u::rem#10 rem zp ZP_WORD:44 4.0
|
||||
(word) divr16u::rem#11 rem zp ZP_WORD:44 11.666666666666666
|
||||
(word) divr16u::rem#2 rem zp ZP_WORD:44 22.0
|
||||
(word) divr16u::rem#4 rem zp ZP_WORD:44 4.0
|
||||
(word) divr16u::rem#5 rem zp ZP_WORD:44 24.0
|
||||
(word) divr16u::rem#6 rem zp ZP_WORD:44 11.0
|
||||
(word) divr16u::return
|
||||
(word) divr16u::return#0 return zp ZP_WORD:47 5.285714285714286
|
||||
(word) divr16u::return#2 return zp ZP_WORD:47 4.0
|
||||
(word) divr16u::return#3 return zp ZP_WORD:47 4.0
|
||||
(word) divr16u::return#0 return zp ZP_WORD:48 5.285714285714286
|
||||
(word) divr16u::return#2 return zp ZP_WORD:48 4.0
|
||||
(word) divr16u::return#3 return zp ZP_WORD:48 4.0
|
||||
(byte) frame_cnt
|
||||
(byte) frame_cnt#0 frame_cnt zp ZP_BYTE:49 0.6000000000000001
|
||||
(byte) frame_cnt#1 frame_cnt zp ZP_BYTE:49 4.0
|
||||
(byte) frame_cnt#2 frame_cnt zp ZP_BYTE:49 40.0
|
||||
(byte) frame_cnt#0 frame_cnt zp ZP_BYTE:50 0.5555555555555556
|
||||
(byte) frame_cnt#1 frame_cnt zp ZP_BYTE:50 4.0
|
||||
(byte) frame_cnt#2 frame_cnt zp ZP_BYTE:50 40.0
|
||||
(void()) init_irq()
|
||||
(label) init_irq::@return
|
||||
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
@ -171,21 +171,24 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(label) irq::@2
|
||||
(label) irq::@return
|
||||
(void()) main()
|
||||
(signed word~) main::$11 $11 zp ZP_WORD:50 22.0
|
||||
(word~) main::$15 $15 zp ZP_WORD:52 11.0
|
||||
(signed word~) main::$17 $17 zp ZP_WORD:52 22.0
|
||||
(signed word~) main::$18 $18 zp ZP_WORD:52 11.0
|
||||
(word~) main::$28 $28 zp ZP_WORD:8 22.0
|
||||
(word~) main::$29 $29 zp ZP_WORD:8 22.0
|
||||
(signed word*~) main::$30 $30 zp ZP_WORD:8 22.0
|
||||
(signed word*~) main::$31 $31 zp ZP_WORD:8 22.0
|
||||
(word~) main::$9 $9 zp ZP_WORD:50 11.0
|
||||
(signed word~) main::$11 $11 zp ZP_WORD:51 22.0
|
||||
(word~) main::$15 $15 zp ZP_WORD:53 11.0
|
||||
(signed word~) main::$17 $17 zp ZP_WORD:53 22.0
|
||||
(signed word~) main::$18 $18 zp ZP_WORD:53 11.0
|
||||
(word~) main::$32 $32 zp ZP_WORD:9 22.0
|
||||
(word~) main::$33 $33 zp ZP_WORD:9 22.0
|
||||
(signed word*~) main::$34 $34 zp ZP_WORD:9 22.0
|
||||
(signed word*~) main::$35 $35 zp ZP_WORD:9 22.0
|
||||
(word~) main::$9 $9 zp ZP_WORD:51 11.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::@2
|
||||
(label) main::@3
|
||||
(label) main::@4
|
||||
@ -195,22 +198,24 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(label) main::@8
|
||||
(label) main::@9
|
||||
(signed word) main::cos_x
|
||||
(signed word) main::cos_x#0 cos_x zp ZP_WORD:8 11.0
|
||||
(signed word) main::cos_x#0 cos_x zp ZP_WORD:9 11.0
|
||||
(word) main::idx_x
|
||||
(word) main::idx_x#1 idx_x zp ZP_WORD:2 11.0
|
||||
(word) main::idx_x#10 idx_x zp ZP_WORD:2 3.142857142857143
|
||||
(word) main::idx_x#3 idx_x zp ZP_WORD:2 1.2692307692307692
|
||||
(word) main::idx_x#10 idx_x zp ZP_WORD:2 3.0
|
||||
(word) main::idx_x#11 idx_x zp ZP_WORD:2 1.2692307692307692
|
||||
(word) main::idx_y
|
||||
(word) main::idx_y#1 idx_y zp ZP_WORD:6 11.0
|
||||
(word) main::idx_y#10 idx_y zp ZP_WORD:6 7.333333333333333
|
||||
(word) main::idx_y#10 idx_y zp ZP_WORD:6 3.142857142857143
|
||||
(word) main::idx_y#3 idx_y zp ZP_WORD:6 1.0999999999999999
|
||||
(signed word) main::r
|
||||
(signed word) main::r#1 r zp ZP_WORD:4 16.5
|
||||
(signed word) main::r#1 r zp ZP_WORD:4 5.5
|
||||
(signed word) main::r#10 r zp ZP_WORD:4 1.2941176470588236
|
||||
(byte) main::r_add
|
||||
(const byte) main::r_add#0 r_add = (byte) 4
|
||||
(byte) main::r_add#1 r_add zp ZP_BYTE:8 22.0
|
||||
(byte) main::r_add#10 r_add zp ZP_BYTE:8 2.081081081081081
|
||||
(byte) main::r_add#12 r_add zp ZP_BYTE:8 16.5
|
||||
(signed word) main::sin_y
|
||||
(signed word) main::sin_y#0 sin_y zp ZP_WORD:8 11.0
|
||||
(signed word) main::sin_y#0 sin_y zp ZP_WORD:9 11.0
|
||||
(label) main::toD0181
|
||||
(word~) main::toD0181_$0
|
||||
(number~) main::toD0181_$1
|
||||
@ -227,31 +232,31 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(byte*) main::toD0181_screen
|
||||
(word) main::x
|
||||
(signed dword) main::xpos
|
||||
(signed dword) main::xpos#0 xpos zp ZP_DWORD:10 22.0
|
||||
(signed dword) main::xpos#0 xpos zp ZP_DWORD:11 22.0
|
||||
(word) main::y
|
||||
(signed dword) main::ypos
|
||||
(signed dword) main::ypos#0 ypos zp ZP_DWORD:10 22.0
|
||||
(signed dword) main::ypos#0 ypos zp ZP_DWORD:11 22.0
|
||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||
(label) memset::@1
|
||||
(label) memset::@return
|
||||
(byte) memset::c
|
||||
(byte) memset::c#3 reg byte x 1.5714285714285714
|
||||
(byte*) memset::dst
|
||||
(byte*) memset::dst#1 dst zp ZP_WORD:22 16.5
|
||||
(byte*) memset::dst#2 dst zp ZP_WORD:22 17.5
|
||||
(byte*~) memset::dst#3 dst zp ZP_WORD:22 4.0
|
||||
(byte*) memset::dst#1 dst zp ZP_WORD:23 16.5
|
||||
(byte*) memset::dst#2 dst zp ZP_WORD:23 17.5
|
||||
(byte*~) memset::dst#3 dst zp ZP_WORD:23 4.0
|
||||
(byte*) memset::end
|
||||
(byte*) memset::end#0 end zp ZP_WORD:24 2.1666666666666665
|
||||
(byte*) memset::end#0 end zp ZP_WORD:25 2.1666666666666665
|
||||
(word) memset::num
|
||||
(word) memset::num#2 num zp ZP_WORD:24 2.0
|
||||
(word) memset::num#2 num zp ZP_WORD:25 2.0
|
||||
(void*) memset::return
|
||||
(void*) memset::str
|
||||
(void*) memset::str#2 str zp ZP_WORD:22
|
||||
(void*) memset::str#2 str zp ZP_WORD:23
|
||||
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
||||
(word~) mul16s::$13 $13 zp ZP_WORD:60 4.0
|
||||
(word~) mul16s::$16 $16 zp ZP_WORD:58 4.0
|
||||
(word~) mul16s::$17 $17 zp ZP_WORD:60 4.0
|
||||
(word~) mul16s::$9 $9 zp ZP_WORD:58 4.0
|
||||
(word~) mul16s::$13 $13 zp ZP_WORD:61 4.0
|
||||
(word~) mul16s::$16 $16 zp ZP_WORD:59 4.0
|
||||
(word~) mul16s::$17 $17 zp ZP_WORD:61 4.0
|
||||
(word~) mul16s::$9 $9 zp ZP_WORD:59 4.0
|
||||
(label) mul16s::@1
|
||||
(label) mul16s::@2
|
||||
(label) mul16s::@3
|
||||
@ -264,20 +269,20 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(signed word) mul16s::a#2 a zp ZP_WORD:4 11.0
|
||||
(signed word) mul16s::a#3 a zp ZP_WORD:4 2.692307692307692
|
||||
(signed word) mul16s::b
|
||||
(signed word) mul16s::b#1 b zp ZP_WORD:8 22.0
|
||||
(signed word) mul16s::b#2 b zp ZP_WORD:8 22.0
|
||||
(signed word) mul16s::b#3 b zp ZP_WORD:8 2.1818181818181817
|
||||
(signed word) mul16s::b#1 b zp ZP_WORD:9 22.0
|
||||
(signed word) mul16s::b#2 b zp ZP_WORD:9 22.0
|
||||
(signed word) mul16s::b#3 b zp ZP_WORD:9 2.1818181818181817
|
||||
(dword) mul16s::m
|
||||
(dword) mul16s::m#0 m zp ZP_DWORD:10 2.0
|
||||
(dword) mul16s::m#1 m zp ZP_DWORD:10 4.0
|
||||
(dword) mul16s::m#2 m zp ZP_DWORD:10 4.0
|
||||
(dword) mul16s::m#4 m zp ZP_DWORD:10 4.0
|
||||
(dword) mul16s::m#5 m zp ZP_DWORD:10 2.5
|
||||
(dword) mul16s::m#0 m zp ZP_DWORD:11 2.0
|
||||
(dword) mul16s::m#1 m zp ZP_DWORD:11 4.0
|
||||
(dword) mul16s::m#2 m zp ZP_DWORD:11 4.0
|
||||
(dword) mul16s::m#4 m zp ZP_DWORD:11 4.0
|
||||
(dword) mul16s::m#5 m zp ZP_DWORD:11 2.5
|
||||
(signed dword) mul16s::return
|
||||
(signed dword) mul16s::return#0 return zp ZP_DWORD:10 7.000000000000001
|
||||
(signed dword) mul16s::return#2 return zp ZP_DWORD:10 22.0
|
||||
(signed dword) mul16s::return#3 return zp ZP_DWORD:10 22.0
|
||||
(signed dword) mul16s::return#4 return zp ZP_DWORD:10 22.0
|
||||
(signed dword) mul16s::return#0 return zp ZP_DWORD:11 7.000000000000001
|
||||
(signed dword) mul16s::return#2 return zp ZP_DWORD:11 22.0
|
||||
(signed dword) mul16s::return#3 return zp ZP_DWORD:11 22.0
|
||||
(signed dword) mul16s::return#4 return zp ZP_DWORD:11 22.0
|
||||
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
|
||||
(byte~) mul16u::$1 reg byte a 202.0
|
||||
(label) mul16u::@1
|
||||
@ -286,58 +291,58 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(label) mul16u::@4
|
||||
(label) mul16u::@return
|
||||
(word) mul16u::a
|
||||
(word) mul16u::a#0 a zp ZP_WORD:16 101.0
|
||||
(word) mul16u::a#2 a zp ZP_WORD:16 2.0
|
||||
(word) mul16u::a#3 a zp ZP_WORD:16 67.66666666666666
|
||||
(word) mul16u::a#6 a zp ZP_WORD:16 6.0
|
||||
(word~) mul16u::a#8 a zp ZP_WORD:16 4.0
|
||||
(word) mul16u::a#0 a zp ZP_WORD:17 101.0
|
||||
(word) mul16u::a#2 a zp ZP_WORD:17 2.0
|
||||
(word) mul16u::a#3 a zp ZP_WORD:17 67.66666666666666
|
||||
(word) mul16u::a#6 a zp ZP_WORD:17 6.0
|
||||
(word~) mul16u::a#8 a zp ZP_WORD:17 4.0
|
||||
(word) mul16u::b
|
||||
(word) mul16u::b#1 b zp ZP_WORD:14 4.0
|
||||
(word) mul16u::b#1 b zp ZP_WORD:15 4.0
|
||||
(dword) mul16u::mb
|
||||
(dword) mul16u::mb#0 mb zp ZP_DWORD:18 6.0
|
||||
(dword) mul16u::mb#1 mb zp ZP_DWORD:18 202.0
|
||||
(dword) mul16u::mb#2 mb zp ZP_DWORD:18 43.57142857142858
|
||||
(dword~) mul16u::mb#6 mb zp ZP_DWORD:18 2.0
|
||||
(dword) mul16u::mb#0 mb zp ZP_DWORD:19 6.0
|
||||
(dword) mul16u::mb#1 mb zp ZP_DWORD:19 202.0
|
||||
(dword) mul16u::mb#2 mb zp ZP_DWORD:19 43.57142857142858
|
||||
(dword~) mul16u::mb#6 mb zp ZP_DWORD:19 2.0
|
||||
(dword) mul16u::res
|
||||
(dword) mul16u::res#1 res zp ZP_DWORD:10 202.0
|
||||
(dword) mul16u::res#2 res zp ZP_DWORD:10 43.85714285714286
|
||||
(dword) mul16u::res#6 res zp ZP_DWORD:10 101.0
|
||||
(dword) mul16u::res#1 res zp ZP_DWORD:11 202.0
|
||||
(dword) mul16u::res#2 res zp ZP_DWORD:11 43.85714285714286
|
||||
(dword) mul16u::res#6 res zp ZP_DWORD:11 101.0
|
||||
(dword) mul16u::return
|
||||
(dword) mul16u::return#2 return zp ZP_DWORD:10 4.0
|
||||
(dword) mul16u::return#3 return zp ZP_DWORD:10 4.0
|
||||
(dword) mul16u::return#2 return zp ZP_DWORD:11 4.0
|
||||
(dword) mul16u::return#3 return zp ZP_DWORD:11 4.0
|
||||
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
|
||||
(dword~) mulu16_sel::$0 $0 zp ZP_DWORD:10 4.0
|
||||
(dword~) mulu16_sel::$1 $1 zp ZP_DWORD:10 4.0
|
||||
(dword~) mulu16_sel::$0 $0 zp ZP_DWORD:11 4.0
|
||||
(dword~) mulu16_sel::$1 $1 zp ZP_DWORD:11 4.0
|
||||
(label) mulu16_sel::@1
|
||||
(label) mulu16_sel::@return
|
||||
(word) mulu16_sel::return
|
||||
(word) mulu16_sel::return#0 return zp ZP_WORD:71 4.0
|
||||
(word) mulu16_sel::return#1 return#1 zp ZP_WORD:41 4.0
|
||||
(word) mulu16_sel::return#10 return#10 zp ZP_WORD:41 4.0
|
||||
(word) mulu16_sel::return#11 return zp ZP_WORD:71 4.0
|
||||
(word) mulu16_sel::return#12 return zp ZP_WORD:71 1.714285714285714
|
||||
(word) mulu16_sel::return#2 return zp ZP_WORD:71 4.0
|
||||
(word) mulu16_sel::return#0 return zp ZP_WORD:72 4.0
|
||||
(word) mulu16_sel::return#1 return#1 zp ZP_WORD:42 4.0
|
||||
(word) mulu16_sel::return#10 return#10 zp ZP_WORD:42 4.0
|
||||
(word) mulu16_sel::return#11 return zp ZP_WORD:72 4.0
|
||||
(word) mulu16_sel::return#12 return zp ZP_WORD:72 1.714285714285714
|
||||
(word) mulu16_sel::return#2 return zp ZP_WORD:72 4.0
|
||||
(byte) mulu16_sel::select
|
||||
(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333
|
||||
(word) mulu16_sel::v1
|
||||
(word) mulu16_sel::v1#0 v1 zp ZP_WORD:41 2.0
|
||||
(word) mulu16_sel::v1#1 v1 zp ZP_WORD:41 2.0
|
||||
(word) mulu16_sel::v1#2 v1 zp ZP_WORD:41 4.0
|
||||
(word) mulu16_sel::v1#3 v1 zp ZP_WORD:41 2.0
|
||||
(word) mulu16_sel::v1#4 v1 zp ZP_WORD:41 2.0
|
||||
(word) mulu16_sel::v1#5 v1 zp ZP_WORD:41 12.0
|
||||
(word) mulu16_sel::v1#0 v1 zp ZP_WORD:42 2.0
|
||||
(word) mulu16_sel::v1#1 v1 zp ZP_WORD:42 2.0
|
||||
(word) mulu16_sel::v1#2 v1 zp ZP_WORD:42 4.0
|
||||
(word) mulu16_sel::v1#3 v1 zp ZP_WORD:42 2.0
|
||||
(word) mulu16_sel::v1#4 v1 zp ZP_WORD:42 2.0
|
||||
(word) mulu16_sel::v1#5 v1 zp ZP_WORD:42 12.0
|
||||
(word) mulu16_sel::v2
|
||||
(word) mulu16_sel::v2#0 v2 zp ZP_WORD:14 4.0
|
||||
(word) mulu16_sel::v2#1 v2 zp ZP_WORD:14 4.0
|
||||
(word) mulu16_sel::v2#3 v2 zp ZP_WORD:14 4.0
|
||||
(word) mulu16_sel::v2#4 v2 zp ZP_WORD:14 4.0
|
||||
(word) mulu16_sel::v2#5 v2 zp ZP_WORD:14 5.0
|
||||
(word) mulu16_sel::v2#0 v2 zp ZP_WORD:15 4.0
|
||||
(word) mulu16_sel::v2#1 v2 zp ZP_WORD:15 4.0
|
||||
(word) mulu16_sel::v2#3 v2 zp ZP_WORD:15 4.0
|
||||
(word) mulu16_sel::v2#4 v2 zp ZP_WORD:15 4.0
|
||||
(word) mulu16_sel::v2#5 v2 zp ZP_WORD:15 5.0
|
||||
(byte[$100]) plots_per_frame
|
||||
(const byte[$100]) plots_per_frame#0 plots_per_frame = { fill( $100, 0) }
|
||||
(word) rem16u
|
||||
(word) rem16u#1 rem16u zp ZP_WORD:43 0.8
|
||||
(word) rem16u#1 rem16u zp ZP_WORD:44 0.8
|
||||
(signed word()) sin16s((dword) sin16s::x)
|
||||
(dword~) sin16s::$4 $4 zp ZP_DWORD:37 4.0
|
||||
(dword~) sin16s::$4 $4 zp ZP_DWORD:38 4.0
|
||||
(label) sin16s::@1
|
||||
(label) sin16s::@10
|
||||
(label) sin16s::@11
|
||||
@ -352,7 +357,7 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(label) sin16s::@9
|
||||
(label) sin16s::@return
|
||||
(byte) sin16s::isUpper
|
||||
(byte) sin16s::isUpper#2 isUpper zp ZP_BYTE:36 0.06060606060606061
|
||||
(byte) sin16s::isUpper#2 isUpper zp ZP_BYTE:37 0.06060606060606061
|
||||
(signed word) sin16s::return
|
||||
(signed word) sin16s::return#0 return zp ZP_WORD:4 22.0
|
||||
(signed word) sin16s::return#1 return zp ZP_WORD:4 5.0
|
||||
@ -363,28 +368,28 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(word) sin16s::usinx#0 usinx zp ZP_WORD:4 0.3333333333333333
|
||||
(word) sin16s::usinx#1 usinx zp ZP_WORD:4 1.0
|
||||
(dword) sin16s::x
|
||||
(dword) sin16s::x#0 x zp ZP_DWORD:37 8.5
|
||||
(dword) sin16s::x#1 x zp ZP_DWORD:37 4.0
|
||||
(dword) sin16s::x#2 x zp ZP_DWORD:37 4.0
|
||||
(dword) sin16s::x#4 x zp ZP_DWORD:37 5.0
|
||||
(dword) sin16s::x#6 x zp ZP_DWORD:37 6.0
|
||||
(dword) sin16s::x#0 x zp ZP_DWORD:38 8.5
|
||||
(dword) sin16s::x#1 x zp ZP_DWORD:38 4.0
|
||||
(dword) sin16s::x#2 x zp ZP_DWORD:38 4.0
|
||||
(dword) sin16s::x#4 x zp ZP_DWORD:38 5.0
|
||||
(dword) sin16s::x#6 x zp ZP_DWORD:38 6.0
|
||||
(word) sin16s::x1
|
||||
(word) sin16s::x1#0 x1 zp ZP_WORD:69 0.6363636363636365
|
||||
(word) sin16s::x1#0 x1 zp ZP_WORD:70 0.6363636363636365
|
||||
(word) sin16s::x2
|
||||
(word) sin16s::x2#0 x2 zp ZP_WORD:41 4.0
|
||||
(word) sin16s::x2#0 x2 zp ZP_WORD:42 4.0
|
||||
(word) sin16s::x3
|
||||
(word) sin16s::x3#0 x3 zp ZP_WORD:41 1.0
|
||||
(word) sin16s::x3#0 x3 zp ZP_WORD:42 1.0
|
||||
(word) sin16s::x3_6
|
||||
(word) sin16s::x3_6#0 x3_6 zp ZP_WORD:71 4.0
|
||||
(word) sin16s::x3_6#0 x3_6 zp ZP_WORD:72 4.0
|
||||
(word) sin16s::x4
|
||||
(word) sin16s::x4#0 x4 zp ZP_WORD:41 4.0
|
||||
(word) sin16s::x4#0 x4 zp ZP_WORD:42 4.0
|
||||
(word) sin16s::x5
|
||||
(word) sin16s::x5#0 x5 zp ZP_WORD:71 4.0
|
||||
(word) sin16s::x5#0 x5 zp ZP_WORD:72 4.0
|
||||
(word) sin16s::x5_128
|
||||
(word) sin16s::x5_128#0 x5_128 zp ZP_WORD:71 4.0
|
||||
(word) sin16s::x5_128#0 x5_128 zp ZP_WORD:72 4.0
|
||||
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
|
||||
(signed dword~) sin16s_gen2::$5 $5 zp ZP_DWORD:10 22.0
|
||||
(word~) sin16s_gen2::$6 $6 zp ZP_WORD:67 11.0
|
||||
(signed dword~) sin16s_gen2::$5 $5 zp ZP_DWORD:11 22.0
|
||||
(word~) sin16s_gen2::$6 $6 zp ZP_WORD:68 11.0
|
||||
(label) sin16s_gen2::@1
|
||||
(label) sin16s_gen2::@2
|
||||
(label) sin16s_gen2::@3
|
||||
@ -393,68 +398,69 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(signed word) sin16s_gen2::ampl
|
||||
(const signed word) sin16s_gen2::ampl#0 ampl = (const signed word) sin16s_gen2::max#0-(const signed word) sin16s_gen2::min#0
|
||||
(word) sin16s_gen2::i
|
||||
(word) sin16s_gen2::i#1 i zp ZP_WORD:34 16.5
|
||||
(word) sin16s_gen2::i#2 i zp ZP_WORD:34 1.8333333333333333
|
||||
(word) sin16s_gen2::i#1 i zp ZP_WORD:35 16.5
|
||||
(word) sin16s_gen2::i#2 i zp ZP_WORD:35 1.8333333333333333
|
||||
(signed word) sin16s_gen2::max
|
||||
(const signed word) sin16s_gen2::max#0 max = (signed word) $1001
|
||||
(signed word) sin16s_gen2::min
|
||||
(const signed word) sin16s_gen2::min#0 min = (signed word) -$1001
|
||||
(signed word) sin16s_gen2::offs
|
||||
(signed word*) sin16s_gen2::sintab
|
||||
(signed word*) sin16s_gen2::sintab#0 sintab zp ZP_WORD:32 5.5
|
||||
(signed word*) sin16s_gen2::sintab#2 sintab zp ZP_WORD:32 3.3000000000000003
|
||||
(signed word*) sin16s_gen2::sintab#0 sintab zp ZP_WORD:33 5.5
|
||||
(signed word*) sin16s_gen2::sintab#2 sintab zp ZP_WORD:33 3.3000000000000003
|
||||
(dword) sin16s_gen2::step
|
||||
(dword) sin16s_gen2::step#0 step zp ZP_DWORD:63 0.8666666666666666
|
||||
(dword) sin16s_gen2::step#0 step zp ZP_DWORD:64 0.8666666666666666
|
||||
(word) sin16s_gen2::wavelength
|
||||
(const word) sin16s_gen2::wavelength#0 wavelength = (word) $200
|
||||
(dword) sin16s_gen2::x
|
||||
(dword) sin16s_gen2::x#1 x zp ZP_DWORD:28 7.333333333333333
|
||||
(dword) sin16s_gen2::x#2 x zp ZP_DWORD:28 3.0
|
||||
(dword) sin16s_gen2::x#1 x zp ZP_DWORD:29 7.333333333333333
|
||||
(dword) sin16s_gen2::x#2 x zp ZP_DWORD:29 3.0
|
||||
|
||||
zp ZP_WORD:2 [ main::idx_x#3 main::idx_x#10 main::idx_x#1 ]
|
||||
zp ZP_WORD:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ]
|
||||
zp ZP_WORD:4 [ main::r#10 main::r#1 mul16s::a#3 mul16s::a#1 mul16s::a#2 mul16s::a#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s::usinx#0 ]
|
||||
zp ZP_WORD:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ]
|
||||
zp ZP_WORD:8 [ mul16s::b#3 mul16s::b#1 mul16s::b#2 main::cos_x#0 main::sin_y#0 main::$28 main::$30 main::$29 main::$31 ]
|
||||
zp ZP_DWORD:10 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#3 main::xpos#0 mul16s::return#4 main::ypos#0 mul16s::return#2 sin16s_gen2::$5 mulu16_sel::$0 mulu16_sel::$1 ]
|
||||
zp ZP_WORD:14 [ mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ]
|
||||
zp ZP_WORD:16 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ]
|
||||
zp ZP_DWORD:18 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#6 mul16u::mb#1 ]
|
||||
zp ZP_WORD:22 [ memset::str#2 memset::dst#2 memset::dst#3 memset::dst#1 ]
|
||||
zp ZP_WORD:24 [ memset::num#2 memset::end#0 ]
|
||||
zp ZP_BYTE:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ]
|
||||
zp ZP_WORD:9 [ mul16s::b#3 mul16s::b#1 mul16s::b#2 main::cos_x#0 main::sin_y#0 main::$32 main::$34 main::$33 main::$35 ]
|
||||
zp ZP_DWORD:11 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#3 main::xpos#0 mul16s::return#4 main::ypos#0 mul16s::return#2 sin16s_gen2::$5 mulu16_sel::$0 mulu16_sel::$1 ]
|
||||
zp ZP_WORD:15 [ mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 ]
|
||||
zp ZP_WORD:17 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 ]
|
||||
zp ZP_DWORD:19 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#6 mul16u::mb#1 ]
|
||||
zp ZP_WORD:23 [ memset::str#2 memset::dst#2 memset::dst#3 memset::dst#1 ]
|
||||
zp ZP_WORD:25 [ memset::num#2 memset::end#0 ]
|
||||
reg byte x [ memset::c#3 ]
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
zp ZP_WORD:26 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
zp ZP_DWORD:28 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
|
||||
zp ZP_WORD:32 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
|
||||
zp ZP_WORD:34 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ]
|
||||
zp ZP_BYTE:36 [ sin16s::isUpper#2 ]
|
||||
zp ZP_DWORD:37 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$4 ]
|
||||
zp ZP_WORD:41 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ]
|
||||
zp ZP_WORD:27 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
zp ZP_DWORD:29 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
|
||||
zp ZP_WORD:33 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
|
||||
zp ZP_WORD:35 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ]
|
||||
zp ZP_BYTE:37 [ sin16s::isUpper#2 ]
|
||||
zp ZP_DWORD:38 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$4 ]
|
||||
zp ZP_WORD:42 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ]
|
||||
reg byte x [ mulu16_sel::select#5 ]
|
||||
zp ZP_WORD:43 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ]
|
||||
zp ZP_WORD:45 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ]
|
||||
zp ZP_WORD:47 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ]
|
||||
zp ZP_WORD:44 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 ]
|
||||
zp ZP_WORD:46 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ]
|
||||
zp ZP_WORD:48 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ]
|
||||
reg byte x [ divr16u::i#2 divr16u::i#1 ]
|
||||
zp ZP_BYTE:49 [ frame_cnt#2 frame_cnt#0 frame_cnt#1 ]
|
||||
zp ZP_WORD:50 [ main::$9 main::$11 bitmap_plot::x#0 ]
|
||||
zp ZP_WORD:52 [ main::$15 main::$17 main::$18 ]
|
||||
zp ZP_BYTE:50 [ frame_cnt#2 frame_cnt#0 frame_cnt#1 ]
|
||||
zp ZP_WORD:51 [ main::$9 main::$11 bitmap_plot::x#0 ]
|
||||
zp ZP_WORD:53 [ main::$15 main::$17 main::$18 ]
|
||||
reg byte a [ bitmap_plot::y#0 ]
|
||||
zp ZP_WORD:54 [ bitmap_plot::$3 bitmap_plot::plotter#1 ]
|
||||
zp ZP_WORD:56 [ bitmap_plot::$1 ]
|
||||
zp ZP_WORD:55 [ bitmap_plot::$3 bitmap_plot::plotter#1 ]
|
||||
zp ZP_WORD:57 [ bitmap_plot::$1 ]
|
||||
reg byte a [ bitmap_plot::$2 ]
|
||||
zp ZP_WORD:58 [ mul16s::$9 mul16s::$16 ]
|
||||
zp ZP_WORD:60 [ mul16s::$13 mul16s::$17 ]
|
||||
zp ZP_WORD:59 [ mul16s::$9 mul16s::$16 ]
|
||||
zp ZP_WORD:61 [ mul16s::$13 mul16s::$17 ]
|
||||
reg byte a [ mul16u::$1 ]
|
||||
zp ZP_BYTE:62 [ bitmap_init::$7 ]
|
||||
zp ZP_BYTE:63 [ bitmap_init::$7 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
zp ZP_DWORD:63 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ]
|
||||
zp ZP_WORD:67 [ sin16s_gen2::$6 ]
|
||||
zp ZP_WORD:69 [ sin16s::x1#0 ]
|
||||
zp ZP_WORD:71 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ]
|
||||
zp ZP_WORD:73 [ div32u16u::quotient_hi#0 ]
|
||||
zp ZP_DWORD:64 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ]
|
||||
zp ZP_WORD:68 [ sin16s_gen2::$6 ]
|
||||
zp ZP_WORD:70 [ sin16s::x1#0 ]
|
||||
zp ZP_WORD:72 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ]
|
||||
zp ZP_WORD:74 [ div32u16u::quotient_hi#0 ]
|
||||
reg byte a [ divr16u::$1 ]
|
||||
reg byte a [ divr16u::$2 ]
|
||||
|
93
src/test/ref/memcpy-0.asm
Normal file
93
src/test/ref/memcpy-0.asm
Normal file
@ -0,0 +1,93 @@
|
||||
// Test memcpy - copy charset and screen
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
||||
.label PROCPORT = 1
|
||||
// RAM in $A000, $E000 CHAR ROM in $D000
|
||||
.const PROCPORT_RAM_CHARROM = $31
|
||||
// BASIC in $A000, I/O in $D000, KERNEL in $E000
|
||||
.const PROCPORT_BASIC_KERNEL_IO = $37
|
||||
// The address of the CHARGEN character set
|
||||
.label CHARGEN = $d000
|
||||
.label D018 = $d018
|
||||
.label CHARSET = $2000
|
||||
.label SCREEN = $400
|
||||
.label SCREEN_COPY = $2400
|
||||
main: {
|
||||
.const toD0181_return = (>(SCREEN_COPY&$3fff)*4)|(>CHARSET)/4&$f
|
||||
lda #toD0181_return
|
||||
sta D018
|
||||
lda #<$400
|
||||
sta memcpy.num
|
||||
lda #>$400
|
||||
sta memcpy.num+1
|
||||
lda #<SCREEN_COPY
|
||||
sta memcpy.destination
|
||||
lda #>SCREEN_COPY
|
||||
sta memcpy.destination+1
|
||||
lda #<SCREEN
|
||||
sta memcpy.source
|
||||
lda #>SCREEN
|
||||
sta memcpy.source+1
|
||||
jsr memcpy
|
||||
sei
|
||||
lda #PROCPORT_RAM_CHARROM
|
||||
sta PROCPORT
|
||||
lda #<$800
|
||||
sta memcpy.num
|
||||
lda #>$800
|
||||
sta memcpy.num+1
|
||||
lda #<CHARSET
|
||||
sta memcpy.destination
|
||||
lda #>CHARSET
|
||||
sta memcpy.destination+1
|
||||
lda #<CHARGEN
|
||||
sta memcpy.source
|
||||
lda #>CHARGEN
|
||||
sta memcpy.source+1
|
||||
jsr memcpy
|
||||
lda #PROCPORT_BASIC_KERNEL_IO
|
||||
sta PROCPORT
|
||||
cli
|
||||
rts
|
||||
}
|
||||
// Copy block of memory (forwards)
|
||||
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
|
||||
// memcpy(void* zeropage(4) destination, void* zeropage(2) source, word zeropage(6) num)
|
||||
memcpy: {
|
||||
.label dst = 4
|
||||
.label src = 2
|
||||
.label i = 8
|
||||
.label source = 2
|
||||
.label destination = 4
|
||||
.label num = 6
|
||||
lda #0
|
||||
sta i
|
||||
sta i+1
|
||||
b1:
|
||||
ldy #0
|
||||
lda (src),y
|
||||
sta (dst),y
|
||||
inc dst
|
||||
bne !+
|
||||
inc dst+1
|
||||
!:
|
||||
inc src
|
||||
bne !+
|
||||
inc src+1
|
||||
!:
|
||||
inc i
|
||||
bne !+
|
||||
inc i+1
|
||||
!:
|
||||
lda i+1
|
||||
cmp num+1
|
||||
bcc b1
|
||||
bne !+
|
||||
lda i
|
||||
cmp num
|
||||
bcc b1
|
||||
!:
|
||||
rts
|
||||
}
|
51
src/test/ref/memcpy-0.cfg
Normal file
51
src/test/ref/memcpy-0.cfg
Normal file
@ -0,0 +1,51 @@
|
||||
@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()
|
||||
to:main::toD0181
|
||||
main::toD0181: scope:[main] from main
|
||||
[5] phi()
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::toD0181
|
||||
[6] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0
|
||||
[7] call memcpy
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
asm { sei }
|
||||
[9] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_CHARROM#0
|
||||
[10] call memcpy
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
[11] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_BASIC_KERNEL_IO#0
|
||||
asm { cli }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@3
|
||||
[13] return
|
||||
to:@return
|
||||
memcpy: scope:[memcpy] from main::@1 main::@2
|
||||
[14] (word) memcpy::num#3 ← phi( main::@1/(word) $400 main::@2/(word) $800 )
|
||||
[14] (void*) memcpy::destination#2 ← phi( main::@1/(void*)(const byte*) SCREEN_COPY#0 main::@2/(void*)(const byte*) CHARSET#0 )
|
||||
[14] (void*) memcpy::source#2 ← phi( main::@1/(void*)(const byte*) SCREEN#0 main::@2/(void*)(const byte*) CHARGEN#0 )
|
||||
[15] (byte*~) memcpy::src#3 ← (byte*)(void*) memcpy::source#2
|
||||
[16] (byte*~) memcpy::dst#3 ← (byte*)(void*) memcpy::destination#2
|
||||
to:memcpy::@1
|
||||
memcpy::@1: scope:[memcpy] from memcpy memcpy::@1
|
||||
[17] (word) memcpy::i#2 ← phi( memcpy/(byte) 0 memcpy::@1/(word) memcpy::i#1 )
|
||||
[17] (byte*) memcpy::dst#2 ← phi( memcpy/(byte*~) memcpy::dst#3 memcpy::@1/(byte*) memcpy::dst#1 )
|
||||
[17] (byte*) memcpy::src#2 ← phi( memcpy/(byte*~) memcpy::src#3 memcpy::@1/(byte*) memcpy::src#1 )
|
||||
[18] *((byte*) memcpy::dst#2) ← *((byte*) memcpy::src#2)
|
||||
[19] (byte*) memcpy::dst#1 ← ++ (byte*) memcpy::dst#2
|
||||
[20] (byte*) memcpy::src#1 ← ++ (byte*) memcpy::src#2
|
||||
[21] (word) memcpy::i#1 ← ++ (word) memcpy::i#2
|
||||
[22] if((word) memcpy::i#1<(word) memcpy::num#3) goto memcpy::@1
|
||||
to:memcpy::@return
|
||||
memcpy::@return: scope:[memcpy] from memcpy::@1
|
||||
[23] return
|
||||
to:@return
|
1220
src/test/ref/memcpy-0.log
Normal file
1220
src/test/ref/memcpy-0.log
Normal file
File diff suppressed because it is too large
Load Diff
64
src/test/ref/memcpy-0.sym
Normal file
64
src/test/ref/memcpy-0.sym
Normal file
@ -0,0 +1,64 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte*) CHARGEN
|
||||
(const byte*) CHARGEN#0 CHARGEN = (byte*) 53248
|
||||
(byte*) CHARSET
|
||||
(const byte*) CHARSET#0 CHARSET = (byte*) 8192
|
||||
(byte*) D018
|
||||
(const byte*) D018#0 D018 = (byte*) 53272
|
||||
(byte*) PROCPORT
|
||||
(const byte*) PROCPORT#0 PROCPORT = (byte*) 1
|
||||
(byte) PROCPORT_BASIC_KERNEL_IO
|
||||
(const byte) PROCPORT_BASIC_KERNEL_IO#0 PROCPORT_BASIC_KERNEL_IO = (byte) $37
|
||||
(byte) PROCPORT_RAM_CHARROM
|
||||
(const byte) PROCPORT_RAM_CHARROM#0 PROCPORT_RAM_CHARROM = (byte) $31
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = (byte*) 1024
|
||||
(byte*) SCREEN_COPY
|
||||
(const byte*) SCREEN_COPY#0 SCREEN_COPY = (byte*) 9216
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(label) main::toD0181
|
||||
(word~) main::toD0181_$0
|
||||
(number~) main::toD0181_$1
|
||||
(number~) main::toD0181_$2
|
||||
(number~) main::toD0181_$3
|
||||
(word~) main::toD0181_$4
|
||||
(byte~) main::toD0181_$5
|
||||
(number~) main::toD0181_$6
|
||||
(number~) main::toD0181_$7
|
||||
(number~) main::toD0181_$8
|
||||
(byte*) main::toD0181_gfx
|
||||
(byte) main::toD0181_return
|
||||
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN_COPY#0&(word) $3fff*(byte) 4|>(word)(const byte*) CHARSET#0/(byte) 4&(byte) $f
|
||||
(byte*) main::toD0181_screen
|
||||
(void*()) memcpy((void*) memcpy::destination , (void*) memcpy::source , (word) memcpy::num)
|
||||
(label) memcpy::@1
|
||||
(label) memcpy::@return
|
||||
(void*) memcpy::destination
|
||||
(void*) memcpy::destination#2 destination zp ZP_WORD:4
|
||||
(byte*) memcpy::dst
|
||||
(byte*) memcpy::dst#1 dst zp ZP_WORD:4 5.5
|
||||
(byte*) memcpy::dst#2 dst zp ZP_WORD:4 17.5
|
||||
(byte*~) memcpy::dst#3 dst zp ZP_WORD:4 4.0
|
||||
(word) memcpy::i
|
||||
(word) memcpy::i#1 i zp ZP_WORD:8 16.5
|
||||
(word) memcpy::i#2 i zp ZP_WORD:8 5.5
|
||||
(word) memcpy::num
|
||||
(word) memcpy::num#3 num zp ZP_WORD:6 1.2222222222222223
|
||||
(void*) memcpy::return
|
||||
(void*) memcpy::source
|
||||
(void*) memcpy::source#2 source zp ZP_WORD:2
|
||||
(byte*) memcpy::src
|
||||
(byte*) memcpy::src#1 src zp ZP_WORD:2 7.333333333333333
|
||||
(byte*) memcpy::src#2 src zp ZP_WORD:2 11.666666666666666
|
||||
(byte*~) memcpy::src#3 src zp ZP_WORD:2 2.0
|
||||
|
||||
zp ZP_WORD:2 [ memcpy::source#2 memcpy::src#2 memcpy::src#3 memcpy::src#1 ]
|
||||
zp ZP_WORD:4 [ memcpy::destination#2 memcpy::dst#2 memcpy::dst#3 memcpy::dst#1 ]
|
||||
zp ZP_WORD:6 [ memcpy::num#3 ]
|
||||
zp ZP_WORD:8 [ memcpy::i#2 memcpy::i#1 ]
|
Loading…
Reference in New Issue
Block a user