mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-09-29 03:56:15 +00:00
10422 lines
590 KiB
Plaintext
10422 lines
590 KiB
Plaintext
Resolved forward reference frame_cnt to (volatile byte) frame_cnt
|
|
Resolved forward reference frame_cnt to (volatile byte) frame_cnt
|
|
Resolved forward reference frame_cnt to (volatile byte) frame_cnt
|
|
Resolved forward reference irq to interrupt(HARDWARE_CLOBBER)(void()) irq()
|
|
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
|
Inlined call (byte~) main::$3 ← call toD018 (const byte*) SCREEN (const byte*) BITMAP
|
|
|
|
CONTROL FLOW GRAPH SSA
|
|
@begin: scope:[] from
|
|
to:@1
|
|
@1: scope:[] from @begin
|
|
(word) rem16u#0 ← (word) 0
|
|
to:@2
|
|
|
|
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
|
divr16u: scope:[divr16u] from div32u16u div32u16u::@1
|
|
(word) divr16u::divisor#6 ← phi( div32u16u/(word) divr16u::divisor#0 div32u16u::@1/(word) divr16u::divisor#1 )
|
|
(word) divr16u::dividend#5 ← phi( div32u16u/(word) divr16u::dividend#1 div32u16u::@1/(word) divr16u::dividend#2 )
|
|
(word) divr16u::rem#10 ← phi( div32u16u/(word) divr16u::rem#3 div32u16u::@1/(word) divr16u::rem#4 )
|
|
(word) divr16u::quotient#0 ← (word) 0
|
|
(byte) divr16u::i#0 ← (byte) 0
|
|
to:divr16u::@1
|
|
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
|
(byte) divr16u::i#5 ← phi( divr16u/(byte) divr16u::i#0 divr16u::@3/(byte) divr16u::i#1 )
|
|
(word) divr16u::divisor#4 ← phi( divr16u/(word) divr16u::divisor#6 divr16u::@3/(word) divr16u::divisor#7 )
|
|
(word) divr16u::quotient#6 ← phi( divr16u/(word) divr16u::quotient#0 divr16u::@3/(word) divr16u::quotient#8 )
|
|
(word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#6 )
|
|
(word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
|
(word~) divr16u::$0 ← (word) divr16u::rem#5 << (number) 1
|
|
(word) divr16u::rem#0 ← (word~) divr16u::$0
|
|
(byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
|
(number~) divr16u::$2 ← (byte~) divr16u::$1 & (number) $80
|
|
(bool~) divr16u::$3 ← (number~) divr16u::$2 != (number) 0
|
|
(bool~) divr16u::$4 ← ! (bool~) divr16u::$3
|
|
if((bool~) divr16u::$4) goto divr16u::@2
|
|
to:divr16u::@4
|
|
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
|
(byte) divr16u::i#3 ← phi( divr16u::@1/(byte) divr16u::i#5 divr16u::@4/(byte) divr16u::i#6 )
|
|
(word) divr16u::divisor#2 ← phi( divr16u::@1/(word) divr16u::divisor#4 divr16u::@4/(word) divr16u::divisor#5 )
|
|
(word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
|
(word) divr16u::quotient#3 ← phi( divr16u::@1/(word) divr16u::quotient#6 divr16u::@4/(word) divr16u::quotient#7 )
|
|
(word) divr16u::dividend#4 ← phi( divr16u::@1/(word) divr16u::dividend#3 divr16u::@4/(word) divr16u::dividend#7 )
|
|
(word~) divr16u::$6 ← (word) divr16u::dividend#4 << (number) 1
|
|
(word) divr16u::dividend#0 ← (word~) divr16u::$6
|
|
(word~) divr16u::$7 ← (word) divr16u::quotient#3 << (number) 1
|
|
(word) divr16u::quotient#1 ← (word~) divr16u::$7
|
|
(bool~) divr16u::$8 ← (word) divr16u::rem#6 >= (word) divr16u::divisor#2
|
|
(bool~) divr16u::$9 ← ! (bool~) divr16u::$8
|
|
if((bool~) divr16u::$9) goto divr16u::@3
|
|
to:divr16u::@5
|
|
divr16u::@4: scope:[divr16u] from divr16u::@1
|
|
(byte) divr16u::i#6 ← phi( divr16u::@1/(byte) divr16u::i#5 )
|
|
(word) divr16u::divisor#5 ← phi( divr16u::@1/(word) divr16u::divisor#4 )
|
|
(word) divr16u::quotient#7 ← phi( divr16u::@1/(word) divr16u::quotient#6 )
|
|
(word) divr16u::dividend#7 ← phi( divr16u::@1/(word) divr16u::dividend#3 )
|
|
(word) divr16u::rem#7 ← phi( divr16u::@1/(word) divr16u::rem#0 )
|
|
(number~) divr16u::$5 ← (word) divr16u::rem#7 | (number) 1
|
|
(word) divr16u::rem#1 ← (number~) divr16u::$5
|
|
to:divr16u::@2
|
|
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
|
(word) divr16u::divisor#7 ← phi( divr16u::@2/(word) divr16u::divisor#2 divr16u::@5/(word) divr16u::divisor#3 )
|
|
(word) divr16u::quotient#8 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
|
(word) divr16u::dividend#6 ← phi( divr16u::@2/(word) divr16u::dividend#0 divr16u::@5/(word) divr16u::dividend#8 )
|
|
(word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
|
(byte) divr16u::i#2 ← phi( divr16u::@2/(byte) divr16u::i#3 divr16u::@5/(byte) divr16u::i#4 )
|
|
(byte) divr16u::i#1 ← (byte) divr16u::i#2 + rangenext(0,$f)
|
|
(bool~) divr16u::$11 ← (byte) divr16u::i#1 != rangelast(0,$f)
|
|
if((bool~) divr16u::$11) goto divr16u::@1
|
|
to:divr16u::@6
|
|
divr16u::@5: scope:[divr16u] from divr16u::@2
|
|
(word) divr16u::dividend#8 ← phi( divr16u::@2/(word) divr16u::dividend#0 )
|
|
(byte) divr16u::i#4 ← phi( divr16u::@2/(byte) divr16u::i#3 )
|
|
(word) divr16u::divisor#3 ← phi( divr16u::@2/(word) divr16u::divisor#2 )
|
|
(word) divr16u::rem#8 ← phi( divr16u::@2/(word) divr16u::rem#6 )
|
|
(word) divr16u::quotient#4 ← phi( divr16u::@2/(word) divr16u::quotient#1 )
|
|
(word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#4
|
|
(word~) divr16u::$10 ← (word) divr16u::rem#8 - (word) divr16u::divisor#3
|
|
(word) divr16u::rem#2 ← (word~) divr16u::$10
|
|
to:divr16u::@3
|
|
divr16u::@6: scope:[divr16u] from divr16u::@3
|
|
(word) divr16u::quotient#5 ← phi( divr16u::@3/(word) divr16u::quotient#8 )
|
|
(word) divr16u::rem#9 ← phi( divr16u::@3/(word) divr16u::rem#11 )
|
|
(word) rem16u#1 ← (word) divr16u::rem#9
|
|
(word) divr16u::return#0 ← (word) divr16u::quotient#5
|
|
to:divr16u::@return
|
|
divr16u::@return: scope:[divr16u] from divr16u::@6
|
|
(word) rem16u#11 ← phi( divr16u::@6/(word) rem16u#1 )
|
|
(word) divr16u::return#4 ← phi( divr16u::@6/(word) divr16u::return#0 )
|
|
(word) divr16u::return#1 ← (word) divr16u::return#4
|
|
(word) rem16u#2 ← (word) rem16u#11
|
|
return
|
|
to:@return
|
|
|
|
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
|
|
div32u16u: scope:[div32u16u] from sin16s_gen2
|
|
(word) rem16u#20 ← phi( sin16s_gen2/(word) rem16u#21 )
|
|
(word) div32u16u::divisor#1 ← phi( sin16s_gen2/(word) div32u16u::divisor#0 )
|
|
(dword) div32u16u::dividend#1 ← phi( sin16s_gen2/(dword) div32u16u::dividend#0 )
|
|
(word~) div32u16u::$0 ← > (dword) div32u16u::dividend#1
|
|
(word) divr16u::dividend#1 ← (word~) div32u16u::$0
|
|
(word) divr16u::divisor#0 ← (word) div32u16u::divisor#1
|
|
(word) divr16u::rem#3 ← (number) 0
|
|
call divr16u
|
|
(word) divr16u::return#2 ← (word) divr16u::return#1
|
|
to:div32u16u::@1
|
|
div32u16u::@1: scope:[div32u16u] from div32u16u
|
|
(word) div32u16u::divisor#2 ← phi( div32u16u/(word) div32u16u::divisor#1 )
|
|
(dword) div32u16u::dividend#2 ← phi( div32u16u/(dword) div32u16u::dividend#1 )
|
|
(word) rem16u#12 ← phi( div32u16u/(word) rem16u#2 )
|
|
(word) divr16u::return#5 ← phi( div32u16u/(word) divr16u::return#2 )
|
|
(word~) div32u16u::$1 ← (word) divr16u::return#5
|
|
(word) rem16u#3 ← (word) rem16u#12
|
|
(word) div32u16u::quotient_hi#0 ← (word~) div32u16u::$1
|
|
(word~) div32u16u::$2 ← < (dword) div32u16u::dividend#2
|
|
(word) divr16u::dividend#2 ← (word~) div32u16u::$2
|
|
(word) divr16u::divisor#1 ← (word) div32u16u::divisor#2
|
|
(word) divr16u::rem#4 ← (word) rem16u#3
|
|
call divr16u
|
|
(word) divr16u::return#3 ← (word) divr16u::return#1
|
|
to:div32u16u::@2
|
|
div32u16u::@2: scope:[div32u16u] from div32u16u::@1
|
|
(word) div32u16u::quotient_hi#1 ← phi( div32u16u::@1/(word) div32u16u::quotient_hi#0 )
|
|
(word) rem16u#13 ← phi( div32u16u::@1/(word) rem16u#2 )
|
|
(word) divr16u::return#6 ← phi( div32u16u::@1/(word) divr16u::return#3 )
|
|
(word~) div32u16u::$3 ← (word) divr16u::return#6
|
|
(word) rem16u#4 ← (word) rem16u#13
|
|
(word) div32u16u::quotient_lo#0 ← (word~) div32u16u::$3
|
|
(dword) div32u16u::quotient#0 ← (dword){ (word) div32u16u::quotient_hi#1, (word) div32u16u::quotient_lo#0 }
|
|
(dword) div32u16u::return#0 ← (dword) div32u16u::quotient#0
|
|
to:div32u16u::@return
|
|
div32u16u::@return: scope:[div32u16u] from div32u16u::@2
|
|
(word) rem16u#14 ← phi( div32u16u::@2/(word) rem16u#4 )
|
|
(dword) div32u16u::return#3 ← phi( div32u16u::@2/(dword) div32u16u::return#0 )
|
|
(dword) div32u16u::return#1 ← (dword) div32u16u::return#3
|
|
(word) rem16u#5 ← (word) rem16u#14
|
|
return
|
|
to:@return
|
|
|
|
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
|
|
mul16u: scope:[mul16u] from mul16s mulu16_sel
|
|
(word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 )
|
|
(word) mul16u::b#2 ← phi( mul16s/(word) mul16u::b#0 mulu16_sel/(word) mul16u::b#1 )
|
|
(dword) mul16u::res#0 ← (dword) 0
|
|
(dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2
|
|
to:mul16u::@1
|
|
mul16u::@1: scope:[mul16u] from mul16u mul16u::@4
|
|
(dword) mul16u::mb#5 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 )
|
|
(dword) mul16u::res#4 ← phi( mul16u/(dword) mul16u::res#0 mul16u::@4/(dword) mul16u::res#6 )
|
|
(word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 )
|
|
(bool~) mul16u::$0 ← (word) mul16u::a#3 != (number) 0
|
|
if((bool~) mul16u::$0) goto mul16u::@2
|
|
to:mul16u::@3
|
|
mul16u::@2: scope:[mul16u] from mul16u::@1
|
|
(dword) mul16u::res#5 ← phi( mul16u::@1/(dword) mul16u::res#4 )
|
|
(dword) mul16u::mb#4 ← phi( mul16u::@1/(dword) mul16u::mb#5 )
|
|
(word) mul16u::a#4 ← phi( mul16u::@1/(word) mul16u::a#3 )
|
|
(number~) mul16u::$1 ← (word) mul16u::a#4 & (number) 1
|
|
(bool~) mul16u::$2 ← (number~) mul16u::$1 != (number) 0
|
|
(bool~) mul16u::$3 ← ! (bool~) mul16u::$2
|
|
if((bool~) mul16u::$3) goto mul16u::@4
|
|
to:mul16u::@5
|
|
mul16u::@3: scope:[mul16u] from mul16u::@1
|
|
(dword) mul16u::res#2 ← phi( mul16u::@1/(dword) mul16u::res#4 )
|
|
(dword) mul16u::return#0 ← (dword) mul16u::res#2
|
|
to:mul16u::@return
|
|
mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@5
|
|
(dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#5 mul16u::@5/(dword) mul16u::res#1 )
|
|
(dword) mul16u::mb#2 ← phi( mul16u::@2/(dword) mul16u::mb#4 mul16u::@5/(dword) mul16u::mb#3 )
|
|
(word) mul16u::a#5 ← phi( mul16u::@2/(word) mul16u::a#4 mul16u::@5/(word) mul16u::a#7 )
|
|
(word~) mul16u::$5 ← (word) mul16u::a#5 >> (number) 1
|
|
(word) mul16u::a#0 ← (word~) mul16u::$5
|
|
(dword~) mul16u::$6 ← (dword) mul16u::mb#2 << (number) 1
|
|
(dword) mul16u::mb#1 ← (dword~) mul16u::$6
|
|
to:mul16u::@1
|
|
mul16u::@5: scope:[mul16u] from mul16u::@2
|
|
(word) mul16u::a#7 ← phi( mul16u::@2/(word) mul16u::a#4 )
|
|
(dword) mul16u::mb#3 ← phi( mul16u::@2/(dword) mul16u::mb#4 )
|
|
(dword) mul16u::res#3 ← phi( mul16u::@2/(dword) mul16u::res#5 )
|
|
(dword~) mul16u::$4 ← (dword) mul16u::res#3 + (dword) mul16u::mb#3
|
|
(dword) mul16u::res#1 ← (dword~) mul16u::$4
|
|
to:mul16u::@4
|
|
mul16u::@return: scope:[mul16u] from mul16u::@3
|
|
(dword) mul16u::return#4 ← phi( mul16u::@3/(dword) mul16u::return#0 )
|
|
(dword) mul16u::return#1 ← (dword) mul16u::return#4
|
|
return
|
|
to:@return
|
|
|
|
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
|
mul16s: scope:[mul16s] from main::@16 main::@2 sin16s_gen2::@4
|
|
(signed word) mul16s::b#3 ← phi( main::@16/(signed word) mul16s::b#2 main::@2/(signed word) mul16s::b#1 sin16s_gen2::@4/(signed word) mul16s::b#0 )
|
|
(signed word) mul16s::a#3 ← phi( main::@16/(signed word) mul16s::a#2 main::@2/(signed word) mul16s::a#1 sin16s_gen2::@4/(signed word) mul16s::a#0 )
|
|
(word) mul16u::a#1 ← (word)(signed word) mul16s::a#3
|
|
(word) mul16u::b#0 ← (word)(signed word) mul16s::b#3
|
|
call mul16u
|
|
(dword) mul16u::return#2 ← (dword) mul16u::return#1
|
|
to:mul16s::@5
|
|
mul16s::@5: scope:[mul16s] from mul16s
|
|
(signed word) mul16s::b#6 ← phi( mul16s/(signed word) mul16s::b#3 )
|
|
(signed word) mul16s::a#4 ← phi( mul16s/(signed word) mul16s::a#3 )
|
|
(dword) mul16u::return#5 ← phi( mul16s/(dword) mul16u::return#2 )
|
|
(dword~) mul16s::$0 ← (dword) mul16u::return#5
|
|
(dword) mul16s::m#0 ← (dword~) mul16s::$0
|
|
(bool~) mul16s::$1 ← (signed word) mul16s::a#4 < (number) 0
|
|
(bool~) mul16s::$2 ← ! (bool~) mul16s::$1
|
|
if((bool~) mul16s::$2) goto mul16s::@1
|
|
to:mul16s::@3
|
|
mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@5
|
|
(signed word) mul16s::a#6 ← phi( mul16s::@3/(signed word) mul16s::a#7 mul16s::@5/(signed word) mul16s::a#4 )
|
|
(dword) mul16s::m#6 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 )
|
|
(signed word) mul16s::b#4 ← phi( mul16s::@3/(signed word) mul16s::b#5 mul16s::@5/(signed word) mul16s::b#6 )
|
|
(bool~) mul16s::$3 ← (signed word) mul16s::b#4 < (number) 0
|
|
(bool~) mul16s::$4 ← ! (bool~) mul16s::$3
|
|
if((bool~) mul16s::$4) goto mul16s::@2
|
|
to:mul16s::@4
|
|
mul16s::@3: scope:[mul16s] from mul16s::@5
|
|
(signed word) mul16s::a#7 ← phi( mul16s::@5/(signed word) mul16s::a#4 )
|
|
(signed word) mul16s::b#5 ← phi( mul16s::@5/(signed word) mul16s::b#6 )
|
|
(dword) mul16s::m#3 ← phi( mul16s::@5/(dword) mul16s::m#0 )
|
|
(word~) mul16s::$6 ← > (dword) mul16s::m#3
|
|
(word~) mul16s::$13 ← (word)(signed word) mul16s::b#5
|
|
(word~) mul16s::$7 ← (word~) mul16s::$6 - (word~) mul16s::$13
|
|
(word~) mul16s::$11 ← (word~) mul16s::$7
|
|
(dword) mul16s::m#1 ← (dword) mul16s::m#3 hi= (word~) mul16s::$11
|
|
to:mul16s::@1
|
|
mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4
|
|
(dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#6 mul16s::@4/(dword) mul16s::m#2 )
|
|
(signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4
|
|
to:mul16s::@return
|
|
mul16s::@4: scope:[mul16s] from mul16s::@1
|
|
(signed word) mul16s::a#5 ← phi( mul16s::@1/(signed word) mul16s::a#6 )
|
|
(dword) mul16s::m#5 ← phi( mul16s::@1/(dword) mul16s::m#6 )
|
|
(word~) mul16s::$9 ← > (dword) mul16s::m#5
|
|
(word~) mul16s::$14 ← (word)(signed word) mul16s::a#5
|
|
(word~) mul16s::$10 ← (word~) mul16s::$9 - (word~) mul16s::$14
|
|
(word~) mul16s::$12 ← (word~) mul16s::$10
|
|
(dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$12
|
|
to:mul16s::@2
|
|
mul16s::@return: scope:[mul16s] from mul16s::@2
|
|
(signed dword) mul16s::return#5 ← phi( mul16s::@2/(signed dword) mul16s::return#0 )
|
|
(signed dword) mul16s::return#1 ← (signed dword) mul16s::return#5
|
|
return
|
|
to:@return
|
|
|
|
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
|
|
sin16s_gen2: scope:[sin16s_gen2] from main
|
|
(signed word*) sin16s_gen2::sintab#7 ← phi( main/(signed word*) sin16s_gen2::sintab#1 )
|
|
(word) rem16u#21 ← phi( main/(word) rem16u#23 )
|
|
(word) sin16s_gen2::wavelength#1 ← phi( main/(word) sin16s_gen2::wavelength#0 )
|
|
(signed word) sin16s_gen2::min#1 ← phi( main/(signed word) sin16s_gen2::min#0 )
|
|
(signed word) sin16s_gen2::max#1 ← phi( main/(signed word) sin16s_gen2::max#0 )
|
|
(signed word~) sin16s_gen2::$0 ← (signed word) sin16s_gen2::max#1 - (signed word) sin16s_gen2::min#1
|
|
(signed word) sin16s_gen2::ampl#0 ← (signed word~) sin16s_gen2::$0
|
|
(signed word~) sin16s_gen2::$1 ← (signed word) sin16s_gen2::ampl#0 >> (number) 1
|
|
(signed word~) sin16s_gen2::$2 ← (signed word) sin16s_gen2::min#1 + (signed word~) sin16s_gen2::$1
|
|
(signed word) sin16s_gen2::offs#0 ← (signed word~) sin16s_gen2::$2
|
|
(dword) div32u16u::dividend#0 ← (const nomodify dword) PI2_u4f28
|
|
(word) div32u16u::divisor#0 ← (word) sin16s_gen2::wavelength#1
|
|
call div32u16u
|
|
(dword) div32u16u::return#2 ← (dword) div32u16u::return#1
|
|
to:sin16s_gen2::@3
|
|
sin16s_gen2::@3: scope:[sin16s_gen2] from sin16s_gen2
|
|
(signed word*) sin16s_gen2::sintab#6 ← phi( sin16s_gen2/(signed word*) sin16s_gen2::sintab#7 )
|
|
(signed word) sin16s_gen2::offs#5 ← phi( sin16s_gen2/(signed word) sin16s_gen2::offs#0 )
|
|
(signed word) sin16s_gen2::ampl#4 ← phi( sin16s_gen2/(signed word) sin16s_gen2::ampl#0 )
|
|
(word) sin16s_gen2::wavelength#3 ← phi( sin16s_gen2/(word) sin16s_gen2::wavelength#1 )
|
|
(word) rem16u#15 ← phi( sin16s_gen2/(word) rem16u#5 )
|
|
(dword) div32u16u::return#4 ← phi( sin16s_gen2/(dword) div32u16u::return#2 )
|
|
(dword~) sin16s_gen2::$3 ← (dword) div32u16u::return#4
|
|
(word) rem16u#6 ← (word) rem16u#15
|
|
(dword) sin16s_gen2::step#0 ← (dword~) sin16s_gen2::$3
|
|
(dword) sin16s_gen2::x#0 ← (dword) 0
|
|
(word) sin16s_gen2::i#0 ← (word) 0
|
|
to:sin16s_gen2::@1
|
|
sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2::@3 sin16s_gen2::@5
|
|
(dword) sin16s_gen2::step#4 ← phi( sin16s_gen2::@3/(dword) sin16s_gen2::step#0 sin16s_gen2::@5/(dword) sin16s_gen2::step#1 )
|
|
(signed word*) sin16s_gen2::sintab#5 ← phi( sin16s_gen2::@3/(signed word*) sin16s_gen2::sintab#6 sin16s_gen2::@5/(signed word*) sin16s_gen2::sintab#0 )
|
|
(signed word) sin16s_gen2::offs#4 ← phi( sin16s_gen2::@3/(signed word) sin16s_gen2::offs#5 sin16s_gen2::@5/(signed word) sin16s_gen2::offs#1 )
|
|
(signed word) sin16s_gen2::ampl#3 ← phi( sin16s_gen2::@3/(signed word) sin16s_gen2::ampl#4 sin16s_gen2::@5/(signed word) sin16s_gen2::ampl#5 )
|
|
(word) rem16u#22 ← phi( sin16s_gen2::@3/(word) rem16u#6 sin16s_gen2::@5/(word) rem16u#26 )
|
|
(dword) sin16s_gen2::x#4 ← phi( sin16s_gen2::@3/(dword) sin16s_gen2::x#0 sin16s_gen2::@5/(dword) sin16s_gen2::x#1 )
|
|
(word) sin16s_gen2::wavelength#2 ← phi( sin16s_gen2::@3/(word) sin16s_gen2::wavelength#3 sin16s_gen2::@5/(word) sin16s_gen2::wavelength#4 )
|
|
(word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@3/(word) sin16s_gen2::i#0 sin16s_gen2::@5/(word) sin16s_gen2::i#1 )
|
|
(bool~) sin16s_gen2::$4 ← (word) sin16s_gen2::i#2 < (word) sin16s_gen2::wavelength#2
|
|
if((bool~) sin16s_gen2::$4) goto sin16s_gen2::@2
|
|
to:sin16s_gen2::@return
|
|
sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2::@1
|
|
(word) rem16u#36 ← phi( sin16s_gen2::@1/(word) rem16u#22 )
|
|
(word) sin16s_gen2::wavelength#6 ← phi( sin16s_gen2::@1/(word) sin16s_gen2::wavelength#2 )
|
|
(word) sin16s_gen2::i#5 ← phi( sin16s_gen2::@1/(word) sin16s_gen2::i#2 )
|
|
(dword) sin16s_gen2::step#3 ← phi( sin16s_gen2::@1/(dword) sin16s_gen2::step#4 )
|
|
(signed word*) sin16s_gen2::sintab#4 ← phi( sin16s_gen2::@1/(signed word*) sin16s_gen2::sintab#5 )
|
|
(signed word) sin16s_gen2::offs#3 ← phi( sin16s_gen2::@1/(signed word) sin16s_gen2::offs#4 )
|
|
(signed word) sin16s_gen2::ampl#2 ← phi( sin16s_gen2::@1/(signed word) sin16s_gen2::ampl#3 )
|
|
(dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@1/(dword) sin16s_gen2::x#4 )
|
|
(dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2
|
|
call sin16s
|
|
(signed word) sin16s::return#0 ← (signed word) sin16s::return#2
|
|
to:sin16s_gen2::@4
|
|
sin16s_gen2::@4: scope:[sin16s_gen2] from sin16s_gen2::@2
|
|
(word) rem16u#31 ← phi( sin16s_gen2::@2/(word) rem16u#36 )
|
|
(word) sin16s_gen2::wavelength#5 ← phi( sin16s_gen2::@2/(word) sin16s_gen2::wavelength#6 )
|
|
(word) sin16s_gen2::i#4 ← phi( sin16s_gen2::@2/(word) sin16s_gen2::i#5 )
|
|
(dword) sin16s_gen2::step#2 ← phi( sin16s_gen2::@2/(dword) sin16s_gen2::step#3 )
|
|
(dword) sin16s_gen2::x#5 ← phi( sin16s_gen2::@2/(dword) sin16s_gen2::x#2 )
|
|
(signed word*) sin16s_gen2::sintab#3 ← phi( sin16s_gen2::@2/(signed word*) sin16s_gen2::sintab#4 )
|
|
(signed word) sin16s_gen2::offs#2 ← phi( sin16s_gen2::@2/(signed word) sin16s_gen2::offs#3 )
|
|
(signed word) sin16s_gen2::ampl#1 ← phi( sin16s_gen2::@2/(signed word) sin16s_gen2::ampl#2 )
|
|
(signed word) sin16s::return#3 ← phi( sin16s_gen2::@2/(signed word) sin16s::return#0 )
|
|
(signed word~) sin16s_gen2::$5 ← (signed word) sin16s::return#3
|
|
(signed word) mul16s::a#0 ← (signed word~) sin16s_gen2::$5
|
|
(signed word) mul16s::b#0 ← (signed word) sin16s_gen2::ampl#1
|
|
call mul16s
|
|
(signed dword) mul16s::return#2 ← (signed dword) mul16s::return#1
|
|
to:sin16s_gen2::@5
|
|
sin16s_gen2::@5: scope:[sin16s_gen2] from sin16s_gen2::@4
|
|
(signed word) sin16s_gen2::ampl#5 ← phi( sin16s_gen2::@4/(signed word) sin16s_gen2::ampl#1 )
|
|
(word) rem16u#26 ← phi( sin16s_gen2::@4/(word) rem16u#31 )
|
|
(word) sin16s_gen2::wavelength#4 ← phi( sin16s_gen2::@4/(word) sin16s_gen2::wavelength#5 )
|
|
(word) sin16s_gen2::i#3 ← phi( sin16s_gen2::@4/(word) sin16s_gen2::i#4 )
|
|
(dword) sin16s_gen2::step#1 ← phi( sin16s_gen2::@4/(dword) sin16s_gen2::step#2 )
|
|
(dword) sin16s_gen2::x#3 ← phi( sin16s_gen2::@4/(dword) sin16s_gen2::x#5 )
|
|
(signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@4/(signed word*) sin16s_gen2::sintab#3 )
|
|
(signed word) sin16s_gen2::offs#1 ← phi( sin16s_gen2::@4/(signed word) sin16s_gen2::offs#2 )
|
|
(signed dword) mul16s::return#6 ← phi( sin16s_gen2::@4/(signed dword) mul16s::return#2 )
|
|
(signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#6
|
|
(word~) sin16s_gen2::$7 ← > (signed dword~) sin16s_gen2::$6
|
|
(signed word~) sin16s_gen2::$10 ← (signed word)(word~) sin16s_gen2::$7
|
|
(signed word~) sin16s_gen2::$8 ← (signed word) sin16s_gen2::offs#1 + (signed word~) sin16s_gen2::$10
|
|
*((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8
|
|
(signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
|
|
(dword~) sin16s_gen2::$9 ← (dword) sin16s_gen2::x#3 + (dword) sin16s_gen2::step#1
|
|
(dword) sin16s_gen2::x#1 ← (dword~) sin16s_gen2::$9
|
|
(word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#3
|
|
to:sin16s_gen2::@1
|
|
sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@1
|
|
(word) rem16u#16 ← phi( sin16s_gen2::@1/(word) rem16u#22 )
|
|
(word) rem16u#7 ← (word) rem16u#16
|
|
return
|
|
to:@return
|
|
|
|
(signed word()) sin16s((dword) sin16s::x)
|
|
sin16s: scope:[sin16s] from sin16s_gen2::@2
|
|
(dword) sin16s::x#3 ← phi( sin16s_gen2::@2/(dword) sin16s::x#0 )
|
|
(byte) sin16s::isUpper#0 ← (byte) 0
|
|
(bool~) sin16s::$0 ← (dword) sin16s::x#3 >= (const nomodify dword) PI_u4f28
|
|
(bool~) sin16s::$1 ← ! (bool~) sin16s::$0
|
|
if((bool~) sin16s::$1) goto sin16s::@1
|
|
to:sin16s::@4
|
|
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
|
|
(byte) sin16s::isUpper#8 ← phi( sin16s/(byte) sin16s::isUpper#0 sin16s::@4/(byte) sin16s::isUpper#1 )
|
|
(dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#3 sin16s::@4/(dword) sin16s::x#1 )
|
|
(bool~) sin16s::$2 ← (dword) sin16s::x#4 >= (const nomodify dword) PI_HALF_u4f28
|
|
(bool~) sin16s::$3 ← ! (bool~) sin16s::$2
|
|
if((bool~) sin16s::$3) goto sin16s::@2
|
|
to:sin16s::@5
|
|
sin16s::@4: scope:[sin16s] from sin16s
|
|
(dword) sin16s::x#5 ← phi( sin16s/(dword) sin16s::x#3 )
|
|
(dword~) sin16s::$16 ← (dword) sin16s::x#5 - (const nomodify dword) PI_u4f28
|
|
(dword) sin16s::x#1 ← (dword~) sin16s::$16
|
|
(byte) sin16s::isUpper#1 ← (number) 1
|
|
to:sin16s::@1
|
|
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
|
|
(byte) sin16s::isUpper#7 ← phi( sin16s::@1/(byte) sin16s::isUpper#8 sin16s::@5/(byte) sin16s::isUpper#9 )
|
|
(dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
|
|
(dword~) sin16s::$4 ← (dword) sin16s::x#6 << (number) 3
|
|
(word~) sin16s::$5 ← > (dword~) sin16s::$4
|
|
(word) sin16s::x1#0 ← (word~) sin16s::$5
|
|
(word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
|
|
(word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
|
|
(byte) mulu16_sel::select#0 ← (number) 0
|
|
call mulu16_sel
|
|
(word) mulu16_sel::return#0 ← (word) mulu16_sel::return#6
|
|
to:sin16s::@7
|
|
sin16s::@7: scope:[sin16s] from sin16s::@2
|
|
(byte) sin16s::isUpper#6 ← phi( sin16s::@2/(byte) sin16s::isUpper#7 )
|
|
(word) sin16s::x1#1 ← phi( sin16s::@2/(word) sin16s::x1#0 )
|
|
(word) mulu16_sel::return#7 ← phi( sin16s::@2/(word) mulu16_sel::return#0 )
|
|
(word~) sin16s::$6 ← (word) mulu16_sel::return#7
|
|
(word) sin16s::x2#0 ← (word~) sin16s::$6
|
|
(word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
|
(word) mulu16_sel::v2#1 ← (word) sin16s::x1#1
|
|
(byte) mulu16_sel::select#1 ← (number) 1
|
|
call mulu16_sel
|
|
(word) mulu16_sel::return#1 ← (word) mulu16_sel::return#6
|
|
to:sin16s::@8
|
|
sin16s::@8: scope:[sin16s] from sin16s::@7
|
|
(byte) sin16s::isUpper#5 ← phi( sin16s::@7/(byte) sin16s::isUpper#6 )
|
|
(word) sin16s::x1#4 ← phi( sin16s::@7/(word) sin16s::x1#1 )
|
|
(word) mulu16_sel::return#8 ← phi( sin16s::@7/(word) mulu16_sel::return#1 )
|
|
(word~) sin16s::$7 ← (word) mulu16_sel::return#8
|
|
(word) sin16s::x3#0 ← (word~) sin16s::$7
|
|
(word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
|
(word) mulu16_sel::v2#2 ← (number) $10000/(number) 6
|
|
(byte) mulu16_sel::select#2 ← (number) 1
|
|
call mulu16_sel
|
|
(word) mulu16_sel::return#2 ← (word) mulu16_sel::return#6
|
|
to:sin16s::@9
|
|
sin16s::@9: scope:[sin16s] from sin16s::@8
|
|
(byte) sin16s::isUpper#4 ← phi( sin16s::@8/(byte) sin16s::isUpper#5 )
|
|
(word) sin16s::x3#1 ← phi( sin16s::@8/(word) sin16s::x3#0 )
|
|
(word) sin16s::x1#2 ← phi( sin16s::@8/(word) sin16s::x1#4 )
|
|
(word) mulu16_sel::return#9 ← phi( sin16s::@8/(word) mulu16_sel::return#2 )
|
|
(word~) sin16s::$8 ← (word) mulu16_sel::return#9
|
|
(word) sin16s::x3_6#0 ← (word~) sin16s::$8
|
|
(word~) sin16s::$9 ← (word) sin16s::x1#2 - (word) sin16s::x3_6#0
|
|
(word) sin16s::usinx#0 ← (word~) sin16s::$9
|
|
(word) mulu16_sel::v1#3 ← (word) sin16s::x3#1
|
|
(word) mulu16_sel::v2#3 ← (word) sin16s::x1#2
|
|
(byte) mulu16_sel::select#3 ← (number) 0
|
|
call mulu16_sel
|
|
(word) mulu16_sel::return#3 ← (word) mulu16_sel::return#6
|
|
to:sin16s::@10
|
|
sin16s::@10: scope:[sin16s] from sin16s::@9
|
|
(byte) sin16s::isUpper#3 ← phi( sin16s::@9/(byte) sin16s::isUpper#4 )
|
|
(word) sin16s::usinx#4 ← phi( sin16s::@9/(word) sin16s::usinx#0 )
|
|
(word) sin16s::x1#3 ← phi( sin16s::@9/(word) sin16s::x1#2 )
|
|
(word) mulu16_sel::return#10 ← phi( sin16s::@9/(word) mulu16_sel::return#3 )
|
|
(word~) sin16s::$10 ← (word) mulu16_sel::return#10
|
|
(word) sin16s::x4#0 ← (word~) sin16s::$10
|
|
(word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
|
(word) mulu16_sel::v2#4 ← (word) sin16s::x1#3
|
|
(byte) mulu16_sel::select#4 ← (number) 0
|
|
call mulu16_sel
|
|
(word) mulu16_sel::return#4 ← (word) mulu16_sel::return#6
|
|
to:sin16s::@11
|
|
sin16s::@11: scope:[sin16s] from sin16s::@10
|
|
(byte) sin16s::isUpper#2 ← phi( sin16s::@10/(byte) sin16s::isUpper#3 )
|
|
(word) sin16s::usinx#2 ← phi( sin16s::@10/(word) sin16s::usinx#4 )
|
|
(word) mulu16_sel::return#11 ← phi( sin16s::@10/(word) mulu16_sel::return#4 )
|
|
(word~) sin16s::$11 ← (word) mulu16_sel::return#11
|
|
(word) sin16s::x5#0 ← (word~) sin16s::$11
|
|
(word~) sin16s::$12 ← (word) sin16s::x5#0 >> (number) 4
|
|
(word) sin16s::x5_128#0 ← (word~) sin16s::$12
|
|
(word~) sin16s::$13 ← (word) sin16s::usinx#2 + (word) sin16s::x5_128#0
|
|
(word) sin16s::usinx#1 ← (word~) sin16s::$13
|
|
(signed word) sin16s::sinx#0 ← (signed word)(word) sin16s::usinx#1
|
|
(bool~) sin16s::$14 ← (byte) sin16s::isUpper#2 != (number) 0
|
|
(bool~) sin16s::$15 ← ! (bool~) sin16s::$14
|
|
if((bool~) sin16s::$15) goto sin16s::@3
|
|
to:sin16s::@6
|
|
sin16s::@5: scope:[sin16s] from sin16s::@1
|
|
(byte) sin16s::isUpper#9 ← phi( sin16s::@1/(byte) sin16s::isUpper#8 )
|
|
(dword) sin16s::x#7 ← phi( sin16s::@1/(dword) sin16s::x#4 )
|
|
(dword~) sin16s::$17 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#7
|
|
(dword) sin16s::x#2 ← (dword~) sin16s::$17
|
|
to:sin16s::@2
|
|
sin16s::@3: scope:[sin16s] from sin16s::@11 sin16s::@6
|
|
(signed word) sin16s::sinx#2 ← phi( sin16s::@11/(signed word) sin16s::sinx#0 sin16s::@6/(signed word) sin16s::sinx#1 )
|
|
(signed word) sin16s::return#1 ← (signed word) sin16s::sinx#2
|
|
to:sin16s::@return
|
|
sin16s::@6: scope:[sin16s] from sin16s::@11
|
|
(word) sin16s::usinx#3 ← phi( sin16s::@11/(word) sin16s::usinx#1 )
|
|
(signed word~) sin16s::$18 ← - (signed word)(word) sin16s::usinx#3
|
|
(signed word) sin16s::sinx#1 ← (signed word~) sin16s::$18
|
|
to:sin16s::@3
|
|
sin16s::@return: scope:[sin16s] from sin16s::@3
|
|
(signed word) sin16s::return#4 ← phi( sin16s::@3/(signed word) sin16s::return#1 )
|
|
(signed word) sin16s::return#2 ← (signed word) sin16s::return#4
|
|
return
|
|
to:@return
|
|
|
|
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
|
|
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9
|
|
(byte) mulu16_sel::select#6 ← phi( sin16s::@10/(byte) mulu16_sel::select#4 sin16s::@2/(byte) mulu16_sel::select#0 sin16s::@7/(byte) mulu16_sel::select#1 sin16s::@8/(byte) mulu16_sel::select#2 sin16s::@9/(byte) mulu16_sel::select#3 )
|
|
(word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(word) mulu16_sel::v2#2 sin16s::@9/(word) mulu16_sel::v2#3 )
|
|
(word) mulu16_sel::v1#5 ← phi( 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 sin16s::@9/(word) mulu16_sel::v1#3 )
|
|
(word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
|
(word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
|
call mul16u
|
|
(dword) mul16u::return#3 ← (dword) mul16u::return#1
|
|
to:mulu16_sel::@1
|
|
mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel
|
|
(byte) mulu16_sel::select#5 ← phi( mulu16_sel/(byte) mulu16_sel::select#6 )
|
|
(dword) mul16u::return#6 ← phi( mulu16_sel/(dword) mul16u::return#3 )
|
|
(dword~) mulu16_sel::$0 ← (dword) mul16u::return#6
|
|
(dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
|
|
(word~) mulu16_sel::$2 ← > (dword~) mulu16_sel::$1
|
|
(word) mulu16_sel::return#5 ← (word~) mulu16_sel::$2
|
|
to:mulu16_sel::@return
|
|
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1
|
|
(word) mulu16_sel::return#12 ← phi( mulu16_sel::@1/(word) mulu16_sel::return#5 )
|
|
(word) mulu16_sel::return#6 ← (word) mulu16_sel::return#12
|
|
return
|
|
to:@return
|
|
|
|
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
|
memset: scope:[memset] from bitmap_clear bitmap_clear::@1
|
|
(byte) memset::c#5 ← phi( bitmap_clear/(byte) memset::c#0 bitmap_clear::@1/(byte) memset::c#1 )
|
|
(void*) memset::str#4 ← phi( bitmap_clear/(void*) memset::str#0 bitmap_clear::@1/(void*) memset::str#1 )
|
|
(word) memset::num#2 ← phi( bitmap_clear/(word) memset::num#0 bitmap_clear::@1/(word) memset::num#1 )
|
|
(bool~) memset::$0 ← (word) memset::num#2 > (number) 0
|
|
(bool~) memset::$1 ← ! (bool~) memset::$0
|
|
if((bool~) memset::$1) goto memset::@1
|
|
to:memset::@2
|
|
memset::@1: scope:[memset] from memset memset::@3
|
|
(void*) memset::str#2 ← phi( memset/(void*) memset::str#4 memset::@3/(void*) memset::str#5 )
|
|
(void*) memset::return#0 ← (void*) memset::str#2
|
|
to:memset::@return
|
|
memset::@2: scope:[memset] from memset
|
|
(byte) memset::c#4 ← phi( memset/(byte) memset::c#5 )
|
|
(word) memset::num#3 ← phi( memset/(word) memset::num#2 )
|
|
(void*) memset::str#3 ← phi( memset/(void*) memset::str#4 )
|
|
(byte*~) memset::$4 ← (byte*)(void*) memset::str#3
|
|
(byte*~) memset::$2 ← (byte*~) memset::$4 + (word) memset::num#3
|
|
(byte*) memset::end#0 ← (byte*~) memset::$2
|
|
(byte*) memset::dst#0 ← ((byte*)) (void*) memset::str#3
|
|
to:memset::@3
|
|
memset::@3: scope:[memset] from memset::@2 memset::@4
|
|
(byte) memset::c#3 ← phi( memset::@2/(byte) memset::c#4 memset::@4/(byte) memset::c#2 )
|
|
(void*) memset::str#5 ← phi( memset::@2/(void*) memset::str#3 memset::@4/(void*) memset::str#6 )
|
|
(byte*) memset::end#1 ← phi( memset::@2/(byte*) memset::end#0 memset::@4/(byte*) memset::end#2 )
|
|
(byte*) memset::dst#2 ← phi( memset::@2/(byte*) memset::dst#0 memset::@4/(byte*) memset::dst#1 )
|
|
(bool~) memset::$3 ← (byte*) memset::dst#2 != (byte*) memset::end#1
|
|
if((bool~) memset::$3) goto memset::@4
|
|
to:memset::@1
|
|
memset::@4: scope:[memset] from memset::@3
|
|
(void*) memset::str#6 ← phi( memset::@3/(void*) memset::str#5 )
|
|
(byte*) memset::end#2 ← phi( memset::@3/(byte*) memset::end#1 )
|
|
(byte*) memset::dst#3 ← phi( memset::@3/(byte*) memset::dst#2 )
|
|
(byte) memset::c#2 ← phi( memset::@3/(byte) memset::c#3 )
|
|
*((byte*) memset::dst#3) ← (byte) memset::c#2
|
|
(byte*) memset::dst#1 ← ++ (byte*) memset::dst#3
|
|
to:memset::@3
|
|
memset::@return: scope:[memset] from memset::@1
|
|
(void*) memset::return#4 ← phi( memset::@1/(void*) memset::return#0 )
|
|
(void*) memset::return#1 ← (void*) memset::return#4
|
|
return
|
|
to:@return
|
|
@2: scope:[] from @1
|
|
(word) rem16u#35 ← phi( @1/(word) rem16u#0 )
|
|
(byte*) bitmap_screen#0 ← (byte*) 0
|
|
(byte*) bitmap_gfx#0 ← (byte*) 0
|
|
to:@3
|
|
|
|
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
|
|
bitmap_init: scope:[bitmap_init] from main::@12
|
|
(byte*) bitmap_init::screen#1 ← phi( main::@12/(byte*) bitmap_init::screen#0 )
|
|
(byte*) bitmap_init::gfx#1 ← phi( main::@12/(byte*) bitmap_init::gfx#0 )
|
|
(byte*) bitmap_gfx#1 ← (byte*) bitmap_init::gfx#1
|
|
(byte*) bitmap_screen#1 ← (byte*) bitmap_init::screen#1
|
|
(byte) bitmap_init::bits#0 ← (byte) $80
|
|
(byte) bitmap_init::x#0 ← (byte) 0
|
|
to:bitmap_init::@1
|
|
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
|
|
(byte*) bitmap_screen#30 ← phi( bitmap_init/(byte*) bitmap_screen#1 bitmap_init::@2/(byte*) bitmap_screen#26 )
|
|
(byte*) bitmap_gfx#31 ← phi( bitmap_init/(byte*) bitmap_gfx#1 bitmap_init::@2/(byte*) bitmap_gfx#27 )
|
|
(byte*) bitmap_init::gfx#4 ← phi( bitmap_init/(byte*) bitmap_init::gfx#1 bitmap_init::@2/(byte*) bitmap_init::gfx#3 )
|
|
(byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) bitmap_init::x#0 bitmap_init::@2/(byte) bitmap_init::x#1 )
|
|
(byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) bitmap_init::bits#0 bitmap_init::@2/(byte) bitmap_init::bits#4 )
|
|
*((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
|
|
(byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (number) 1
|
|
(bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (number) 0
|
|
(bool~) bitmap_init::$1 ← ! (bool~) bitmap_init::$0
|
|
if((bool~) bitmap_init::$1) goto bitmap_init::@2
|
|
to:bitmap_init::@3
|
|
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@3
|
|
(byte*) bitmap_screen#26 ← phi( bitmap_init::@1/(byte*) bitmap_screen#30 bitmap_init::@3/(byte*) bitmap_screen#31 )
|
|
(byte*) bitmap_gfx#27 ← phi( bitmap_init::@1/(byte*) bitmap_gfx#31 bitmap_init::@3/(byte*) bitmap_gfx#32 )
|
|
(byte*) bitmap_init::gfx#3 ← phi( bitmap_init::@1/(byte*) bitmap_init::gfx#4 bitmap_init::@3/(byte*) bitmap_init::gfx#5 )
|
|
(byte) bitmap_init::bits#4 ← phi( bitmap_init::@1/(byte) bitmap_init::bits#1 bitmap_init::@3/(byte) bitmap_init::bits#2 )
|
|
(byte) bitmap_init::x#3 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 bitmap_init::@3/(byte) bitmap_init::x#4 )
|
|
(byte) bitmap_init::x#1 ← (byte) bitmap_init::x#3 + rangenext(0,$ff)
|
|
(bool~) bitmap_init::$2 ← (byte) bitmap_init::x#1 != rangelast(0,$ff)
|
|
if((bool~) bitmap_init::$2) goto bitmap_init::@1
|
|
to:bitmap_init::@4
|
|
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@1
|
|
(byte*) bitmap_screen#31 ← phi( bitmap_init::@1/(byte*) bitmap_screen#30 )
|
|
(byte*) bitmap_gfx#32 ← phi( bitmap_init::@1/(byte*) bitmap_gfx#31 )
|
|
(byte*) bitmap_init::gfx#5 ← phi( bitmap_init::@1/(byte*) bitmap_init::gfx#4 )
|
|
(byte) bitmap_init::x#4 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 )
|
|
(byte) bitmap_init::bits#2 ← (number) $80
|
|
to:bitmap_init::@2
|
|
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@2
|
|
(byte*) bitmap_screen#22 ← phi( bitmap_init::@2/(byte*) bitmap_screen#26 )
|
|
(byte*) bitmap_gfx#23 ← phi( bitmap_init::@2/(byte*) bitmap_gfx#27 )
|
|
(byte*) bitmap_init::gfx#2 ← phi( bitmap_init::@2/(byte*) bitmap_init::gfx#3 )
|
|
(byte*) bitmap_init::yoffs#0 ← (byte*) bitmap_init::gfx#2
|
|
(byte) bitmap_init::y#0 ← (byte) 0
|
|
to:bitmap_init::@5
|
|
bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@4 bitmap_init::@6
|
|
(byte*) bitmap_screen#15 ← phi( bitmap_init::@4/(byte*) bitmap_screen#22 bitmap_init::@6/(byte*) bitmap_screen#11 )
|
|
(byte*) bitmap_gfx#16 ← phi( bitmap_init::@4/(byte*) bitmap_gfx#23 bitmap_init::@6/(byte*) bitmap_gfx#11 )
|
|
(byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#0 bitmap_init::@6/(byte*) bitmap_init::yoffs#4 )
|
|
(byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#0 bitmap_init::@6/(byte) bitmap_init::y#1 )
|
|
(number~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (number) 7
|
|
(byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
|
|
(number~) bitmap_init::$5 ← (number~) bitmap_init::$3 | (byte~) bitmap_init::$4
|
|
*((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (number~) bitmap_init::$5
|
|
(byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
|
|
*((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
|
|
(number~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (number) 7
|
|
(bool~) bitmap_init::$8 ← (number~) bitmap_init::$7 == (number) 7
|
|
(bool~) bitmap_init::$9 ← ! (bool~) bitmap_init::$8
|
|
if((bool~) bitmap_init::$9) goto bitmap_init::@6
|
|
to:bitmap_init::@7
|
|
bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@5 bitmap_init::@7
|
|
(byte*) bitmap_screen#11 ← phi( bitmap_init::@5/(byte*) bitmap_screen#15 bitmap_init::@7/(byte*) bitmap_screen#16 )
|
|
(byte*) bitmap_gfx#11 ← phi( bitmap_init::@5/(byte*) bitmap_gfx#16 bitmap_init::@7/(byte*) bitmap_gfx#17 )
|
|
(byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@5/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 )
|
|
(byte) bitmap_init::y#3 ← phi( bitmap_init::@5/(byte) bitmap_init::y#2 bitmap_init::@7/(byte) bitmap_init::y#4 )
|
|
(byte) bitmap_init::y#1 ← (byte) bitmap_init::y#3 + rangenext(0,$ff)
|
|
(bool~) bitmap_init::$11 ← (byte) bitmap_init::y#1 != rangelast(0,$ff)
|
|
if((bool~) bitmap_init::$11) goto bitmap_init::@5
|
|
to:bitmap_init::@return
|
|
bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@5
|
|
(byte*) bitmap_screen#16 ← phi( bitmap_init::@5/(byte*) bitmap_screen#15 )
|
|
(byte*) bitmap_gfx#17 ← phi( bitmap_init::@5/(byte*) bitmap_gfx#16 )
|
|
(byte) bitmap_init::y#4 ← phi( bitmap_init::@5/(byte) bitmap_init::y#2 )
|
|
(byte*) bitmap_init::yoffs#3 ← phi( bitmap_init::@5/(byte*) bitmap_init::yoffs#2 )
|
|
(byte*~) bitmap_init::$10 ← (byte*) bitmap_init::yoffs#3 + (number) $28*(number) 8
|
|
(byte*) bitmap_init::yoffs#1 ← (byte*~) bitmap_init::$10
|
|
to:bitmap_init::@6
|
|
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@6
|
|
(byte*) bitmap_screen#6 ← phi( bitmap_init::@6/(byte*) bitmap_screen#11 )
|
|
(byte*) bitmap_gfx#6 ← phi( bitmap_init::@6/(byte*) bitmap_gfx#11 )
|
|
(byte*) bitmap_gfx#2 ← (byte*) bitmap_gfx#6
|
|
(byte*) bitmap_screen#2 ← (byte*) bitmap_screen#6
|
|
return
|
|
to:@return
|
|
|
|
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
|
|
bitmap_clear: scope:[bitmap_clear] from main::@13
|
|
(byte*) bitmap_gfx#12 ← phi( main::@13/(byte*) bitmap_gfx#3 )
|
|
(byte*) bitmap_screen#7 ← phi( main::@13/(byte*) bitmap_screen#3 )
|
|
(byte) bitmap_clear::bgcol#1 ← phi( main::@13/(byte) bitmap_clear::bgcol#0 )
|
|
(byte) bitmap_clear::fgcol#1 ← phi( main::@13/(byte) bitmap_clear::fgcol#0 )
|
|
(number~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (number) $10
|
|
(number~) bitmap_clear::$1 ← (number~) bitmap_clear::$0 + (byte) bitmap_clear::bgcol#1
|
|
(byte) bitmap_clear::col#0 ← (number~) bitmap_clear::$1
|
|
(void*) memset::str#0 ← (void*)(byte*) bitmap_screen#7
|
|
(byte) memset::c#0 ← (byte) bitmap_clear::col#0
|
|
(word) memset::num#0 ← (word) $3e8
|
|
call memset
|
|
(void*) memset::return#2 ← (void*) memset::return#1
|
|
to:bitmap_clear::@1
|
|
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear
|
|
(byte*) bitmap_gfx#7 ← phi( bitmap_clear/(byte*) bitmap_gfx#12 )
|
|
(void*) memset::str#1 ← (void*)(byte*) bitmap_gfx#7
|
|
(byte) memset::c#1 ← (number) 0
|
|
(word) memset::num#1 ← (word) $1f40
|
|
call memset
|
|
(void*) memset::return#3 ← (void*) memset::return#1
|
|
to:bitmap_clear::@2
|
|
bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1
|
|
to:bitmap_clear::@return
|
|
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@2
|
|
return
|
|
to:@return
|
|
|
|
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
|
bitmap_plot: scope:[bitmap_plot] from main::@17
|
|
(word) bitmap_plot::x#1 ← phi( main::@17/(word) bitmap_plot::x#0 )
|
|
(byte) bitmap_plot::y#1 ← phi( main::@17/(byte) bitmap_plot::y#0 )
|
|
(byte*) bitmap_plot::plotter#0 ← (byte*){ *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#1), *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#1) }
|
|
(number~) bitmap_plot::$0 ← (word) bitmap_plot::x#1 & (number) $fff8
|
|
(byte*) bitmap_plot::plotter#1 ← (byte*) bitmap_plot::plotter#0 + (number~) bitmap_plot::$0
|
|
(byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#1
|
|
*((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1)
|
|
to:bitmap_plot::@return
|
|
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
|
return
|
|
to:@return
|
|
|
|
(void()) main()
|
|
main: scope:[main] from @4
|
|
(byte*) bitmap_screen#17 ← phi( @4/(byte*) bitmap_screen#14 )
|
|
(byte*) bitmap_gfx#18 ← phi( @4/(byte*) bitmap_gfx#15 )
|
|
(word) rem16u#23 ← phi( @4/(word) rem16u#25 )
|
|
(signed word*) sin16s_gen2::sintab#1 ← (const signed word*) SINUS
|
|
(word) sin16s_gen2::wavelength#0 ← (number) $200
|
|
(signed word) sin16s_gen2::min#0 ← (number) -$1001
|
|
(signed word) sin16s_gen2::max#0 ← (number) $1001
|
|
call sin16s_gen2
|
|
to:main::@12
|
|
main::@12: scope:[main] from main
|
|
(byte*) bitmap_screen#12 ← phi( main/(byte*) bitmap_screen#17 )
|
|
(byte*) bitmap_gfx#13 ← phi( main/(byte*) bitmap_gfx#18 )
|
|
(word) rem16u#17 ← phi( main/(word) rem16u#7 )
|
|
(word) rem16u#8 ← (word) rem16u#17
|
|
(byte*) bitmap_init::gfx#0 ← (const byte*) BITMAP
|
|
(byte*) bitmap_init::screen#0 ← (const byte*) SCREEN
|
|
call bitmap_init
|
|
to:main::@13
|
|
main::@13: scope:[main] from main::@12
|
|
(word) rem16u#47 ← phi( main::@12/(word) rem16u#8 )
|
|
(byte*) bitmap_screen#8 ← phi( main::@12/(byte*) bitmap_screen#2 )
|
|
(byte*) bitmap_gfx#8 ← phi( main::@12/(byte*) bitmap_gfx#2 )
|
|
(byte*) bitmap_gfx#3 ← (byte*) bitmap_gfx#8
|
|
(byte*) bitmap_screen#3 ← (byte*) bitmap_screen#8
|
|
(byte) bitmap_clear::bgcol#0 ← (const nomodify byte) BLACK
|
|
(byte) bitmap_clear::fgcol#0 ← (const nomodify byte) WHITE
|
|
call bitmap_clear
|
|
to:main::@14
|
|
main::@14: scope:[main] from main::@13
|
|
(byte*) bitmap_screen#37 ← phi( main::@13/(byte*) bitmap_screen#3 )
|
|
(byte*) bitmap_gfx#38 ← phi( main::@13/(byte*) bitmap_gfx#3 )
|
|
(word) rem16u#45 ← phi( main::@13/(word) rem16u#47 )
|
|
*((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3
|
|
(byte*) main::toD0181_screen#0 ← (const byte*) SCREEN
|
|
(byte*) main::toD0181_gfx#0 ← (const byte*) BITMAP
|
|
to:main::toD0181
|
|
main::toD0181: scope:[main] from main::@14
|
|
(byte*) bitmap_screen#35 ← phi( main::@14/(byte*) bitmap_screen#37 )
|
|
(byte*) bitmap_gfx#36 ← phi( main::@14/(byte*) bitmap_gfx#38 )
|
|
(word) rem16u#43 ← phi( main::@14/(word) rem16u#45 )
|
|
(byte*) main::toD0181_gfx#1 ← phi( main::@14/(byte*) main::toD0181_gfx#0 )
|
|
(byte*) main::toD0181_screen#1 ← phi( main::@14/(byte*) main::toD0181_screen#0 )
|
|
(word~) main::toD0181_$7 ← (word)(byte*) main::toD0181_screen#1
|
|
(number~) main::toD0181_$0 ← (word~) main::toD0181_$7 & (number) $3fff
|
|
(number~) main::toD0181_$1 ← (number~) main::toD0181_$0 * (number) 4
|
|
(number~) main::toD0181_$2 ← > (number~) main::toD0181_$1
|
|
(byte~) main::toD0181_$3 ← > (word)(byte*) main::toD0181_gfx#1
|
|
(number~) main::toD0181_$4 ← (byte~) main::toD0181_$3 / (number) 4
|
|
(number~) main::toD0181_$5 ← (number~) main::toD0181_$4 & (number) $f
|
|
(number~) main::toD0181_$6 ← (number~) main::toD0181_$2 | (number~) main::toD0181_$5
|
|
(byte) main::toD0181_return#0 ← (number~) main::toD0181_$6
|
|
to:main::toD0181_@return
|
|
main::toD0181_@return: scope:[main] from main::toD0181
|
|
(byte*) bitmap_screen#32 ← phi( main::toD0181/(byte*) bitmap_screen#35 )
|
|
(byte*) bitmap_gfx#33 ← phi( main::toD0181/(byte*) bitmap_gfx#36 )
|
|
(word) rem16u#40 ← phi( main::toD0181/(word) rem16u#43 )
|
|
(byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 )
|
|
(byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2
|
|
to:main::@11
|
|
main::@11: scope:[main] from main::toD0181_@return
|
|
(byte*) bitmap_screen#27 ← phi( main::toD0181_@return/(byte*) bitmap_screen#32 )
|
|
(byte*) bitmap_gfx#28 ← phi( main::toD0181_@return/(byte*) bitmap_gfx#33 )
|
|
(word) rem16u#37 ← phi( main::toD0181_@return/(word) rem16u#40 )
|
|
(byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 )
|
|
(byte~) main::$3 ← (byte) main::toD0181_return#3
|
|
*((const nomodify byte*) D018) ← (byte~) main::$3
|
|
call init_irq
|
|
to:main::@15
|
|
main::@15: scope:[main] from main::@11
|
|
(byte*) bitmap_screen#23 ← phi( main::@11/(byte*) bitmap_screen#27 )
|
|
(byte*) bitmap_gfx#24 ← phi( main::@11/(byte*) bitmap_gfx#28 )
|
|
(word) rem16u#32 ← phi( main::@11/(word) rem16u#37 )
|
|
(word) main::idx_x#0 ← (word) 0
|
|
(word) main::idx_y#0 ← (word) $80
|
|
(signed word) main::r#0 ← (signed word) 0
|
|
(byte) main::r_add#0 ← (byte) $20
|
|
to:main::@1
|
|
main::@1: scope:[main] from main::@15 main::@5
|
|
(byte) main::r_add#11 ← phi( main::@15/(byte) main::r_add#0 main::@5/(byte) main::r_add#12 )
|
|
(byte*) bitmap_screen#18 ← phi( main::@15/(byte*) bitmap_screen#23 main::@5/(byte*) bitmap_screen#20 )
|
|
(byte*) bitmap_gfx#19 ← phi( main::@15/(byte*) bitmap_gfx#24 main::@5/(byte*) bitmap_gfx#21 )
|
|
(word) rem16u#27 ← phi( main::@15/(word) rem16u#32 main::@5/(word) rem16u#29 )
|
|
(word) main::idx_y#8 ← phi( main::@15/(word) main::idx_y#0 main::@5/(word) main::idx_y#10 )
|
|
(signed word) main::r#6 ← phi( main::@15/(signed word) main::r#0 main::@5/(signed word) main::r#5 )
|
|
(word) main::idx_x#6 ← phi( main::@15/(word) main::idx_x#0 main::@5/(word) main::idx_x#10 )
|
|
if(true) goto main::@2
|
|
to:main::@9
|
|
main::@2: scope:[main] from main::@1
|
|
(byte*) bitmap_screen#39 ← phi( main::@1/(byte*) bitmap_screen#18 )
|
|
(byte*) bitmap_gfx#40 ← phi( main::@1/(byte*) bitmap_gfx#19 )
|
|
(word) rem16u#48 ← phi( main::@1/(word) rem16u#27 )
|
|
(byte) main::r_add#10 ← phi( main::@1/(byte) main::r_add#11 )
|
|
(word) main::idx_y#5 ← phi( main::@1/(word) main::idx_y#8 )
|
|
(signed word) main::r#2 ← phi( main::@1/(signed word) main::r#6 )
|
|
(word) main::idx_x#3 ← phi( main::@1/(word) main::idx_x#6 )
|
|
(word~) main::$26 ← (word) main::idx_x#3 * (const byte) SIZEOF_SIGNED_WORD
|
|
(signed word) main::cos_x#0 ← *((const signed word*) SINUS + (word~) main::$26)
|
|
(signed word) mul16s::a#1 ← (signed word) main::r#2
|
|
(signed word) mul16s::b#1 ← (signed word) main::cos_x#0
|
|
call mul16s
|
|
(signed dword) mul16s::return#3 ← (signed dword) mul16s::return#1
|
|
to:main::@16
|
|
main::@16: scope:[main] from main::@2
|
|
(byte*) bitmap_screen#38 ← phi( main::@2/(byte*) bitmap_screen#39 )
|
|
(byte*) bitmap_gfx#39 ← phi( main::@2/(byte*) bitmap_gfx#40 )
|
|
(word) rem16u#46 ← phi( main::@2/(word) rem16u#48 )
|
|
(byte) main::r_add#9 ← phi( main::@2/(byte) main::r_add#10 )
|
|
(word) main::idx_x#11 ← phi( main::@2/(word) main::idx_x#3 )
|
|
(signed word) main::r#3 ← phi( main::@2/(signed word) main::r#2 )
|
|
(word) main::idx_y#3 ← phi( main::@2/(word) main::idx_y#5 )
|
|
(signed dword) mul16s::return#7 ← phi( main::@2/(signed dword) mul16s::return#3 )
|
|
(signed dword~) main::$5 ← (signed dword) mul16s::return#7
|
|
(signed dword) main::xpos#0 ← (signed dword~) main::$5
|
|
(word~) main::$6 ← > (signed dword) main::xpos#0
|
|
(signed word~) main::$28 ← (signed word)(word~) main::$6
|
|
(signed word~) main::$7 ← (signed word~) main::$28 >> (number) 2
|
|
(number~) main::$8 ← (number) $a0 + (signed word~) main::$7
|
|
(word) main::x#0 ← (word)(number~) main::$8
|
|
(word~) main::$27 ← (word) main::idx_y#3 * (const byte) SIZEOF_SIGNED_WORD
|
|
(signed word) main::sin_y#0 ← *((const signed word*) SINUS + (word~) main::$27)
|
|
(signed word) mul16s::a#2 ← (signed word) main::r#3
|
|
(signed word) mul16s::b#2 ← (signed word) main::sin_y#0
|
|
call mul16s
|
|
(signed dword) mul16s::return#4 ← (signed dword) mul16s::return#1
|
|
to:main::@17
|
|
main::@17: scope:[main] from main::@16
|
|
(byte*) bitmap_screen#36 ← phi( main::@16/(byte*) bitmap_screen#38 )
|
|
(byte*) bitmap_gfx#37 ← phi( main::@16/(byte*) bitmap_gfx#39 )
|
|
(word) rem16u#44 ← phi( main::@16/(word) rem16u#46 )
|
|
(signed word) main::r#12 ← phi( main::@16/(signed word) main::r#3 )
|
|
(word) main::idx_y#9 ← phi( main::@16/(word) main::idx_y#3 )
|
|
(byte) main::r_add#6 ← phi( main::@16/(byte) main::r_add#9 )
|
|
(word) main::idx_x#7 ← phi( main::@16/(word) main::idx_x#11 )
|
|
(word) main::x#1 ← phi( main::@16/(word) main::x#0 )
|
|
(signed dword) mul16s::return#8 ← phi( main::@16/(signed dword) mul16s::return#4 )
|
|
(signed dword~) main::$9 ← (signed dword) mul16s::return#8
|
|
(signed dword) main::ypos#0 ← (signed dword~) main::$9
|
|
(word~) main::$10 ← > (signed dword) main::ypos#0
|
|
(signed word~) main::$29 ← (signed word)(word~) main::$10
|
|
(signed word~) main::$11 ← (signed word~) main::$29 >> (number) 2
|
|
(number~) main::$12 ← (number) $64 + (signed word~) main::$11
|
|
(word) main::y#0 ← (word)(number~) main::$12
|
|
(word) bitmap_plot::x#0 ← (word) main::x#1
|
|
(byte) bitmap_plot::y#0 ← (byte)(word) main::y#0
|
|
call bitmap_plot
|
|
to:main::@18
|
|
main::@18: scope:[main] from main::@17
|
|
(byte*) bitmap_screen#33 ← phi( main::@17/(byte*) bitmap_screen#36 )
|
|
(byte*) bitmap_gfx#34 ← phi( main::@17/(byte*) bitmap_gfx#37 )
|
|
(word) rem16u#41 ← phi( main::@17/(word) rem16u#44 )
|
|
(signed word) main::r#10 ← phi( main::@17/(signed word) main::r#12 )
|
|
(word) main::idx_y#6 ← phi( main::@17/(word) main::idx_y#9 )
|
|
(byte) main::r_add#2 ← phi( main::@17/(byte) main::r_add#6 )
|
|
(word) main::idx_x#4 ← phi( main::@17/(word) main::idx_x#7 )
|
|
*((const byte*) plots_per_frame + (volatile byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (volatile byte) frame_cnt)
|
|
(word) main::idx_x#1 ← (word) main::idx_x#4 + (byte) main::r_add#2
|
|
(bool~) main::$15 ← (word) main::idx_x#1 >= (number) $200
|
|
(bool~) main::$16 ← ! (bool~) main::$15
|
|
if((bool~) main::$16) goto main::@3
|
|
to:main::@6
|
|
main::@3: scope:[main] from main::@18 main::@6
|
|
(byte*) bitmap_screen#28 ← phi( main::@18/(byte*) bitmap_screen#33 main::@6/(byte*) bitmap_screen#34 )
|
|
(byte*) bitmap_gfx#29 ← phi( main::@18/(byte*) bitmap_gfx#34 main::@6/(byte*) bitmap_gfx#35 )
|
|
(word) rem16u#38 ← phi( main::@18/(word) rem16u#41 main::@6/(word) rem16u#42 )
|
|
(word) main::idx_x#8 ← phi( main::@18/(word) main::idx_x#1 main::@6/(word) main::idx_x#2 )
|
|
(signed word) main::r#7 ← phi( main::@18/(signed word) main::r#10 main::@6/(signed word) main::r#11 )
|
|
(byte) main::r_add#3 ← phi( main::@18/(byte) main::r_add#2 main::@6/(byte) main::r_add#7 )
|
|
(word) main::idx_y#4 ← phi( main::@18/(word) main::idx_y#6 main::@6/(word) main::idx_y#7 )
|
|
(word) main::idx_y#1 ← (word) main::idx_y#4 + (byte) main::r_add#3
|
|
(bool~) main::$17 ← (word) main::idx_y#1 >= (number) $200
|
|
(bool~) main::$18 ← ! (bool~) main::$17
|
|
if((bool~) main::$18) goto main::@4
|
|
to:main::@7
|
|
main::@6: scope:[main] from main::@18
|
|
(byte*) bitmap_screen#34 ← phi( main::@18/(byte*) bitmap_screen#33 )
|
|
(byte*) bitmap_gfx#35 ← phi( main::@18/(byte*) bitmap_gfx#34 )
|
|
(word) rem16u#42 ← phi( main::@18/(word) rem16u#41 )
|
|
(signed word) main::r#11 ← phi( main::@18/(signed word) main::r#10 )
|
|
(byte) main::r_add#7 ← phi( main::@18/(byte) main::r_add#2 )
|
|
(word) main::idx_y#7 ← phi( main::@18/(word) main::idx_y#6 )
|
|
(word) main::idx_x#2 ← (number) 0
|
|
to:main::@3
|
|
main::@4: scope:[main] from main::@3 main::@7
|
|
(word) main::idx_y#11 ← phi( main::@3/(word) main::idx_y#1 main::@7/(word) main::idx_y#2 )
|
|
(byte*) bitmap_screen#24 ← phi( main::@3/(byte*) bitmap_screen#28 main::@7/(byte*) bitmap_screen#29 )
|
|
(byte*) bitmap_gfx#25 ← phi( main::@3/(byte*) bitmap_gfx#29 main::@7/(byte*) bitmap_gfx#30 )
|
|
(word) rem16u#33 ← phi( main::@3/(word) rem16u#38 main::@7/(word) rem16u#39 )
|
|
(word) main::idx_x#5 ← phi( main::@3/(word) main::idx_x#8 main::@7/(word) main::idx_x#9 )
|
|
(byte) main::r_add#4 ← phi( main::@3/(byte) main::r_add#3 main::@7/(byte) main::r_add#8 )
|
|
(signed word) main::r#4 ← phi( main::@3/(signed word) main::r#7 main::@7/(signed word) main::r#8 )
|
|
(signed word) main::r#1 ← (signed word) main::r#4 + (byte) main::r_add#4
|
|
(bool~) main::$19 ← (word) main::idx_x#5 == (number) 0
|
|
(bool~) main::$20 ← (byte) main::r_add#4 != (number) 1
|
|
(bool~) main::$21 ← (bool~) main::$19 && (bool~) main::$20
|
|
(bool~) main::$22 ← ! (bool~) main::$21
|
|
if((bool~) main::$22) goto main::@5
|
|
to:main::@8
|
|
main::@7: scope:[main] from main::@3
|
|
(byte*) bitmap_screen#29 ← phi( main::@3/(byte*) bitmap_screen#28 )
|
|
(byte*) bitmap_gfx#30 ← phi( main::@3/(byte*) bitmap_gfx#29 )
|
|
(word) rem16u#39 ← phi( main::@3/(word) rem16u#38 )
|
|
(word) main::idx_x#9 ← phi( main::@3/(word) main::idx_x#8 )
|
|
(byte) main::r_add#8 ← phi( main::@3/(byte) main::r_add#3 )
|
|
(signed word) main::r#8 ← phi( main::@3/(signed word) main::r#7 )
|
|
(word) main::idx_y#2 ← (number) 0
|
|
to:main::@4
|
|
main::@5: scope:[main] from main::@4 main::@8
|
|
(byte) main::r_add#12 ← phi( main::@4/(byte) main::r_add#4 main::@8/(byte) main::r_add#1 )
|
|
(word) main::idx_y#10 ← phi( main::@4/(word) main::idx_y#11 main::@8/(word) main::idx_y#12 )
|
|
(byte*) bitmap_screen#20 ← phi( main::@4/(byte*) bitmap_screen#24 main::@8/(byte*) bitmap_screen#25 )
|
|
(byte*) bitmap_gfx#21 ← phi( main::@4/(byte*) bitmap_gfx#25 main::@8/(byte*) bitmap_gfx#26 )
|
|
(word) rem16u#29 ← phi( main::@4/(word) rem16u#33 main::@8/(word) rem16u#34 )
|
|
(word) main::idx_x#10 ← phi( main::@4/(word) main::idx_x#5 main::@8/(word) main::idx_x#12 )
|
|
(signed word) main::r#5 ← phi( main::@4/(signed word) main::r#1 main::@8/(signed word) main::r#9 )
|
|
(bool~) main::$23 ← (signed word) main::r#5 >= (number) $200*(number) $c+(number) $100
|
|
(bool~) main::$24 ← ! (bool~) main::$23
|
|
if((bool~) main::$24) goto main::@1
|
|
to:main::@9
|
|
main::@8: scope:[main] from main::@4
|
|
(word) main::idx_y#12 ← phi( main::@4/(word) main::idx_y#11 )
|
|
(byte*) bitmap_screen#25 ← phi( main::@4/(byte*) bitmap_screen#24 )
|
|
(byte*) bitmap_gfx#26 ← phi( main::@4/(byte*) bitmap_gfx#25 )
|
|
(word) rem16u#34 ← phi( main::@4/(word) rem16u#33 )
|
|
(word) main::idx_x#12 ← phi( main::@4/(word) main::idx_x#5 )
|
|
(signed word) main::r#9 ← phi( main::@4/(signed word) main::r#1 )
|
|
(byte) main::r_add#5 ← phi( main::@4/(byte) main::r_add#4 )
|
|
(byte) main::r_add#1 ← (byte) main::r_add#5 / (number) 2
|
|
to:main::@5
|
|
main::@9: scope:[main] from main::@1 main::@10 main::@5
|
|
(byte*) bitmap_screen#13 ← phi( main::@1/(byte*) bitmap_screen#18 main::@10/(byte*) bitmap_screen#19 main::@5/(byte*) bitmap_screen#20 )
|
|
(byte*) bitmap_gfx#14 ← phi( main::@1/(byte*) bitmap_gfx#19 main::@10/(byte*) bitmap_gfx#20 main::@5/(byte*) bitmap_gfx#21 )
|
|
(word) rem16u#24 ← phi( main::@1/(word) rem16u#27 main::@10/(word) rem16u#28 main::@5/(word) rem16u#29 )
|
|
if(true) goto main::@10
|
|
to:main::@return
|
|
main::@10: scope:[main] from main::@9
|
|
(byte*) bitmap_screen#19 ← phi( main::@9/(byte*) bitmap_screen#13 )
|
|
(byte*) bitmap_gfx#20 ← phi( main::@9/(byte*) bitmap_gfx#14 )
|
|
(word) rem16u#28 ← phi( main::@9/(word) rem16u#24 )
|
|
*((const nomodify byte*) BORDER_COLOR) ← ++ *((const nomodify byte*) BORDER_COLOR)
|
|
to:main::@9
|
|
main::@return: scope:[main] from main::@9
|
|
(byte*) bitmap_screen#9 ← phi( main::@9/(byte*) bitmap_screen#13 )
|
|
(byte*) bitmap_gfx#9 ← phi( main::@9/(byte*) bitmap_gfx#14 )
|
|
(word) rem16u#18 ← phi( main::@9/(word) rem16u#24 )
|
|
(word) rem16u#9 ← (word) rem16u#18
|
|
(byte*) bitmap_gfx#4 ← (byte*) bitmap_gfx#9
|
|
(byte*) bitmap_screen#4 ← (byte*) bitmap_screen#9
|
|
return
|
|
to:@return
|
|
@3: scope:[] from @2
|
|
(byte*) bitmap_screen#21 ← phi( @2/(byte*) bitmap_screen#0 )
|
|
(byte*) bitmap_gfx#22 ← phi( @2/(byte*) bitmap_gfx#0 )
|
|
(word) rem16u#30 ← phi( @2/(word) rem16u#35 )
|
|
(volatile byte) frame_cnt ← (byte) 1
|
|
to:@4
|
|
|
|
(void()) init_irq()
|
|
init_irq: scope:[init_irq] from main::@11
|
|
asm { sei }
|
|
*((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK
|
|
*((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO
|
|
*((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR
|
|
*((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) | (number) $80
|
|
*((const nomodify byte*) RASTER) ← (number) 0
|
|
*((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER
|
|
*((const nomodify void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq()
|
|
asm { cli }
|
|
to:init_irq::@return
|
|
init_irq::@return: scope:[init_irq] from init_irq
|
|
return
|
|
to:@return
|
|
|
|
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
|
irq: scope:[irq] from
|
|
*((const nomodify byte*) BG_COLOR) ← (const nomodify byte) WHITE
|
|
(bool~) irq::$1 ← (number) 0 != (volatile byte) frame_cnt
|
|
(bool~) irq::$0 ← ! (bool~) irq::$1
|
|
if((bool~) irq::$0) goto irq::@1
|
|
to:irq::@2
|
|
irq::@1: scope:[irq] from irq irq::@2
|
|
*((const nomodify byte*) BG_COLOR) ← (const nomodify byte) BLACK
|
|
*((const nomodify byte*) IRQ_STATUS) ← (const nomodify byte) IRQ_RASTER
|
|
to:irq::@return
|
|
irq::@2: scope:[irq] from irq
|
|
(volatile byte) frame_cnt ← ++ (volatile byte) frame_cnt
|
|
to:irq::@1
|
|
irq::@return: scope:[irq] from irq::@1
|
|
return
|
|
to:@return
|
|
@4: scope:[] from @3
|
|
(byte*) bitmap_screen#14 ← phi( @3/(byte*) bitmap_screen#21 )
|
|
(byte*) bitmap_gfx#15 ← phi( @3/(byte*) bitmap_gfx#22 )
|
|
(word) rem16u#25 ← phi( @3/(word) rem16u#30 )
|
|
call main
|
|
to:@5
|
|
@5: scope:[] from @4
|
|
(byte*) bitmap_screen#10 ← phi( @4/(byte*) bitmap_screen#4 )
|
|
(byte*) bitmap_gfx#10 ← phi( @4/(byte*) bitmap_gfx#4 )
|
|
(word) rem16u#19 ← phi( @4/(word) rem16u#9 )
|
|
(word) rem16u#10 ← (word) rem16u#19
|
|
(byte*) bitmap_gfx#5 ← (byte*) bitmap_gfx#10
|
|
(byte*) bitmap_screen#5 ← (byte*) bitmap_screen#10
|
|
to:@end
|
|
@end: scope:[] from @5
|
|
|
|
SYMBOL TABLE SSA
|
|
(label) @1
|
|
(label) @2
|
|
(label) @3
|
|
(label) @4
|
|
(label) @5
|
|
(label) @begin
|
|
(label) @end
|
|
(const nomodify byte*) BG_COLOR = (byte*)(number) $d021
|
|
(const byte*) BITMAP = (byte*)(number) $2000
|
|
(const nomodify byte) BLACK = (byte) 0
|
|
(const nomodify byte*) BORDER_COLOR = (byte*)(number) $d020
|
|
(const nomodify struct MOS6526_CIA*) CIA1 = (struct MOS6526_CIA*)(number) $dc00
|
|
(const nomodify byte) CIA_INTERRUPT_CLEAR = (byte) $7f
|
|
(const nomodify byte*) D011 = (byte*)(number) $d011
|
|
(const nomodify byte*) D018 = (byte*)(number) $d018
|
|
(const nomodify void()**) HARDWARE_IRQ = (void()**)(number) $fffe
|
|
(const nomodify byte*) IRQ_ENABLE = (byte*)(number) $d01a
|
|
(const nomodify byte) IRQ_RASTER = (byte) 1
|
|
(const nomodify byte*) IRQ_STATUS = (byte*)(number) $d019
|
|
(byte) MOS6526_CIA::INTERRUPT
|
|
(byte) MOS6526_CIA::PORT_A
|
|
(byte) MOS6526_CIA::PORT_A_DDR
|
|
(byte) MOS6526_CIA::PORT_B
|
|
(byte) MOS6526_CIA::PORT_B_DDR
|
|
(byte) MOS6526_CIA::SERIAL_DATA
|
|
(word) MOS6526_CIA::TIMER_A
|
|
(byte) MOS6526_CIA::TIMER_A_CONTROL
|
|
(word) MOS6526_CIA::TIMER_B
|
|
(byte) MOS6526_CIA::TIMER_B_CONTROL
|
|
(byte) MOS6526_CIA::TOD_10THS
|
|
(byte) MOS6526_CIA::TOD_HOURS
|
|
(byte) MOS6526_CIA::TOD_MIN
|
|
(byte) MOS6526_CIA::TOD_SEC
|
|
(byte) MOS6569_VICII::BG_COLOR
|
|
(byte) MOS6569_VICII::BG_COLOR1
|
|
(byte) MOS6569_VICII::BG_COLOR2
|
|
(byte) MOS6569_VICII::BG_COLOR3
|
|
(byte) MOS6569_VICII::BORDER_COLOR
|
|
(byte) MOS6569_VICII::CONTROL1
|
|
(byte) MOS6569_VICII::CONTROL2
|
|
(byte) MOS6569_VICII::IRQ_ENABLE
|
|
(byte) MOS6569_VICII::IRQ_STATUS
|
|
(byte) MOS6569_VICII::LIGHTPEN_X
|
|
(byte) MOS6569_VICII::LIGHTPEN_Y
|
|
(byte) MOS6569_VICII::MEMORY
|
|
(byte) MOS6569_VICII::RASTER
|
|
(byte) MOS6569_VICII::SPRITE0_COLOR
|
|
(byte) MOS6569_VICII::SPRITE0_X
|
|
(byte) MOS6569_VICII::SPRITE0_Y
|
|
(byte) MOS6569_VICII::SPRITE1_COLOR
|
|
(byte) MOS6569_VICII::SPRITE1_X
|
|
(byte) MOS6569_VICII::SPRITE1_Y
|
|
(byte) MOS6569_VICII::SPRITE2_COLOR
|
|
(byte) MOS6569_VICII::SPRITE2_X
|
|
(byte) MOS6569_VICII::SPRITE2_Y
|
|
(byte) MOS6569_VICII::SPRITE3_COLOR
|
|
(byte) MOS6569_VICII::SPRITE3_X
|
|
(byte) MOS6569_VICII::SPRITE3_Y
|
|
(byte) MOS6569_VICII::SPRITE4_COLOR
|
|
(byte) MOS6569_VICII::SPRITE4_X
|
|
(byte) MOS6569_VICII::SPRITE4_Y
|
|
(byte) MOS6569_VICII::SPRITE5_COLOR
|
|
(byte) MOS6569_VICII::SPRITE5_X
|
|
(byte) MOS6569_VICII::SPRITE5_Y
|
|
(byte) MOS6569_VICII::SPRITE6_COLOR
|
|
(byte) MOS6569_VICII::SPRITE6_X
|
|
(byte) MOS6569_VICII::SPRITE6_Y
|
|
(byte) MOS6569_VICII::SPRITE7_COLOR
|
|
(byte) MOS6569_VICII::SPRITE7_X
|
|
(byte) MOS6569_VICII::SPRITE7_Y
|
|
(byte) MOS6569_VICII::SPRITES_BG_COLLISION
|
|
(byte) MOS6569_VICII::SPRITES_COLLISION
|
|
(byte) MOS6569_VICII::SPRITES_ENABLE
|
|
(byte) MOS6569_VICII::SPRITES_EXPAND_X
|
|
(byte) MOS6569_VICII::SPRITES_EXPAND_Y
|
|
(byte) MOS6569_VICII::SPRITES_MC
|
|
(byte) MOS6569_VICII::SPRITES_MCOLOR1
|
|
(byte) MOS6569_VICII::SPRITES_MCOLOR2
|
|
(byte) MOS6569_VICII::SPRITES_PRIORITY
|
|
(byte) MOS6569_VICII::SPRITES_XMSB
|
|
(byte) MOS6581_SID::CH1_ATTACK_DECAY
|
|
(byte) MOS6581_SID::CH1_CONTROL
|
|
(word) MOS6581_SID::CH1_FREQ
|
|
(word) MOS6581_SID::CH1_PULSE_WIDTH
|
|
(byte) MOS6581_SID::CH1_SUSTAIN_RELEASE
|
|
(byte) MOS6581_SID::CH2_ATTACK_DECAY
|
|
(byte) MOS6581_SID::CH2_CONTROL
|
|
(word) MOS6581_SID::CH2_FREQ
|
|
(word) MOS6581_SID::CH2_PULSE_WIDTH
|
|
(byte) MOS6581_SID::CH2_SUSTAIN_RELEASE
|
|
(byte) MOS6581_SID::CH3_ATTACK_DECAY
|
|
(byte) MOS6581_SID::CH3_CONTROL
|
|
(byte) MOS6581_SID::CH3_ENV
|
|
(word) MOS6581_SID::CH3_FREQ
|
|
(byte) MOS6581_SID::CH3_OSC
|
|
(word) MOS6581_SID::CH3_PULSE_WIDTH
|
|
(byte) MOS6581_SID::CH3_SUSTAIN_RELEASE
|
|
(byte) MOS6581_SID::FILTER_CUTOFF_HIGH
|
|
(byte) MOS6581_SID::FILTER_CUTOFF_LOW
|
|
(byte) MOS6581_SID::FILTER_SETUP
|
|
(byte) MOS6581_SID::POT_X
|
|
(byte) MOS6581_SID::POT_Y
|
|
(byte) MOS6581_SID::VOLUME_FILTER_MODE
|
|
(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = (byte) $d
|
|
(const nomodify dword) PI2_u4f28 = (dword) $6487ed51
|
|
(const nomodify dword) PI_HALF_u4f28 = (dword) $1921fb54
|
|
(const nomodify dword) PI_u4f28 = (dword) $3243f6a9
|
|
(const nomodify byte*) PROCPORT = (byte*)(number) 1
|
|
(const nomodify byte*) PROCPORT_DDR = (byte*)(number) 0
|
|
(const nomodify byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
|
|
(const nomodify byte) PROCPORT_RAM_IO = (byte) 5
|
|
(const nomodify byte*) RASTER = (byte*)(number) $d012
|
|
(const byte*) SCREEN = (byte*)(number) $400
|
|
(const signed word*) SINUS[(number) $200] = { fill( $200, 0) }
|
|
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
|
|
(const nomodify byte) VIC_BMM = (byte) $20
|
|
(const nomodify byte*) VIC_CONTROL = (byte*)(number) $d011
|
|
(const nomodify byte) VIC_DEN = (byte) $10
|
|
(const nomodify byte) VIC_RSEL = (byte) 8
|
|
(const nomodify byte) WHITE = (byte) 1
|
|
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
|
|
(number~) bitmap_clear::$0
|
|
(number~) bitmap_clear::$1
|
|
(label) bitmap_clear::@1
|
|
(label) bitmap_clear::@2
|
|
(label) bitmap_clear::@return
|
|
(byte) bitmap_clear::bgcol
|
|
(byte) bitmap_clear::bgcol#0
|
|
(byte) bitmap_clear::bgcol#1
|
|
(byte) bitmap_clear::col
|
|
(byte) bitmap_clear::col#0
|
|
(byte) bitmap_clear::fgcol
|
|
(byte) bitmap_clear::fgcol#0
|
|
(byte) bitmap_clear::fgcol#1
|
|
(byte*) bitmap_gfx
|
|
(byte*) bitmap_gfx#0
|
|
(byte*) bitmap_gfx#1
|
|
(byte*) bitmap_gfx#10
|
|
(byte*) bitmap_gfx#11
|
|
(byte*) bitmap_gfx#12
|
|
(byte*) bitmap_gfx#13
|
|
(byte*) bitmap_gfx#14
|
|
(byte*) bitmap_gfx#15
|
|
(byte*) bitmap_gfx#16
|
|
(byte*) bitmap_gfx#17
|
|
(byte*) bitmap_gfx#18
|
|
(byte*) bitmap_gfx#19
|
|
(byte*) bitmap_gfx#2
|
|
(byte*) bitmap_gfx#20
|
|
(byte*) bitmap_gfx#21
|
|
(byte*) bitmap_gfx#22
|
|
(byte*) bitmap_gfx#23
|
|
(byte*) bitmap_gfx#24
|
|
(byte*) bitmap_gfx#25
|
|
(byte*) bitmap_gfx#26
|
|
(byte*) bitmap_gfx#27
|
|
(byte*) bitmap_gfx#28
|
|
(byte*) bitmap_gfx#29
|
|
(byte*) bitmap_gfx#3
|
|
(byte*) bitmap_gfx#30
|
|
(byte*) bitmap_gfx#31
|
|
(byte*) bitmap_gfx#32
|
|
(byte*) bitmap_gfx#33
|
|
(byte*) bitmap_gfx#34
|
|
(byte*) bitmap_gfx#35
|
|
(byte*) bitmap_gfx#36
|
|
(byte*) bitmap_gfx#37
|
|
(byte*) bitmap_gfx#38
|
|
(byte*) bitmap_gfx#39
|
|
(byte*) bitmap_gfx#4
|
|
(byte*) bitmap_gfx#40
|
|
(byte*) bitmap_gfx#5
|
|
(byte*) bitmap_gfx#6
|
|
(byte*) bitmap_gfx#7
|
|
(byte*) bitmap_gfx#8
|
|
(byte*) bitmap_gfx#9
|
|
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
|
|
(bool~) bitmap_init::$0
|
|
(bool~) bitmap_init::$1
|
|
(byte*~) bitmap_init::$10
|
|
(bool~) bitmap_init::$11
|
|
(bool~) bitmap_init::$2
|
|
(number~) bitmap_init::$3
|
|
(byte~) bitmap_init::$4
|
|
(number~) bitmap_init::$5
|
|
(byte~) bitmap_init::$6
|
|
(number~) bitmap_init::$7
|
|
(bool~) bitmap_init::$8
|
|
(bool~) bitmap_init::$9
|
|
(label) bitmap_init::@1
|
|
(label) bitmap_init::@2
|
|
(label) bitmap_init::@3
|
|
(label) bitmap_init::@4
|
|
(label) bitmap_init::@5
|
|
(label) bitmap_init::@6
|
|
(label) bitmap_init::@7
|
|
(label) bitmap_init::@return
|
|
(byte) bitmap_init::bits
|
|
(byte) bitmap_init::bits#0
|
|
(byte) bitmap_init::bits#1
|
|
(byte) bitmap_init::bits#2
|
|
(byte) bitmap_init::bits#3
|
|
(byte) bitmap_init::bits#4
|
|
(byte*) bitmap_init::gfx
|
|
(byte*) bitmap_init::gfx#0
|
|
(byte*) bitmap_init::gfx#1
|
|
(byte*) bitmap_init::gfx#2
|
|
(byte*) bitmap_init::gfx#3
|
|
(byte*) bitmap_init::gfx#4
|
|
(byte*) bitmap_init::gfx#5
|
|
(byte*) bitmap_init::screen
|
|
(byte*) bitmap_init::screen#0
|
|
(byte*) bitmap_init::screen#1
|
|
(byte) bitmap_init::x
|
|
(byte) bitmap_init::x#0
|
|
(byte) bitmap_init::x#1
|
|
(byte) bitmap_init::x#2
|
|
(byte) bitmap_init::x#3
|
|
(byte) bitmap_init::x#4
|
|
(byte) bitmap_init::y
|
|
(byte) bitmap_init::y#0
|
|
(byte) bitmap_init::y#1
|
|
(byte) bitmap_init::y#2
|
|
(byte) bitmap_init::y#3
|
|
(byte) bitmap_init::y#4
|
|
(byte*) bitmap_init::yoffs
|
|
(byte*) bitmap_init::yoffs#0
|
|
(byte*) bitmap_init::yoffs#1
|
|
(byte*) bitmap_init::yoffs#2
|
|
(byte*) bitmap_init::yoffs#3
|
|
(byte*) bitmap_init::yoffs#4
|
|
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
|
(number~) bitmap_plot::$0
|
|
(byte~) bitmap_plot::$1
|
|
(label) bitmap_plot::@return
|
|
(byte*) bitmap_plot::plotter
|
|
(byte*) bitmap_plot::plotter#0
|
|
(byte*) bitmap_plot::plotter#1
|
|
(word) bitmap_plot::x
|
|
(word) bitmap_plot::x#0
|
|
(word) bitmap_plot::x#1
|
|
(byte) bitmap_plot::y
|
|
(byte) bitmap_plot::y#0
|
|
(byte) bitmap_plot::y#1
|
|
(const to_nomodify byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
|
|
(const to_nomodify byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
|
|
(const to_nomodify byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
|
|
(byte*) bitmap_screen
|
|
(byte*) bitmap_screen#0
|
|
(byte*) bitmap_screen#1
|
|
(byte*) bitmap_screen#10
|
|
(byte*) bitmap_screen#11
|
|
(byte*) bitmap_screen#12
|
|
(byte*) bitmap_screen#13
|
|
(byte*) bitmap_screen#14
|
|
(byte*) bitmap_screen#15
|
|
(byte*) bitmap_screen#16
|
|
(byte*) bitmap_screen#17
|
|
(byte*) bitmap_screen#18
|
|
(byte*) bitmap_screen#19
|
|
(byte*) bitmap_screen#2
|
|
(byte*) bitmap_screen#20
|
|
(byte*) bitmap_screen#21
|
|
(byte*) bitmap_screen#22
|
|
(byte*) bitmap_screen#23
|
|
(byte*) bitmap_screen#24
|
|
(byte*) bitmap_screen#25
|
|
(byte*) bitmap_screen#26
|
|
(byte*) bitmap_screen#27
|
|
(byte*) bitmap_screen#28
|
|
(byte*) bitmap_screen#29
|
|
(byte*) bitmap_screen#3
|
|
(byte*) bitmap_screen#30
|
|
(byte*) bitmap_screen#31
|
|
(byte*) bitmap_screen#32
|
|
(byte*) bitmap_screen#33
|
|
(byte*) bitmap_screen#34
|
|
(byte*) bitmap_screen#35
|
|
(byte*) bitmap_screen#36
|
|
(byte*) bitmap_screen#37
|
|
(byte*) bitmap_screen#38
|
|
(byte*) bitmap_screen#39
|
|
(byte*) bitmap_screen#4
|
|
(byte*) bitmap_screen#5
|
|
(byte*) bitmap_screen#6
|
|
(byte*) bitmap_screen#7
|
|
(byte*) bitmap_screen#8
|
|
(byte*) bitmap_screen#9
|
|
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
|
|
(word~) div32u16u::$0
|
|
(word~) div32u16u::$1
|
|
(word~) div32u16u::$2
|
|
(word~) div32u16u::$3
|
|
(label) div32u16u::@1
|
|
(label) div32u16u::@2
|
|
(label) div32u16u::@return
|
|
(dword) div32u16u::dividend
|
|
(dword) div32u16u::dividend#0
|
|
(dword) div32u16u::dividend#1
|
|
(dword) div32u16u::dividend#2
|
|
(word) div32u16u::divisor
|
|
(word) div32u16u::divisor#0
|
|
(word) div32u16u::divisor#1
|
|
(word) div32u16u::divisor#2
|
|
(dword) div32u16u::quotient
|
|
(dword) div32u16u::quotient#0
|
|
(word) div32u16u::quotient_hi
|
|
(word) div32u16u::quotient_hi#0
|
|
(word) div32u16u::quotient_hi#1
|
|
(word) div32u16u::quotient_lo
|
|
(word) div32u16u::quotient_lo#0
|
|
(dword) div32u16u::return
|
|
(dword) div32u16u::return#0
|
|
(dword) div32u16u::return#1
|
|
(dword) div32u16u::return#2
|
|
(dword) div32u16u::return#3
|
|
(dword) div32u16u::return#4
|
|
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
|
(word~) divr16u::$0
|
|
(byte~) divr16u::$1
|
|
(word~) divr16u::$10
|
|
(bool~) divr16u::$11
|
|
(number~) divr16u::$2
|
|
(bool~) divr16u::$3
|
|
(bool~) divr16u::$4
|
|
(number~) divr16u::$5
|
|
(word~) divr16u::$6
|
|
(word~) divr16u::$7
|
|
(bool~) divr16u::$8
|
|
(bool~) divr16u::$9
|
|
(label) divr16u::@1
|
|
(label) divr16u::@2
|
|
(label) divr16u::@3
|
|
(label) divr16u::@4
|
|
(label) divr16u::@5
|
|
(label) divr16u::@6
|
|
(label) divr16u::@return
|
|
(word) divr16u::dividend
|
|
(word) divr16u::dividend#0
|
|
(word) divr16u::dividend#1
|
|
(word) divr16u::dividend#2
|
|
(word) divr16u::dividend#3
|
|
(word) divr16u::dividend#4
|
|
(word) divr16u::dividend#5
|
|
(word) divr16u::dividend#6
|
|
(word) divr16u::dividend#7
|
|
(word) divr16u::dividend#8
|
|
(word) divr16u::divisor
|
|
(word) divr16u::divisor#0
|
|
(word) divr16u::divisor#1
|
|
(word) divr16u::divisor#2
|
|
(word) divr16u::divisor#3
|
|
(word) divr16u::divisor#4
|
|
(word) divr16u::divisor#5
|
|
(word) divr16u::divisor#6
|
|
(word) divr16u::divisor#7
|
|
(byte) divr16u::i
|
|
(byte) divr16u::i#0
|
|
(byte) divr16u::i#1
|
|
(byte) divr16u::i#2
|
|
(byte) divr16u::i#3
|
|
(byte) divr16u::i#4
|
|
(byte) divr16u::i#5
|
|
(byte) divr16u::i#6
|
|
(word) divr16u::quotient
|
|
(word) divr16u::quotient#0
|
|
(word) divr16u::quotient#1
|
|
(word) divr16u::quotient#2
|
|
(word) divr16u::quotient#3
|
|
(word) divr16u::quotient#4
|
|
(word) divr16u::quotient#5
|
|
(word) divr16u::quotient#6
|
|
(word) divr16u::quotient#7
|
|
(word) divr16u::quotient#8
|
|
(word) divr16u::rem
|
|
(word) divr16u::rem#0
|
|
(word) divr16u::rem#1
|
|
(word) divr16u::rem#10
|
|
(word) divr16u::rem#11
|
|
(word) divr16u::rem#2
|
|
(word) divr16u::rem#3
|
|
(word) divr16u::rem#4
|
|
(word) divr16u::rem#5
|
|
(word) divr16u::rem#6
|
|
(word) divr16u::rem#7
|
|
(word) divr16u::rem#8
|
|
(word) divr16u::rem#9
|
|
(word) divr16u::return
|
|
(word) divr16u::return#0
|
|
(word) divr16u::return#1
|
|
(word) divr16u::return#2
|
|
(word) divr16u::return#3
|
|
(word) divr16u::return#4
|
|
(word) divr16u::return#5
|
|
(word) divr16u::return#6
|
|
(volatile byte) frame_cnt loadstore
|
|
(void()) init_irq()
|
|
(label) init_irq::@return
|
|
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
|
(bool~) irq::$0
|
|
(bool~) irq::$1
|
|
(label) irq::@1
|
|
(label) irq::@2
|
|
(label) irq::@return
|
|
(void()) main()
|
|
(word~) main::$10
|
|
(signed word~) main::$11
|
|
(number~) main::$12
|
|
(bool~) main::$15
|
|
(bool~) main::$16
|
|
(bool~) main::$17
|
|
(bool~) main::$18
|
|
(bool~) main::$19
|
|
(bool~) main::$20
|
|
(bool~) main::$21
|
|
(bool~) main::$22
|
|
(bool~) main::$23
|
|
(bool~) main::$24
|
|
(word~) main::$26
|
|
(word~) main::$27
|
|
(signed word~) main::$28
|
|
(signed word~) main::$29
|
|
(byte~) main::$3
|
|
(signed dword~) main::$5
|
|
(word~) main::$6
|
|
(signed word~) main::$7
|
|
(number~) main::$8
|
|
(signed dword~) main::$9
|
|
(label) main::@1
|
|
(label) main::@10
|
|
(label) main::@11
|
|
(label) main::@12
|
|
(label) main::@13
|
|
(label) main::@14
|
|
(label) main::@15
|
|
(label) main::@16
|
|
(label) main::@17
|
|
(label) main::@18
|
|
(label) main::@2
|
|
(label) main::@3
|
|
(label) main::@4
|
|
(label) main::@5
|
|
(label) main::@6
|
|
(label) main::@7
|
|
(label) main::@8
|
|
(label) main::@9
|
|
(label) main::@return
|
|
(signed word) main::cos_x
|
|
(signed word) main::cos_x#0
|
|
(word) main::idx_x
|
|
(word) main::idx_x#0
|
|
(word) main::idx_x#1
|
|
(word) main::idx_x#10
|
|
(word) main::idx_x#11
|
|
(word) main::idx_x#12
|
|
(word) main::idx_x#2
|
|
(word) main::idx_x#3
|
|
(word) main::idx_x#4
|
|
(word) main::idx_x#5
|
|
(word) main::idx_x#6
|
|
(word) main::idx_x#7
|
|
(word) main::idx_x#8
|
|
(word) main::idx_x#9
|
|
(word) main::idx_y
|
|
(word) main::idx_y#0
|
|
(word) main::idx_y#1
|
|
(word) main::idx_y#10
|
|
(word) main::idx_y#11
|
|
(word) main::idx_y#12
|
|
(word) main::idx_y#2
|
|
(word) main::idx_y#3
|
|
(word) main::idx_y#4
|
|
(word) main::idx_y#5
|
|
(word) main::idx_y#6
|
|
(word) main::idx_y#7
|
|
(word) main::idx_y#8
|
|
(word) main::idx_y#9
|
|
(signed word) main::r
|
|
(signed word) main::r#0
|
|
(signed word) main::r#1
|
|
(signed word) main::r#10
|
|
(signed word) main::r#11
|
|
(signed word) main::r#12
|
|
(signed word) main::r#2
|
|
(signed word) main::r#3
|
|
(signed word) main::r#4
|
|
(signed word) main::r#5
|
|
(signed word) main::r#6
|
|
(signed word) main::r#7
|
|
(signed word) main::r#8
|
|
(signed word) main::r#9
|
|
(byte) main::r_add
|
|
(byte) main::r_add#0
|
|
(byte) main::r_add#1
|
|
(byte) main::r_add#10
|
|
(byte) main::r_add#11
|
|
(byte) main::r_add#12
|
|
(byte) main::r_add#2
|
|
(byte) main::r_add#3
|
|
(byte) main::r_add#4
|
|
(byte) main::r_add#5
|
|
(byte) main::r_add#6
|
|
(byte) main::r_add#7
|
|
(byte) main::r_add#8
|
|
(byte) main::r_add#9
|
|
(signed word) main::sin_y
|
|
(signed word) main::sin_y#0
|
|
(label) main::toD0181
|
|
(number~) main::toD0181_$0
|
|
(number~) main::toD0181_$1
|
|
(number~) main::toD0181_$2
|
|
(byte~) main::toD0181_$3
|
|
(number~) main::toD0181_$4
|
|
(number~) main::toD0181_$5
|
|
(number~) main::toD0181_$6
|
|
(word~) main::toD0181_$7
|
|
(label) main::toD0181_@return
|
|
(byte*) main::toD0181_gfx
|
|
(byte*) main::toD0181_gfx#0
|
|
(byte*) main::toD0181_gfx#1
|
|
(byte) main::toD0181_return
|
|
(byte) main::toD0181_return#0
|
|
(byte) main::toD0181_return#1
|
|
(byte) main::toD0181_return#2
|
|
(byte) main::toD0181_return#3
|
|
(byte*) main::toD0181_screen
|
|
(byte*) main::toD0181_screen#0
|
|
(byte*) main::toD0181_screen#1
|
|
(word) main::x
|
|
(word) main::x#0
|
|
(word) main::x#1
|
|
(signed dword) main::xpos
|
|
(signed dword) main::xpos#0
|
|
(word) main::y
|
|
(word) main::y#0
|
|
(signed dword) main::ypos
|
|
(signed dword) main::ypos#0
|
|
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
|
(bool~) memset::$0
|
|
(bool~) memset::$1
|
|
(byte*~) memset::$2
|
|
(bool~) memset::$3
|
|
(byte*~) memset::$4
|
|
(label) memset::@1
|
|
(label) memset::@2
|
|
(label) memset::@3
|
|
(label) memset::@4
|
|
(label) memset::@return
|
|
(byte) memset::c
|
|
(byte) memset::c#0
|
|
(byte) memset::c#1
|
|
(byte) memset::c#2
|
|
(byte) memset::c#3
|
|
(byte) memset::c#4
|
|
(byte) memset::c#5
|
|
(byte*) memset::dst
|
|
(byte*) memset::dst#0
|
|
(byte*) memset::dst#1
|
|
(byte*) memset::dst#2
|
|
(byte*) memset::dst#3
|
|
(byte*) memset::end
|
|
(byte*) memset::end#0
|
|
(byte*) memset::end#1
|
|
(byte*) memset::end#2
|
|
(word) memset::num
|
|
(word) memset::num#0
|
|
(word) memset::num#1
|
|
(word) memset::num#2
|
|
(word) memset::num#3
|
|
(void*) memset::return
|
|
(void*) memset::return#0
|
|
(void*) memset::return#1
|
|
(void*) memset::return#2
|
|
(void*) memset::return#3
|
|
(void*) memset::return#4
|
|
(void*) memset::str
|
|
(void*) memset::str#0
|
|
(void*) memset::str#1
|
|
(void*) memset::str#2
|
|
(void*) memset::str#3
|
|
(void*) memset::str#4
|
|
(void*) memset::str#5
|
|
(void*) memset::str#6
|
|
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
|
(dword~) mul16s::$0
|
|
(bool~) mul16s::$1
|
|
(word~) mul16s::$10
|
|
(word~) mul16s::$11
|
|
(word~) mul16s::$12
|
|
(word~) mul16s::$13
|
|
(word~) mul16s::$14
|
|
(bool~) mul16s::$2
|
|
(bool~) mul16s::$3
|
|
(bool~) mul16s::$4
|
|
(word~) mul16s::$6
|
|
(word~) mul16s::$7
|
|
(word~) mul16s::$9
|
|
(label) mul16s::@1
|
|
(label) mul16s::@2
|
|
(label) mul16s::@3
|
|
(label) mul16s::@4
|
|
(label) mul16s::@5
|
|
(label) mul16s::@return
|
|
(signed word) mul16s::a
|
|
(signed word) mul16s::a#0
|
|
(signed word) mul16s::a#1
|
|
(signed word) mul16s::a#2
|
|
(signed word) mul16s::a#3
|
|
(signed word) mul16s::a#4
|
|
(signed word) mul16s::a#5
|
|
(signed word) mul16s::a#6
|
|
(signed word) mul16s::a#7
|
|
(signed word) mul16s::b
|
|
(signed word) mul16s::b#0
|
|
(signed word) mul16s::b#1
|
|
(signed word) mul16s::b#2
|
|
(signed word) mul16s::b#3
|
|
(signed word) mul16s::b#4
|
|
(signed word) mul16s::b#5
|
|
(signed word) mul16s::b#6
|
|
(dword) mul16s::m
|
|
(dword) mul16s::m#0
|
|
(dword) mul16s::m#1
|
|
(dword) mul16s::m#2
|
|
(dword) mul16s::m#3
|
|
(dword) mul16s::m#4
|
|
(dword) mul16s::m#5
|
|
(dword) mul16s::m#6
|
|
(signed dword) mul16s::return
|
|
(signed dword) mul16s::return#0
|
|
(signed dword) mul16s::return#1
|
|
(signed dword) mul16s::return#2
|
|
(signed dword) mul16s::return#3
|
|
(signed dword) mul16s::return#4
|
|
(signed dword) mul16s::return#5
|
|
(signed dword) mul16s::return#6
|
|
(signed dword) mul16s::return#7
|
|
(signed dword) mul16s::return#8
|
|
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
|
|
(bool~) mul16u::$0
|
|
(number~) mul16u::$1
|
|
(bool~) mul16u::$2
|
|
(bool~) mul16u::$3
|
|
(dword~) mul16u::$4
|
|
(word~) mul16u::$5
|
|
(dword~) mul16u::$6
|
|
(label) mul16u::@1
|
|
(label) mul16u::@2
|
|
(label) mul16u::@3
|
|
(label) mul16u::@4
|
|
(label) mul16u::@5
|
|
(label) mul16u::@return
|
|
(word) mul16u::a
|
|
(word) mul16u::a#0
|
|
(word) mul16u::a#1
|
|
(word) mul16u::a#2
|
|
(word) mul16u::a#3
|
|
(word) mul16u::a#4
|
|
(word) mul16u::a#5
|
|
(word) mul16u::a#6
|
|
(word) mul16u::a#7
|
|
(word) mul16u::b
|
|
(word) mul16u::b#0
|
|
(word) mul16u::b#1
|
|
(word) mul16u::b#2
|
|
(dword) mul16u::mb
|
|
(dword) mul16u::mb#0
|
|
(dword) mul16u::mb#1
|
|
(dword) mul16u::mb#2
|
|
(dword) mul16u::mb#3
|
|
(dword) mul16u::mb#4
|
|
(dword) mul16u::mb#5
|
|
(dword) mul16u::res
|
|
(dword) mul16u::res#0
|
|
(dword) mul16u::res#1
|
|
(dword) mul16u::res#2
|
|
(dword) mul16u::res#3
|
|
(dword) mul16u::res#4
|
|
(dword) mul16u::res#5
|
|
(dword) mul16u::res#6
|
|
(dword) mul16u::return
|
|
(dword) mul16u::return#0
|
|
(dword) mul16u::return#1
|
|
(dword) mul16u::return#2
|
|
(dword) mul16u::return#3
|
|
(dword) mul16u::return#4
|
|
(dword) mul16u::return#5
|
|
(dword) mul16u::return#6
|
|
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
|
|
(dword~) mulu16_sel::$0
|
|
(dword~) mulu16_sel::$1
|
|
(word~) mulu16_sel::$2
|
|
(label) mulu16_sel::@1
|
|
(label) mulu16_sel::@return
|
|
(word) mulu16_sel::return
|
|
(word) mulu16_sel::return#0
|
|
(word) mulu16_sel::return#1
|
|
(word) mulu16_sel::return#10
|
|
(word) mulu16_sel::return#11
|
|
(word) mulu16_sel::return#12
|
|
(word) mulu16_sel::return#2
|
|
(word) mulu16_sel::return#3
|
|
(word) mulu16_sel::return#4
|
|
(word) mulu16_sel::return#5
|
|
(word) mulu16_sel::return#6
|
|
(word) mulu16_sel::return#7
|
|
(word) mulu16_sel::return#8
|
|
(word) mulu16_sel::return#9
|
|
(byte) mulu16_sel::select
|
|
(byte) mulu16_sel::select#0
|
|
(byte) mulu16_sel::select#1
|
|
(byte) mulu16_sel::select#2
|
|
(byte) mulu16_sel::select#3
|
|
(byte) mulu16_sel::select#4
|
|
(byte) mulu16_sel::select#5
|
|
(byte) mulu16_sel::select#6
|
|
(word) mulu16_sel::v1
|
|
(word) mulu16_sel::v1#0
|
|
(word) mulu16_sel::v1#1
|
|
(word) mulu16_sel::v1#2
|
|
(word) mulu16_sel::v1#3
|
|
(word) mulu16_sel::v1#4
|
|
(word) mulu16_sel::v1#5
|
|
(word) mulu16_sel::v2
|
|
(word) mulu16_sel::v2#0
|
|
(word) mulu16_sel::v2#1
|
|
(word) mulu16_sel::v2#2
|
|
(word) mulu16_sel::v2#3
|
|
(word) mulu16_sel::v2#4
|
|
(word) mulu16_sel::v2#5
|
|
(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
|
|
(word) rem16u
|
|
(word) rem16u#0
|
|
(word) rem16u#1
|
|
(word) rem16u#10
|
|
(word) rem16u#11
|
|
(word) rem16u#12
|
|
(word) rem16u#13
|
|
(word) rem16u#14
|
|
(word) rem16u#15
|
|
(word) rem16u#16
|
|
(word) rem16u#17
|
|
(word) rem16u#18
|
|
(word) rem16u#19
|
|
(word) rem16u#2
|
|
(word) rem16u#20
|
|
(word) rem16u#21
|
|
(word) rem16u#22
|
|
(word) rem16u#23
|
|
(word) rem16u#24
|
|
(word) rem16u#25
|
|
(word) rem16u#26
|
|
(word) rem16u#27
|
|
(word) rem16u#28
|
|
(word) rem16u#29
|
|
(word) rem16u#3
|
|
(word) rem16u#30
|
|
(word) rem16u#31
|
|
(word) rem16u#32
|
|
(word) rem16u#33
|
|
(word) rem16u#34
|
|
(word) rem16u#35
|
|
(word) rem16u#36
|
|
(word) rem16u#37
|
|
(word) rem16u#38
|
|
(word) rem16u#39
|
|
(word) rem16u#4
|
|
(word) rem16u#40
|
|
(word) rem16u#41
|
|
(word) rem16u#42
|
|
(word) rem16u#43
|
|
(word) rem16u#44
|
|
(word) rem16u#45
|
|
(word) rem16u#46
|
|
(word) rem16u#47
|
|
(word) rem16u#48
|
|
(word) rem16u#5
|
|
(word) rem16u#6
|
|
(word) rem16u#7
|
|
(word) rem16u#8
|
|
(word) rem16u#9
|
|
(signed word()) sin16s((dword) sin16s::x)
|
|
(bool~) sin16s::$0
|
|
(bool~) sin16s::$1
|
|
(word~) sin16s::$10
|
|
(word~) sin16s::$11
|
|
(word~) sin16s::$12
|
|
(word~) sin16s::$13
|
|
(bool~) sin16s::$14
|
|
(bool~) sin16s::$15
|
|
(dword~) sin16s::$16
|
|
(dword~) sin16s::$17
|
|
(signed word~) sin16s::$18
|
|
(bool~) sin16s::$2
|
|
(bool~) sin16s::$3
|
|
(dword~) sin16s::$4
|
|
(word~) sin16s::$5
|
|
(word~) sin16s::$6
|
|
(word~) sin16s::$7
|
|
(word~) sin16s::$8
|
|
(word~) sin16s::$9
|
|
(label) sin16s::@1
|
|
(label) sin16s::@10
|
|
(label) sin16s::@11
|
|
(label) sin16s::@2
|
|
(label) sin16s::@3
|
|
(label) sin16s::@4
|
|
(label) sin16s::@5
|
|
(label) sin16s::@6
|
|
(label) sin16s::@7
|
|
(label) sin16s::@8
|
|
(label) sin16s::@9
|
|
(label) sin16s::@return
|
|
(byte) sin16s::isUpper
|
|
(byte) sin16s::isUpper#0
|
|
(byte) sin16s::isUpper#1
|
|
(byte) sin16s::isUpper#2
|
|
(byte) sin16s::isUpper#3
|
|
(byte) sin16s::isUpper#4
|
|
(byte) sin16s::isUpper#5
|
|
(byte) sin16s::isUpper#6
|
|
(byte) sin16s::isUpper#7
|
|
(byte) sin16s::isUpper#8
|
|
(byte) sin16s::isUpper#9
|
|
(signed word) sin16s::return
|
|
(signed word) sin16s::return#0
|
|
(signed word) sin16s::return#1
|
|
(signed word) sin16s::return#2
|
|
(signed word) sin16s::return#3
|
|
(signed word) sin16s::return#4
|
|
(signed word) sin16s::sinx
|
|
(signed word) sin16s::sinx#0
|
|
(signed word) sin16s::sinx#1
|
|
(signed word) sin16s::sinx#2
|
|
(word) sin16s::usinx
|
|
(word) sin16s::usinx#0
|
|
(word) sin16s::usinx#1
|
|
(word) sin16s::usinx#2
|
|
(word) sin16s::usinx#3
|
|
(word) sin16s::usinx#4
|
|
(dword) sin16s::x
|
|
(dword) sin16s::x#0
|
|
(dword) sin16s::x#1
|
|
(dword) sin16s::x#2
|
|
(dword) sin16s::x#3
|
|
(dword) sin16s::x#4
|
|
(dword) sin16s::x#5
|
|
(dword) sin16s::x#6
|
|
(dword) sin16s::x#7
|
|
(word) sin16s::x1
|
|
(word) sin16s::x1#0
|
|
(word) sin16s::x1#1
|
|
(word) sin16s::x1#2
|
|
(word) sin16s::x1#3
|
|
(word) sin16s::x1#4
|
|
(word) sin16s::x2
|
|
(word) sin16s::x2#0
|
|
(word) sin16s::x3
|
|
(word) sin16s::x3#0
|
|
(word) sin16s::x3#1
|
|
(word) sin16s::x3_6
|
|
(word) sin16s::x3_6#0
|
|
(word) sin16s::x4
|
|
(word) sin16s::x4#0
|
|
(word) sin16s::x5
|
|
(word) sin16s::x5#0
|
|
(word) sin16s::x5_128
|
|
(word) sin16s::x5_128#0
|
|
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
|
|
(signed word~) sin16s_gen2::$0
|
|
(signed word~) sin16s_gen2::$1
|
|
(signed word~) sin16s_gen2::$10
|
|
(signed word~) sin16s_gen2::$2
|
|
(dword~) sin16s_gen2::$3
|
|
(bool~) sin16s_gen2::$4
|
|
(signed word~) sin16s_gen2::$5
|
|
(signed dword~) sin16s_gen2::$6
|
|
(word~) sin16s_gen2::$7
|
|
(signed word~) sin16s_gen2::$8
|
|
(dword~) sin16s_gen2::$9
|
|
(label) sin16s_gen2::@1
|
|
(label) sin16s_gen2::@2
|
|
(label) sin16s_gen2::@3
|
|
(label) sin16s_gen2::@4
|
|
(label) sin16s_gen2::@5
|
|
(label) sin16s_gen2::@return
|
|
(signed word) sin16s_gen2::ampl
|
|
(signed word) sin16s_gen2::ampl#0
|
|
(signed word) sin16s_gen2::ampl#1
|
|
(signed word) sin16s_gen2::ampl#2
|
|
(signed word) sin16s_gen2::ampl#3
|
|
(signed word) sin16s_gen2::ampl#4
|
|
(signed word) sin16s_gen2::ampl#5
|
|
(word) sin16s_gen2::i
|
|
(word) sin16s_gen2::i#0
|
|
(word) sin16s_gen2::i#1
|
|
(word) sin16s_gen2::i#2
|
|
(word) sin16s_gen2::i#3
|
|
(word) sin16s_gen2::i#4
|
|
(word) sin16s_gen2::i#5
|
|
(signed word) sin16s_gen2::max
|
|
(signed word) sin16s_gen2::max#0
|
|
(signed word) sin16s_gen2::max#1
|
|
(signed word) sin16s_gen2::min
|
|
(signed word) sin16s_gen2::min#0
|
|
(signed word) sin16s_gen2::min#1
|
|
(signed word) sin16s_gen2::offs
|
|
(signed word) sin16s_gen2::offs#0
|
|
(signed word) sin16s_gen2::offs#1
|
|
(signed word) sin16s_gen2::offs#2
|
|
(signed word) sin16s_gen2::offs#3
|
|
(signed word) sin16s_gen2::offs#4
|
|
(signed word) sin16s_gen2::offs#5
|
|
(signed word*) sin16s_gen2::sintab
|
|
(signed word*) sin16s_gen2::sintab#0
|
|
(signed word*) sin16s_gen2::sintab#1
|
|
(signed word*) sin16s_gen2::sintab#2
|
|
(signed word*) sin16s_gen2::sintab#3
|
|
(signed word*) sin16s_gen2::sintab#4
|
|
(signed word*) sin16s_gen2::sintab#5
|
|
(signed word*) sin16s_gen2::sintab#6
|
|
(signed word*) sin16s_gen2::sintab#7
|
|
(dword) sin16s_gen2::step
|
|
(dword) sin16s_gen2::step#0
|
|
(dword) sin16s_gen2::step#1
|
|
(dword) sin16s_gen2::step#2
|
|
(dword) sin16s_gen2::step#3
|
|
(dword) sin16s_gen2::step#4
|
|
(word) sin16s_gen2::wavelength
|
|
(word) sin16s_gen2::wavelength#0
|
|
(word) sin16s_gen2::wavelength#1
|
|
(word) sin16s_gen2::wavelength#2
|
|
(word) sin16s_gen2::wavelength#3
|
|
(word) sin16s_gen2::wavelength#4
|
|
(word) sin16s_gen2::wavelength#5
|
|
(word) sin16s_gen2::wavelength#6
|
|
(dword) sin16s_gen2::x
|
|
(dword) sin16s_gen2::x#0
|
|
(dword) sin16s_gen2::x#1
|
|
(dword) sin16s_gen2::x#2
|
|
(dword) sin16s_gen2::x#3
|
|
(dword) sin16s_gen2::x#4
|
|
(dword) sin16s_gen2::x#5
|
|
|
|
Fixing inline constructor with div32u16u::$4 ← (word)div32u16u::quotient_hi#1 dw= (word)div32u16u::quotient_lo#0
|
|
Fixing inline constructor with bitmap_plot::$2 ← (byte)*(bitmap_plot_yhi + bitmap_plot::y#1) w= (byte)*(bitmap_plot_ylo + bitmap_plot::y#1)
|
|
Successful SSA optimization Pass2FixInlineConstructors
|
|
Adding number conversion cast (unumber) 1 in (word~) divr16u::$0 ← (word) divr16u::rem#5 << (number) 1
|
|
Adding number conversion cast (unumber) $80 in (number~) divr16u::$2 ← (byte~) divr16u::$1 & (number) $80
|
|
Adding number conversion cast (unumber) divr16u::$2 in (number~) divr16u::$2 ← (byte~) divr16u::$1 & (unumber)(number) $80
|
|
Adding number conversion cast (unumber) 0 in (bool~) divr16u::$3 ← (unumber~) divr16u::$2 != (number) 0
|
|
Adding number conversion cast (unumber) 1 in (word~) divr16u::$6 ← (word) divr16u::dividend#4 << (number) 1
|
|
Adding number conversion cast (unumber) 1 in (word~) divr16u::$7 ← (word) divr16u::quotient#3 << (number) 1
|
|
Adding number conversion cast (unumber) 1 in (number~) divr16u::$5 ← (word) divr16u::rem#7 | (number) 1
|
|
Adding number conversion cast (unumber) divr16u::$5 in (number~) divr16u::$5 ← (word) divr16u::rem#7 | (unumber)(number) 1
|
|
Adding number conversion cast (unumber) 0 in (word) divr16u::rem#3 ← (number) 0
|
|
Adding number conversion cast (unumber) 0 in (bool~) mul16u::$0 ← (word) mul16u::a#3 != (number) 0
|
|
Adding number conversion cast (unumber) 1 in (number~) mul16u::$1 ← (word) mul16u::a#4 & (number) 1
|
|
Adding number conversion cast (unumber) mul16u::$1 in (number~) mul16u::$1 ← (word) mul16u::a#4 & (unumber)(number) 1
|
|
Adding number conversion cast (unumber) 0 in (bool~) mul16u::$2 ← (unumber~) mul16u::$1 != (number) 0
|
|
Adding number conversion cast (unumber) 1 in (word~) mul16u::$5 ← (word) mul16u::a#5 >> (number) 1
|
|
Adding number conversion cast (unumber) 1 in (dword~) mul16u::$6 ← (dword) mul16u::mb#2 << (number) 1
|
|
Adding number conversion cast (snumber) 0 in (bool~) mul16s::$1 ← (signed word) mul16s::a#4 < (number) 0
|
|
Adding number conversion cast (snumber) 0 in (bool~) mul16s::$3 ← (signed word) mul16s::b#4 < (number) 0
|
|
Adding number conversion cast (snumber) 1 in (signed word~) sin16s_gen2::$1 ← (signed word) sin16s_gen2::ampl#0 >> (number) 1
|
|
Adding number conversion cast (unumber) 1 in (byte) sin16s::isUpper#1 ← (number) 1
|
|
Adding number conversion cast (unumber) 3 in (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (number) 3
|
|
Adding number conversion cast (unumber) 0 in (byte) mulu16_sel::select#0 ← (number) 0
|
|
Adding number conversion cast (unumber) 1 in (byte) mulu16_sel::select#1 ← (number) 1
|
|
Adding number conversion cast (unumber) $10000/6 in (word) mulu16_sel::v2#2 ← (number) $10000/(number) 6
|
|
Adding number conversion cast (unumber) 1 in (byte) mulu16_sel::select#2 ← (number) 1
|
|
Adding number conversion cast (unumber) 0 in (byte) mulu16_sel::select#3 ← (number) 0
|
|
Adding number conversion cast (unumber) 0 in (byte) mulu16_sel::select#4 ← (number) 0
|
|
Adding number conversion cast (unumber) 4 in (word~) sin16s::$12 ← (word) sin16s::x5#0 >> (number) 4
|
|
Adding number conversion cast (unumber) 0 in (bool~) sin16s::$14 ← (byte) sin16s::isUpper#2 != (number) 0
|
|
Adding number conversion cast (unumber) 0 in (bool~) memset::$0 ← (word) memset::num#2 > (number) 0
|
|
Adding number conversion cast (unumber) 1 in (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (number) 1
|
|
Adding number conversion cast (unumber) 0 in (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (number) 0
|
|
Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#2 ← (number) $80
|
|
Adding number conversion cast (unumber) 7 in (number~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (number) 7
|
|
Adding number conversion cast (unumber) bitmap_init::$3 in (number~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (unumber)(number) 7
|
|
Adding number conversion cast (unumber) bitmap_init::$5 in (number~) bitmap_init::$5 ← (unumber~) bitmap_init::$3 | (byte~) bitmap_init::$4
|
|
Adding number conversion cast (unumber) 7 in (number~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (number) 7
|
|
Adding number conversion cast (unumber) bitmap_init::$7 in (number~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (unumber)(number) 7
|
|
Adding number conversion cast (unumber) 7 in (bool~) bitmap_init::$8 ← (unumber~) bitmap_init::$7 == (number) 7
|
|
Adding number conversion cast (unumber) $28*8 in (byte*~) bitmap_init::$10 ← (byte*) bitmap_init::yoffs#3 + (number) $28*(number) 8
|
|
Adding number conversion cast (unumber) $10 in (number~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (number) $10
|
|
Adding number conversion cast (unumber) bitmap_clear::$0 in (number~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (unumber)(number) $10
|
|
Adding number conversion cast (unumber) bitmap_clear::$1 in (number~) bitmap_clear::$1 ← (unumber~) bitmap_clear::$0 + (byte) bitmap_clear::bgcol#1
|
|
Adding number conversion cast (unumber) 0 in (byte) memset::c#1 ← (number) 0
|
|
Adding number conversion cast (unumber) $fff8 in (number~) bitmap_plot::$0 ← (word) bitmap_plot::x#1 & (number) $fff8
|
|
Adding number conversion cast (unumber) bitmap_plot::$0 in (number~) bitmap_plot::$0 ← (word) bitmap_plot::x#1 & (unumber)(number) $fff8
|
|
Adding number conversion cast (unumber) $200 in (word) sin16s_gen2::wavelength#0 ← (number) $200
|
|
Adding number conversion cast (snumber) -$1001 in (signed word) sin16s_gen2::min#0 ← (number) -$1001
|
|
Adding number conversion cast (snumber) $1001 in (signed word) sin16s_gen2::max#0 ← (number) $1001
|
|
Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3
|
|
Adding number conversion cast (unumber) 3 in *((const nomodify byte*) D011) ← ((unumber)) (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3
|
|
Adding number conversion cast (unumber) $3fff in (number~) main::toD0181_$0 ← (word~) main::toD0181_$7 & (number) $3fff
|
|
Adding number conversion cast (unumber) main::toD0181_$0 in (number~) main::toD0181_$0 ← (word~) main::toD0181_$7 & (unumber)(number) $3fff
|
|
Adding number conversion cast (unumber) 4 in (number~) main::toD0181_$1 ← (unumber~) main::toD0181_$0 * (number) 4
|
|
Adding number conversion cast (unumber) main::toD0181_$1 in (number~) main::toD0181_$1 ← (unumber~) main::toD0181_$0 * (unumber)(number) 4
|
|
Adding number conversion cast (unumber) main::toD0181_$2 in (number~) main::toD0181_$2 ← > (unumber~) main::toD0181_$1
|
|
Adding number conversion cast (unumber) 4 in (number~) main::toD0181_$4 ← (byte~) main::toD0181_$3 / (number) 4
|
|
Adding number conversion cast (unumber) main::toD0181_$4 in (number~) main::toD0181_$4 ← (byte~) main::toD0181_$3 / (unumber)(number) 4
|
|
Adding number conversion cast (unumber) $f in (number~) main::toD0181_$5 ← (unumber~) main::toD0181_$4 & (number) $f
|
|
Adding number conversion cast (unumber) main::toD0181_$5 in (number~) main::toD0181_$5 ← (unumber~) main::toD0181_$4 & (unumber)(number) $f
|
|
Adding number conversion cast (unumber) main::toD0181_$6 in (number~) main::toD0181_$6 ← (unumber~) main::toD0181_$2 | (unumber~) main::toD0181_$5
|
|
Adding number conversion cast (snumber) 2 in (signed word~) main::$7 ← (signed word~) main::$28 >> (number) 2
|
|
Adding number conversion cast (snumber) $a0 in (number~) main::$8 ← (number) $a0 + (signed word~) main::$7
|
|
Adding number conversion cast (snumber) main::$8 in (number~) main::$8 ← (snumber)(number) $a0 + (signed word~) main::$7
|
|
Adding number conversion cast (snumber) 2 in (signed word~) main::$11 ← (signed word~) main::$29 >> (number) 2
|
|
Adding number conversion cast (snumber) $64 in (number~) main::$12 ← (number) $64 + (signed word~) main::$11
|
|
Adding number conversion cast (snumber) main::$12 in (number~) main::$12 ← (snumber)(number) $64 + (signed word~) main::$11
|
|
Adding number conversion cast (unumber) $200 in (bool~) main::$15 ← (word) main::idx_x#1 >= (number) $200
|
|
Adding number conversion cast (unumber) $200 in (bool~) main::$17 ← (word) main::idx_y#1 >= (number) $200
|
|
Adding number conversion cast (unumber) 0 in (word) main::idx_x#2 ← (number) 0
|
|
Adding number conversion cast (unumber) 0 in (bool~) main::$19 ← (word) main::idx_x#5 == (number) 0
|
|
Adding number conversion cast (unumber) 1 in (bool~) main::$20 ← (byte) main::r_add#4 != (number) 1
|
|
Adding number conversion cast (unumber) 0 in (word) main::idx_y#2 ← (number) 0
|
|
Adding number conversion cast (snumber) $200*$c+$100 in (bool~) main::$23 ← (signed word) main::r#5 >= (number) $200*(number) $c+(number) $100
|
|
Adding number conversion cast (unumber) 2 in (byte) main::r_add#1 ← (byte) main::r_add#5 / (number) 2
|
|
Adding number conversion cast (unumber) $80 in *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) | (number) $80
|
|
Adding number conversion cast (unumber) 0 in *((const nomodify byte*) RASTER) ← (number) 0
|
|
Adding number conversion cast (unumber) 0 in (bool~) irq::$1 ← (number) 0 != (volatile byte) frame_cnt
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Inlining cast (word) divr16u::rem#3 ← (unumber)(number) 0
|
|
Inlining cast (byte) sin16s::isUpper#1 ← (unumber)(number) 1
|
|
Inlining cast (byte) mulu16_sel::select#0 ← (unumber)(number) 0
|
|
Inlining cast (byte) mulu16_sel::select#1 ← (unumber)(number) 1
|
|
Inlining cast (word) mulu16_sel::v2#2 ← (unumber)(number) $10000/(number) 6
|
|
Inlining cast (byte) mulu16_sel::select#2 ← (unumber)(number) 1
|
|
Inlining cast (byte) mulu16_sel::select#3 ← (unumber)(number) 0
|
|
Inlining cast (byte) mulu16_sel::select#4 ← (unumber)(number) 0
|
|
Inlining cast (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3
|
|
Inlining cast (byte) bitmap_init::bits#2 ← (unumber)(number) $80
|
|
Inlining cast (byte) memset::c#1 ← (unumber)(number) 0
|
|
Inlining cast (word) sin16s_gen2::wavelength#0 ← (unumber)(number) $200
|
|
Inlining cast (signed word) sin16s_gen2::min#0 ← (snumber)(number) -$1001
|
|
Inlining cast (signed word) sin16s_gen2::max#0 ← (snumber)(number) $1001
|
|
Inlining cast *((const nomodify byte*) D011) ← (unumber)(const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(unumber)(number) 3
|
|
Inlining cast (word) main::idx_x#2 ← (unumber)(number) 0
|
|
Inlining cast (word) main::idx_y#2 ← (unumber)(number) 0
|
|
Inlining cast *((const nomodify byte*) RASTER) ← (unumber)(number) 0
|
|
Successful SSA optimization Pass2InlineCast
|
|
Simplifying constant pointer cast (byte*) 53266
|
|
Simplifying constant pointer cast (byte*) 53280
|
|
Simplifying constant pointer cast (byte*) 53281
|
|
Simplifying constant pointer cast (byte*) 53265
|
|
Simplifying constant pointer cast (byte*) 53265
|
|
Simplifying constant pointer cast (byte*) 53272
|
|
Simplifying constant pointer cast (byte*) 53273
|
|
Simplifying constant pointer cast (byte*) 53274
|
|
Simplifying constant pointer cast (byte*) 0
|
|
Simplifying constant pointer cast (byte*) 1
|
|
Simplifying constant pointer cast (struct MOS6526_CIA*) 56320
|
|
Simplifying constant pointer cast (void()**) 65534
|
|
Simplifying constant pointer cast (byte*) 8192
|
|
Simplifying constant pointer cast (byte*) 1024
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast $80
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast (word) div32u16u::quotient_hi#1
|
|
Simplifying constant integer cast (word) div32u16u::quotient_lo#0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 3
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $80
|
|
Simplifying constant integer cast 7
|
|
Simplifying constant integer cast 7
|
|
Simplifying constant integer cast 7
|
|
Simplifying constant integer cast $10
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#1)
|
|
Simplifying constant integer cast *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#1)
|
|
Simplifying constant integer cast $fff8
|
|
Simplifying constant integer cast $200
|
|
Simplifying constant integer cast -$1001
|
|
Simplifying constant integer cast $1001
|
|
Simplifying constant integer cast (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(unumber)(number) 3
|
|
Simplifying constant integer cast 3
|
|
Simplifying constant integer cast $3fff
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast $f
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast $a0
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast $64
|
|
Simplifying constant integer cast $200
|
|
Simplifying constant integer cast $200
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 1
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast $80
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Successful SSA optimization PassNCastSimplification
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) $80
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized signed number type (signed byte) 0
|
|
Finalized signed number type (signed byte) 0
|
|
Finalized signed number type (signed byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 3
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 4
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) $80
|
|
Finalized unsigned number type (byte) 7
|
|
Finalized unsigned number type (byte) 7
|
|
Finalized unsigned number type (byte) 7
|
|
Finalized unsigned number type (byte) $10
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (word) $fff8
|
|
Finalized unsigned number type (word) $200
|
|
Finalized signed number type (signed word) -$1001
|
|
Finalized signed number type (signed word) $1001
|
|
Finalized unsigned number type (byte) 3
|
|
Finalized unsigned number type (word) $3fff
|
|
Finalized unsigned number type (byte) 4
|
|
Finalized unsigned number type (byte) 4
|
|
Finalized unsigned number type (byte) $f
|
|
Finalized signed number type (signed byte) 2
|
|
Finalized signed number type (signed word) $a0
|
|
Finalized signed number type (signed byte) 2
|
|
Finalized signed number type (signed byte) $64
|
|
Finalized unsigned number type (word) $200
|
|
Finalized unsigned number type (word) $200
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) $80
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Inferred type updated to byte in (unumber~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
|
|
Inferred type updated to word in (unumber~) divr16u::$5 ← (word) divr16u::rem#7 | (byte) 1
|
|
Inferred type updated to byte in (unumber~) mul16u::$1 ← (word) mul16u::a#4 & (byte) 1
|
|
Inferred type updated to byte in (unumber~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte) 7
|
|
Inferred type updated to byte in (unumber~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4
|
|
Inferred type updated to byte in (unumber~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
|
|
Inferred type updated to byte in (unumber~) bitmap_clear::$0 ← (byte) bitmap_clear::fgcol#1 * (byte) $10
|
|
Inferred type updated to byte in (unumber~) bitmap_clear::$1 ← (byte~) bitmap_clear::$0 + (byte) bitmap_clear::bgcol#1
|
|
Inferred type updated to word in (unumber~) bitmap_plot::$0 ← (word) bitmap_plot::x#1 & (word) $fff8
|
|
Inferred type updated to word in (unumber~) main::toD0181_$0 ← (word~) main::toD0181_$7 & (word) $3fff
|
|
Inferred type updated to word in (unumber~) main::toD0181_$1 ← (word~) main::toD0181_$0 * (byte) 4
|
|
Inferred type updated to byte in (unumber~) main::toD0181_$2 ← > (word~) main::toD0181_$1
|
|
Inferred type updated to byte in (unumber~) main::toD0181_$4 ← (byte~) main::toD0181_$3 / (byte) 4
|
|
Inferred type updated to byte in (unumber~) main::toD0181_$5 ← (byte~) main::toD0181_$4 & (byte) $f
|
|
Inferred type updated to byte in (unumber~) main::toD0181_$6 ← (byte~) main::toD0181_$2 | (byte~) main::toD0181_$5
|
|
Inferred type updated to signed word in (snumber~) main::$8 ← (signed word) $a0 + (signed word~) main::$7
|
|
Inferred type updated to signed word in (snumber~) main::$12 ← (signed byte) $64 + (signed word~) main::$11
|
|
Adding pointer type conversion cast (byte*) bitmap_plot::$2 in (byte*~) bitmap_plot::$2 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#1) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#1)
|
|
Successful SSA optimization PassNAddTypeConversionAssignment
|
|
Inversing boolean not [10] (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte) 0 from [9] (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte) 0
|
|
Inversing boolean not [18] (bool~) divr16u::$9 ← (word) divr16u::rem#6 < (word) divr16u::divisor#2 from [17] (bool~) divr16u::$8 ← (word) divr16u::rem#6 >= (word) divr16u::divisor#2
|
|
Inversing boolean not [75] (bool~) mul16u::$3 ← (byte~) mul16u::$1 == (byte) 0 from [74] (bool~) mul16u::$2 ← (byte~) mul16u::$1 != (byte) 0
|
|
Inversing boolean not [99] (bool~) mul16s::$2 ← (signed word) mul16s::a#4 >= (signed byte) 0 from [98] (bool~) mul16s::$1 ← (signed word) mul16s::a#4 < (signed byte) 0
|
|
Inversing boolean not [103] (bool~) mul16s::$4 ← (signed word) mul16s::b#4 >= (signed byte) 0 from [102] (bool~) mul16s::$3 ← (signed word) mul16s::b#4 < (signed byte) 0
|
|
Inversing boolean not [167] (bool~) sin16s::$1 ← (dword) sin16s::x#3 < (const nomodify dword) PI_u4f28 from [166] (bool~) sin16s::$0 ← (dword) sin16s::x#3 >= (const nomodify dword) PI_u4f28
|
|
Inversing boolean not [171] (bool~) sin16s::$3 ← (dword) sin16s::x#4 < (const nomodify dword) PI_HALF_u4f28 from [170] (bool~) sin16s::$2 ← (dword) sin16s::x#4 >= (const nomodify dword) PI_HALF_u4f28
|
|
Inversing boolean not [229] (bool~) sin16s::$15 ← (byte) sin16s::isUpper#2 == (byte) 0 from [228] (bool~) sin16s::$14 ← (byte) sin16s::isUpper#2 != (byte) 0
|
|
Inversing boolean not [257] (bool~) memset::$1 ← (word) memset::num#2 <= (byte) 0 from [256] (bool~) memset::$0 ← (word) memset::num#2 > (byte) 0
|
|
Inversing boolean not [287] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte) 0 from [286] (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte) 0
|
|
Inversing boolean not [307] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte) 7 from [306] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte) 7
|
|
Inversing boolean not [425] (bool~) main::$16 ← (word) main::idx_x#1 < (word) $200 from [424] (bool~) main::$15 ← (word) main::idx_x#1 >= (word) $200
|
|
Inversing boolean not [430] (bool~) main::$18 ← (word) main::idx_y#1 < (word) $200 from [429] (bool~) main::$17 ← (word) main::idx_y#1 >= (word) $200
|
|
Inversing boolean not [445] (bool~) main::$24 ← (signed word) main::r#5 < (signed word)(number) $200*(number) $c+(number) $100 from [444] (bool~) main::$23 ← (signed word) main::r#5 >= (signed word)(number) $200*(number) $c+(number) $100
|
|
Inversing boolean not [472] (bool~) irq::$0 ← (byte) 0 == (volatile byte) frame_cnt from [471] (bool~) irq::$1 ← (byte) 0 != (volatile byte) frame_cnt
|
|
Successful SSA optimization Pass2UnaryNotSimplification
|
|
Alias divr16u::rem#0 = divr16u::$0 divr16u::rem#7
|
|
Alias divr16u::dividend#0 = divr16u::$6 divr16u::dividend#8
|
|
Alias divr16u::quotient#1 = divr16u::$7 divr16u::quotient#4
|
|
Alias divr16u::dividend#3 = divr16u::dividend#7
|
|
Alias divr16u::quotient#6 = divr16u::quotient#7
|
|
Alias divr16u::divisor#4 = divr16u::divisor#5
|
|
Alias divr16u::i#5 = divr16u::i#6
|
|
Alias divr16u::rem#1 = divr16u::$5
|
|
Alias divr16u::rem#6 = divr16u::rem#8
|
|
Alias divr16u::divisor#2 = divr16u::divisor#3
|
|
Alias divr16u::i#3 = divr16u::i#4
|
|
Alias divr16u::rem#2 = divr16u::$10
|
|
Alias divr16u::rem#11 = divr16u::rem#9
|
|
Alias divr16u::return#0 = divr16u::quotient#5 divr16u::quotient#8 divr16u::return#4 divr16u::return#1
|
|
Alias rem16u#1 = rem16u#11 rem16u#2
|
|
Alias divr16u::dividend#1 = div32u16u::$0
|
|
Alias divr16u::return#2 = divr16u::return#5
|
|
Alias div32u16u::dividend#1 = div32u16u::dividend#2
|
|
Alias div32u16u::divisor#1 = div32u16u::divisor#2
|
|
Alias rem16u#12 = rem16u#3
|
|
Alias div32u16u::quotient_hi#0 = div32u16u::$1 div32u16u::quotient_hi#1
|
|
Alias divr16u::dividend#2 = div32u16u::$2
|
|
Alias divr16u::return#3 = divr16u::return#6
|
|
Alias rem16u#13 = rem16u#4 rem16u#14 rem16u#5
|
|
Alias div32u16u::quotient_lo#0 = div32u16u::$3
|
|
Alias div32u16u::return#0 = div32u16u::quotient#0 div32u16u::$4 div32u16u::return#3 div32u16u::return#1
|
|
Alias mul16u::a#3 = mul16u::a#4 mul16u::a#7
|
|
Alias mul16u::mb#3 = mul16u::mb#4 mul16u::mb#5
|
|
Alias mul16u::res#2 = mul16u::res#5 mul16u::res#4 mul16u::return#0 mul16u::res#3 mul16u::return#4 mul16u::return#1
|
|
Alias mul16u::a#0 = mul16u::$5
|
|
Alias mul16u::mb#1 = mul16u::$6
|
|
Alias mul16u::res#1 = mul16u::$4
|
|
Alias mul16u::return#2 = mul16u::return#5
|
|
Alias mul16s::a#3 = mul16s::a#4 mul16s::a#7
|
|
Alias mul16s::b#3 = mul16s::b#6 mul16s::b#5
|
|
Alias mul16s::m#0 = mul16s::$0 mul16s::m#3
|
|
Alias mul16s::$11 = mul16s::$7
|
|
Alias mul16s::m#5 = mul16s::m#6
|
|
Alias mul16s::a#5 = mul16s::a#6
|
|
Alias mul16s::$12 = mul16s::$10
|
|
Alias mul16s::return#0 = mul16s::return#5 mul16s::return#1
|
|
Alias sin16s_gen2::ampl#0 = sin16s_gen2::$0 sin16s_gen2::ampl#4
|
|
Alias sin16s_gen2::offs#0 = sin16s_gen2::$2 sin16s_gen2::offs#5
|
|
Alias div32u16u::return#2 = div32u16u::return#4
|
|
Alias sin16s_gen2::wavelength#1 = sin16s_gen2::wavelength#3
|
|
Alias sin16s_gen2::sintab#6 = sin16s_gen2::sintab#7
|
|
Alias rem16u#15 = rem16u#6
|
|
Alias sin16s_gen2::step#0 = sin16s_gen2::$3
|
|
Alias sin16s_gen2::x#2 = sin16s_gen2::x#4 sin16s_gen2::x#5 sin16s_gen2::x#3
|
|
Alias sin16s_gen2::ampl#1 = sin16s_gen2::ampl#2 sin16s_gen2::ampl#3 sin16s_gen2::ampl#5
|
|
Alias sin16s_gen2::offs#1 = sin16s_gen2::offs#3 sin16s_gen2::offs#4 sin16s_gen2::offs#2
|
|
Alias sin16s_gen2::sintab#2 = sin16s_gen2::sintab#4 sin16s_gen2::sintab#5 sin16s_gen2::sintab#3
|
|
Alias sin16s_gen2::step#1 = sin16s_gen2::step#3 sin16s_gen2::step#4 sin16s_gen2::step#2
|
|
Alias sin16s_gen2::i#2 = sin16s_gen2::i#5 sin16s_gen2::i#4 sin16s_gen2::i#3
|
|
Alias sin16s_gen2::wavelength#2 = sin16s_gen2::wavelength#6 sin16s_gen2::wavelength#5 sin16s_gen2::wavelength#4
|
|
Alias rem16u#16 = rem16u#36 rem16u#22 rem16u#31 rem16u#26 rem16u#7
|
|
Alias sin16s::return#0 = sin16s::return#3
|
|
Alias mul16s::a#0 = sin16s_gen2::$5
|
|
Alias mul16s::return#2 = mul16s::return#6
|
|
Alias sin16s_gen2::x#1 = sin16s_gen2::$9
|
|
Alias sin16s::x#3 = sin16s::x#5
|
|
Alias sin16s::x#1 = sin16s::$16
|
|
Alias sin16s::x1#0 = sin16s::$5 sin16s::x1#1 sin16s::x1#4 sin16s::x1#2 sin16s::x1#3
|
|
Alias mulu16_sel::return#0 = mulu16_sel::return#7
|
|
Alias sin16s::isUpper#2 = sin16s::isUpper#6 sin16s::isUpper#7 sin16s::isUpper#5 sin16s::isUpper#4 sin16s::isUpper#3
|
|
Alias sin16s::x2#0 = sin16s::$6
|
|
Alias mulu16_sel::return#1 = mulu16_sel::return#8
|
|
Alias sin16s::x3#0 = sin16s::$7 sin16s::x3#1
|
|
Alias mulu16_sel::return#2 = mulu16_sel::return#9
|
|
Alias sin16s::x3_6#0 = sin16s::$8
|
|
Alias sin16s::usinx#0 = sin16s::$9 sin16s::usinx#4 sin16s::usinx#2
|
|
Alias mulu16_sel::return#10 = mulu16_sel::return#3
|
|
Alias sin16s::x4#0 = sin16s::$10
|
|
Alias mulu16_sel::return#11 = mulu16_sel::return#4
|
|
Alias sin16s::x5#0 = sin16s::$11
|
|
Alias sin16s::x5_128#0 = sin16s::$12
|
|
Alias sin16s::usinx#1 = sin16s::$13 sin16s::usinx#3
|
|
Alias sin16s::x#4 = sin16s::x#7
|
|
Alias sin16s::isUpper#8 = sin16s::isUpper#9
|
|
Alias sin16s::x#2 = sin16s::$17
|
|
Alias sin16s::return#1 = sin16s::sinx#2 sin16s::return#4 sin16s::return#2
|
|
Alias sin16s::sinx#1 = sin16s::$18
|
|
Alias mul16u::return#3 = mul16u::return#6
|
|
Alias mulu16_sel::select#5 = mulu16_sel::select#6
|
|
Alias mulu16_sel::return#12 = mulu16_sel::return#5 mulu16_sel::$2 mulu16_sel::return#6
|
|
Alias memset::return#0 = memset::str#2 memset::return#4 memset::return#1
|
|
Alias memset::str#3 = memset::str#4
|
|
Alias memset::num#2 = memset::num#3
|
|
Alias memset::c#4 = memset::c#5
|
|
Alias memset::end#0 = memset::$2
|
|
Alias memset::c#2 = memset::c#3
|
|
Alias memset::dst#2 = memset::dst#3
|
|
Alias memset::end#1 = memset::end#2
|
|
Alias memset::str#5 = memset::str#6
|
|
Alias rem16u#0 = rem16u#35 rem16u#30 rem16u#25
|
|
Alias bitmap_init::x#2 = bitmap_init::x#4
|
|
Alias bitmap_init::gfx#4 = bitmap_init::gfx#5
|
|
Alias bitmap_gfx#31 = bitmap_gfx#32
|
|
Alias bitmap_screen#30 = bitmap_screen#31
|
|
Alias bitmap_init::gfx#2 = bitmap_init::gfx#3 bitmap_init::yoffs#0
|
|
Alias bitmap_gfx#23 = bitmap_gfx#27
|
|
Alias bitmap_screen#22 = bitmap_screen#26
|
|
Alias bitmap_init::yoffs#2 = bitmap_init::yoffs#3
|
|
Alias bitmap_init::y#2 = bitmap_init::y#4
|
|
Alias bitmap_gfx#16 = bitmap_gfx#17
|
|
Alias bitmap_screen#15 = bitmap_screen#16
|
|
Alias bitmap_init::yoffs#1 = bitmap_init::$10
|
|
Alias bitmap_gfx#11 = bitmap_gfx#6 bitmap_gfx#2
|
|
Alias bitmap_screen#11 = bitmap_screen#6 bitmap_screen#2
|
|
Alias bitmap_clear::col#0 = bitmap_clear::$1
|
|
Alias bitmap_gfx#12 = bitmap_gfx#7
|
|
Alias bitmap_plot::plotter#0 = bitmap_plot::$2
|
|
Alias bitmap_gfx#13 = bitmap_gfx#18
|
|
Alias bitmap_screen#12 = bitmap_screen#17
|
|
Alias rem16u#17 = rem16u#8 rem16u#47 rem16u#45 rem16u#43 rem16u#40 rem16u#37 rem16u#32
|
|
Alias bitmap_gfx#24 = bitmap_gfx#3 bitmap_gfx#8 bitmap_gfx#38 bitmap_gfx#36 bitmap_gfx#33 bitmap_gfx#28
|
|
Alias bitmap_screen#23 = bitmap_screen#3 bitmap_screen#8 bitmap_screen#37 bitmap_screen#35 bitmap_screen#32 bitmap_screen#27
|
|
Alias main::toD0181_screen#0 = main::toD0181_screen#1
|
|
Alias main::toD0181_gfx#0 = main::toD0181_gfx#1
|
|
Alias main::toD0181_return#0 = main::toD0181_$6 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$3
|
|
Alias main::idx_x#11 = main::idx_x#3 main::idx_x#6 main::idx_x#7 main::idx_x#4
|
|
Alias main::r#10 = main::r#2 main::r#6 main::r#3 main::r#12 main::r#11
|
|
Alias main::idx_y#3 = main::idx_y#5 main::idx_y#8 main::idx_y#9 main::idx_y#6 main::idx_y#7
|
|
Alias main::r_add#10 = main::r_add#11 main::r_add#9 main::r_add#6 main::r_add#2 main::r_add#7
|
|
Alias rem16u#27 = rem16u#48 rem16u#46 rem16u#44 rem16u#41 rem16u#42
|
|
Alias bitmap_gfx#19 = bitmap_gfx#40 bitmap_gfx#39 bitmap_gfx#37 bitmap_gfx#34 bitmap_gfx#35
|
|
Alias bitmap_screen#18 = bitmap_screen#39 bitmap_screen#38 bitmap_screen#36 bitmap_screen#33 bitmap_screen#34
|
|
Alias mul16s::return#3 = mul16s::return#7
|
|
Alias main::xpos#0 = main::$5
|
|
Alias mul16s::return#4 = mul16s::return#8
|
|
Alias main::x#0 = main::x#1
|
|
Alias main::ypos#0 = main::$9
|
|
Alias main::r#7 = main::r#8
|
|
Alias main::r_add#3 = main::r_add#8
|
|
Alias main::idx_x#8 = main::idx_x#9
|
|
Alias rem16u#38 = rem16u#39
|
|
Alias bitmap_gfx#29 = bitmap_gfx#30
|
|
Alias bitmap_screen#28 = bitmap_screen#29
|
|
Alias main::r_add#4 = main::r_add#5
|
|
Alias main::r#1 = main::r#9
|
|
Alias main::idx_x#12 = main::idx_x#5
|
|
Alias rem16u#33 = rem16u#34
|
|
Alias bitmap_gfx#25 = bitmap_gfx#26
|
|
Alias bitmap_screen#24 = bitmap_screen#25
|
|
Alias main::idx_y#11 = main::idx_y#12
|
|
Alias rem16u#18 = rem16u#28 rem16u#24 rem16u#9
|
|
Alias bitmap_gfx#14 = bitmap_gfx#20 bitmap_gfx#9 bitmap_gfx#4
|
|
Alias bitmap_screen#13 = bitmap_screen#19 bitmap_screen#9 bitmap_screen#4
|
|
Alias bitmap_gfx#0 = bitmap_gfx#22 bitmap_gfx#15
|
|
Alias bitmap_screen#0 = bitmap_screen#21 bitmap_screen#14
|
|
Alias rem16u#10 = rem16u#19
|
|
Alias bitmap_gfx#10 = bitmap_gfx#5
|
|
Alias bitmap_screen#10 = bitmap_screen#5
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias divr16u::dividend#3 = divr16u::dividend#4
|
|
Alias divr16u::quotient#3 = divr16u::quotient#6
|
|
Alias divr16u::divisor#2 = divr16u::divisor#4 divr16u::divisor#7
|
|
Alias divr16u::i#2 = divr16u::i#3 divr16u::i#5
|
|
Alias divr16u::dividend#0 = divr16u::dividend#6
|
|
Alias mul16u::a#3 = mul16u::a#5
|
|
Alias mul16u::mb#2 = mul16u::mb#3
|
|
Alias mul16s::b#3 = mul16s::b#4
|
|
Alias mul16s::a#3 = mul16s::a#5
|
|
Alias sin16s::isUpper#2 = sin16s::isUpper#8
|
|
Alias bitmap_init::x#2 = bitmap_init::x#3
|
|
Alias bitmap_init::gfx#2 = bitmap_init::gfx#4
|
|
Alias bitmap_gfx#23 = bitmap_gfx#31
|
|
Alias bitmap_screen#22 = bitmap_screen#30
|
|
Alias bitmap_init::y#2 = bitmap_init::y#3
|
|
Alias bitmap_gfx#11 = bitmap_gfx#16
|
|
Alias bitmap_screen#11 = bitmap_screen#15
|
|
Alias main::idx_y#3 = main::idx_y#4
|
|
Alias main::r_add#10 = main::r_add#3 main::r_add#4
|
|
Alias main::r#10 = main::r#7 main::r#4
|
|
Alias rem16u#27 = rem16u#38 rem16u#33 rem16u#29
|
|
Alias bitmap_gfx#19 = bitmap_gfx#29 bitmap_gfx#25 bitmap_gfx#21
|
|
Alias bitmap_screen#18 = bitmap_screen#28 bitmap_screen#24 bitmap_screen#20
|
|
Alias main::idx_x#10 = main::idx_x#12 main::idx_x#8
|
|
Alias main::r#1 = main::r#5
|
|
Alias main::idx_y#10 = main::idx_y#11
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Identical Phi Values (word) divr16u::divisor#2 (word) divr16u::divisor#6
|
|
Identical Phi Values (dword) div32u16u::dividend#1 (dword) div32u16u::dividend#0
|
|
Identical Phi Values (word) div32u16u::divisor#1 (word) div32u16u::divisor#0
|
|
Identical Phi Values (word) rem16u#20 (word) rem16u#21
|
|
Identical Phi Values (word) rem16u#12 (word) rem16u#1
|
|
Identical Phi Values (word) rem16u#13 (word) rem16u#1
|
|
Identical Phi Values (signed word) sin16s_gen2::max#1 (signed word) sin16s_gen2::max#0
|
|
Identical Phi Values (signed word) sin16s_gen2::min#1 (signed word) sin16s_gen2::min#0
|
|
Identical Phi Values (word) sin16s_gen2::wavelength#1 (word) sin16s_gen2::wavelength#0
|
|
Identical Phi Values (word) rem16u#21 (word) rem16u#23
|
|
Identical Phi Values (signed word*) sin16s_gen2::sintab#6 (signed word*) sin16s_gen2::sintab#1
|
|
Identical Phi Values (word) rem16u#15 (word) rem16u#13
|
|
Identical Phi Values (word) sin16s_gen2::wavelength#2 (word) sin16s_gen2::wavelength#1
|
|
Identical Phi Values (word) rem16u#16 (word) rem16u#15
|
|
Identical Phi Values (signed word) sin16s_gen2::ampl#1 (signed word) sin16s_gen2::ampl#0
|
|
Identical Phi Values (signed word) sin16s_gen2::offs#1 (signed word) sin16s_gen2::offs#0
|
|
Identical Phi Values (dword) sin16s_gen2::step#1 (dword) sin16s_gen2::step#0
|
|
Identical Phi Values (dword) sin16s::x#3 (dword) sin16s::x#0
|
|
Identical Phi Values (byte*) memset::end#1 (byte*) memset::end#0
|
|
Identical Phi Values (void*) memset::str#5 (void*) memset::str#3
|
|
Identical Phi Values (byte) memset::c#2 (byte) memset::c#4
|
|
Identical Phi Values (byte*) bitmap_init::gfx#1 (byte*) bitmap_init::gfx#0
|
|
Identical Phi Values (byte*) bitmap_init::screen#1 (byte*) bitmap_init::screen#0
|
|
Identical Phi Values (byte*) bitmap_init::gfx#2 (byte*) bitmap_init::gfx#1
|
|
Identical Phi Values (byte*) bitmap_gfx#23 (byte*) bitmap_gfx#1
|
|
Identical Phi Values (byte*) bitmap_screen#22 (byte*) bitmap_screen#1
|
|
Identical Phi Values (byte*) bitmap_gfx#11 (byte*) bitmap_gfx#23
|
|
Identical Phi Values (byte*) bitmap_screen#11 (byte*) bitmap_screen#22
|
|
Identical Phi Values (byte) bitmap_clear::fgcol#1 (byte) bitmap_clear::fgcol#0
|
|
Identical Phi Values (byte) bitmap_clear::bgcol#1 (byte) bitmap_clear::bgcol#0
|
|
Identical Phi Values (byte*) bitmap_screen#7 (byte*) bitmap_screen#23
|
|
Identical Phi Values (byte*) bitmap_gfx#12 (byte*) bitmap_gfx#24
|
|
Identical Phi Values (byte) bitmap_plot::y#1 (byte) bitmap_plot::y#0
|
|
Identical Phi Values (word) bitmap_plot::x#1 (word) bitmap_plot::x#0
|
|
Identical Phi Values (word) rem16u#23 (word) rem16u#0
|
|
Identical Phi Values (byte*) bitmap_gfx#13 (byte*) bitmap_gfx#0
|
|
Identical Phi Values (byte*) bitmap_screen#12 (byte*) bitmap_screen#0
|
|
Identical Phi Values (word) rem16u#17 (word) rem16u#16
|
|
Identical Phi Values (byte*) bitmap_gfx#24 (byte*) bitmap_gfx#11
|
|
Identical Phi Values (byte*) bitmap_screen#23 (byte*) bitmap_screen#11
|
|
Identical Phi Values (word) rem16u#27 (word) rem16u#17
|
|
Identical Phi Values (byte*) bitmap_gfx#19 (byte*) bitmap_gfx#24
|
|
Identical Phi Values (byte*) bitmap_screen#18 (byte*) bitmap_screen#23
|
|
Identical Phi Values (word) rem16u#18 (word) rem16u#27
|
|
Identical Phi Values (byte*) bitmap_gfx#14 (byte*) bitmap_gfx#19
|
|
Identical Phi Values (byte*) bitmap_screen#13 (byte*) bitmap_screen#18
|
|
Identical Phi Values (word) rem16u#10 (word) rem16u#18
|
|
Identical Phi Values (byte*) bitmap_gfx#10 (byte*) bitmap_gfx#14
|
|
Identical Phi Values (byte*) bitmap_screen#10 (byte*) bitmap_screen#13
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Identical Phi Values (void*) memset::return#0 (void*) memset::str#3
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Identified duplicate assignment right side [305] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
|
|
Successful SSA optimization Pass2DuplicateRValueIdentification
|
|
Simple Condition (bool~) divr16u::$4 [9] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
|
|
Simple Condition (bool~) divr16u::$9 [14] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3
|
|
Simple Condition (bool~) divr16u::$11 [19] if((byte) divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1
|
|
Simple Condition (bool~) mul16u::$0 [46] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2
|
|
Simple Condition (bool~) mul16u::$3 [49] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@4
|
|
Simple Condition (bool~) mul16s::$2 [62] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1
|
|
Simple Condition (bool~) mul16s::$4 [65] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2
|
|
Simple Condition (bool~) sin16s_gen2::$4 [91] if((word) sin16s_gen2::i#2<(word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2
|
|
Simple Condition (bool~) sin16s::$1 [111] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1
|
|
Simple Condition (bool~) sin16s::$3 [114] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2
|
|
Simple Condition (bool~) sin16s::$15 [155] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@3
|
|
Simple Condition (bool~) memset::$1 [171] if((word) memset::num#2<=(byte) 0) goto memset::@1
|
|
Simple Condition (bool~) memset::$3 [178] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@4
|
|
Simple Condition (bool~) bitmap_init::$1 [193] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@2
|
|
Simple Condition (bool~) bitmap_init::$2 [197] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1
|
|
Simple Condition (bool~) bitmap_init::$9 [209] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@6
|
|
Simple Condition (bool~) bitmap_init::$11 [213] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5
|
|
Simple Condition (bool~) main::$16 [301] if((word) main::idx_x#1<(word) $200) goto main::@3
|
|
Simple Condition (bool~) main::$18 [305] if((word) main::idx_y#1<(word) $200) goto main::@4
|
|
Simple Condition (bool~) main::$24 [317] if((signed word) main::r#1<(signed word)(number) $200*(number) $c+(number) $100) goto main::@1
|
|
Simple Condition (bool~) irq::$0 [336] if((byte) 0==(volatile byte) frame_cnt) goto irq::@1
|
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
|
Rewriting ! if()-condition to reversed if() [312] (bool~) main::$22 ← ! (bool~) main::$21
|
|
Rewriting && if()-condition to two if()s [311] (bool~) main::$21 ← (bool~) main::$19 && (bool~) main::$20
|
|
Successful SSA optimization Pass2ConditionalAndOrRewriting
|
|
Negating conditional jump and destination [317] if((signed word) main::r#1>=(signed word)(number) $200*(number) $c+(number) $100) goto main::@9
|
|
Constant right-side identified [133] (word) mulu16_sel::v2#2 ← (unumber)(number) $10000/(number) 6
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant (const word) rem16u#0 = 0
|
|
Constant (const word) divr16u::quotient#0 = 0
|
|
Constant (const byte) divr16u::i#0 = 0
|
|
Constant (const word) divr16u::rem#3 = 0
|
|
Constant (const dword) mul16u::res#0 = 0
|
|
Constant (const dword) div32u16u::dividend#0 = PI2_u4f28
|
|
Constant (const dword) sin16s_gen2::x#0 = 0
|
|
Constant (const word) sin16s_gen2::i#0 = 0
|
|
Constant (const byte) sin16s::isUpper#0 = 0
|
|
Constant (const byte) sin16s::isUpper#1 = 1
|
|
Constant (const byte) mulu16_sel::select#0 = 0
|
|
Constant (const byte) mulu16_sel::select#1 = 1
|
|
Constant (const word) mulu16_sel::v2#2 = (unumber)$10000/6
|
|
Constant (const byte) mulu16_sel::select#2 = 1
|
|
Constant (const byte) mulu16_sel::select#3 = 0
|
|
Constant (const byte) mulu16_sel::select#4 = 0
|
|
Constant (const byte*) bitmap_screen#0 = (byte*) 0
|
|
Constant (const byte*) bitmap_gfx#0 = (byte*) 0
|
|
Constant (const byte) bitmap_init::bits#0 = $80
|
|
Constant (const byte) bitmap_init::x#0 = 0
|
|
Constant (const byte) bitmap_init::bits#2 = $80
|
|
Constant (const byte) bitmap_init::y#0 = 0
|
|
Constant (const word) memset::num#0 = $3e8
|
|
Constant (const byte) memset::c#1 = 0
|
|
Constant (const word) memset::num#1 = $1f40
|
|
Constant (const signed word*) sin16s_gen2::sintab#1 = SINUS
|
|
Constant (const word) sin16s_gen2::wavelength#0 = $200
|
|
Constant (const signed word) sin16s_gen2::min#0 = -$1001
|
|
Constant (const signed word) sin16s_gen2::max#0 = $1001
|
|
Constant (const byte*) bitmap_init::gfx#0 = BITMAP
|
|
Constant (const byte*) bitmap_init::screen#0 = SCREEN
|
|
Constant (const byte) bitmap_clear::bgcol#0 = BLACK
|
|
Constant (const byte) bitmap_clear::fgcol#0 = WHITE
|
|
Constant (const byte*) main::toD0181_screen#0 = SCREEN
|
|
Constant (const byte*) main::toD0181_gfx#0 = BITMAP
|
|
Constant (const word) main::idx_x#0 = 0
|
|
Constant (const word) main::idx_y#0 = $80
|
|
Constant (const signed word) main::r#0 = 0
|
|
Constant (const byte) main::r_add#0 = $20
|
|
Constant (const word) main::idx_x#2 = 0
|
|
Constant (const word) main::idx_y#2 = 0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant (const word) div32u16u::divisor#0 = sin16s_gen2::wavelength#0
|
|
Constant (const byte*) bitmap_gfx#1 = bitmap_init::gfx#0
|
|
Constant (const byte*) bitmap_screen#1 = bitmap_init::screen#0
|
|
Constant (const word) main::toD0181_$7 = (word)main::toD0181_screen#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant (const word) divr16u::divisor#0 = div32u16u::divisor#0
|
|
Constant (const word) divr16u::divisor#1 = div32u16u::divisor#0
|
|
Constant (const void*) memset::str#0 = (void*)bitmap_screen#1
|
|
Constant (const void*) memset::str#1 = (void*)bitmap_gfx#1
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant value identified (word)main::toD0181_gfx#0 in [259] (byte~) main::toD0181_$3 ← > (word)(const byte*) main::toD0181_gfx#0
|
|
Successful SSA optimization Pass2ConstantValues
|
|
if() condition always true - replacing block destination [270] if(true) goto main::@2
|
|
if() condition always true - replacing block destination [320] if(true) goto main::@10
|
|
Successful SSA optimization Pass2ConstantIfs
|
|
Resolved ranged next value [17] divr16u::i#1 ← ++ divr16u::i#2 to ++
|
|
Resolved ranged comparison value [19] if(divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1 to (number) $10
|
|
Resolved ranged next value [195] bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++
|
|
Resolved ranged comparison value [197] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to (number) 0
|
|
Resolved ranged next value [211] bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++
|
|
Resolved ranged comparison value [213] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 to (number) 0
|
|
De-inlining pointer[w] to *(pointer+w) [272] (signed word) main::cos_x#0 ← *((const signed word*) SINUS + (word~) main::$26)
|
|
De-inlining pointer[w] to *(pointer+w) [284] (signed word) main::sin_y#0 ← *((const signed word*) SINUS + (word~) main::$27)
|
|
Successful SSA optimization Pass2DeInlineWordDerefIdx
|
|
Simplifying expression containing zero bitmap_clear::$0 in [218] (byte) bitmap_clear::col#0 ← (byte~) bitmap_clear::$0 + (const byte) bitmap_clear::bgcol#0
|
|
Successful SSA optimization PassNSimplifyExpressionWithZero
|
|
Eliminating unused variable (void*) memset::return#2 and assignment [168] (void*) memset::return#2 ← (void*) memset::str#3
|
|
Eliminating unused variable (void*) memset::return#3 and assignment [170] (void*) memset::return#3 ← (void*) memset::str#3
|
|
Eliminating unused constant (const byte) bitmap_clear::bgcol#0
|
|
Eliminating unused constant (const word) rem16u#0
|
|
Eliminating unused constant (const byte*) bitmap_screen#0
|
|
Eliminating unused constant (const byte*) bitmap_gfx#0
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Removing unused block main::@return
|
|
Successful SSA optimization Pass2EliminateUnusedBlocks
|
|
Adding number conversion cast (unumber) $10 in if((byte) divr16u::i#1!=(number) $10) goto divr16u::@1
|
|
Adding number conversion cast (unumber) 0 in if((byte) bitmap_init::x#1!=(number) 0) goto bitmap_init::@1
|
|
Adding number conversion cast (unumber) 0 in if((byte) bitmap_init::y#1!=(number) 0) goto bitmap_init::@5
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Inlining cast (byte*) bitmap_plot::plotter#0 ← (byte*)(word~) bitmap_plot::$3
|
|
Successful SSA optimization Pass2InlineCast
|
|
Simplifying constant integer cast $10
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Successful SSA optimization PassNCastSimplification
|
|
Finalized unsigned number type (byte) $10
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Alias bitmap_init::$7 = bitmap_init::$3
|
|
Alias bitmap_clear::col#0 = bitmap_clear::$0
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Simple Condition (bool~) main::$19 [228] if((word) main::idx_x#10==(byte) 0) goto main::@19
|
|
Simple Condition (bool~) main::$20 [251] if((byte) main::r_add#10!=(byte) 1) goto main::@8
|
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
|
Negating conditional jump and destination [228] if((word) main::idx_x#10!=(byte) 0) goto main::@5
|
|
Negating conditional jump and destination [251] if((byte) main::r_add#10==(byte) 1) goto main::@5
|
|
Successful SSA optimization Pass2ConditionalJumpSequenceImprovement
|
|
Constant right-side identified [18] (word) divr16u::dividend#1 ← > (const dword) div32u16u::dividend#0
|
|
Constant right-side identified [22] (word) divr16u::dividend#2 ← < (const dword) div32u16u::dividend#0
|
|
Constant right-side identified [60] (signed word) sin16s_gen2::ampl#0 ← (const signed word) sin16s_gen2::max#0 - (const signed word) sin16s_gen2::min#0
|
|
Constant right-side identified [163] (byte) bitmap_clear::col#0 ← (const byte) bitmap_clear::fgcol#0 * (byte) $10
|
|
Constant right-side identified [179] (word~) main::toD0181_$0 ← (const word) main::toD0181_$7 & (word) $3fff
|
|
Constant right-side identified [182] (byte~) main::toD0181_$3 ← > (word)(const byte*) main::toD0181_gfx#0
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant (const word) divr16u::dividend#1 = >div32u16u::dividend#0
|
|
Constant (const word) divr16u::dividend#2 = <div32u16u::dividend#0
|
|
Constant (const signed word) sin16s_gen2::ampl#0 = sin16s_gen2::max#0-sin16s_gen2::min#0
|
|
Constant (const byte) bitmap_clear::col#0 = bitmap_clear::fgcol#0*$10
|
|
Constant (const word) main::toD0181_$0 = main::toD0181_$7&$3fff
|
|
Constant (const byte) main::toD0181_$3 = >(word)main::toD0181_gfx#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant (const signed word) mul16s::b#0 = sin16s_gen2::ampl#0
|
|
Constant (const byte) memset::c#0 = bitmap_clear::col#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant right-side identified [58] (signed word~) sin16s_gen2::$1 ← (const signed word) sin16s_gen2::ampl#0 >> (signed byte) 1
|
|
Constant right-side identified [173] (word~) main::toD0181_$1 ← (const word) main::toD0181_$0 * (byte) 4
|
|
Constant right-side identified [175] (byte~) main::toD0181_$4 ← (const byte) main::toD0181_$3 / (byte) 4
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant (const signed word) sin16s_gen2::$1 = sin16s_gen2::ampl#0>>1
|
|
Constant (const word) main::toD0181_$1 = main::toD0181_$0*4
|
|
Constant (const byte) main::toD0181_$4 = main::toD0181_$3/4
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant right-side identified [58] (signed word) sin16s_gen2::offs#0 ← (const signed word) sin16s_gen2::min#0 + (const signed word) sin16s_gen2::$1
|
|
Constant right-side identified [172] (byte~) main::toD0181_$2 ← > (const word) main::toD0181_$1
|
|
Constant right-side identified [173] (byte~) main::toD0181_$5 ← (const byte) main::toD0181_$4 & (byte) $f
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant (const signed word) sin16s_gen2::offs#0 = sin16s_gen2::min#0+sin16s_gen2::$1
|
|
Constant (const byte) main::toD0181_$2 = >main::toD0181_$1
|
|
Constant (const byte) main::toD0181_$5 = main::toD0181_$4&$f
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Simplifying constant evaluating to zero (const signed word) sin16s_gen2::min#0+(const signed word) sin16s_gen2::$1 in
|
|
Successful SSA optimization PassNSimplifyConstantZero
|
|
Simplifying expression containing zero sin16s_gen2::$10 in [73] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word~) sin16s_gen2::$10
|
|
Successful SSA optimization PassNSimplifyExpressionWithZero
|
|
Eliminating unused constant (const signed word) sin16s_gen2::$1
|
|
Eliminating unused constant (const signed word) sin16s_gen2::offs#0
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Alias sin16s_gen2::$8 = sin16s_gen2::$10
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Constant right-side identified [170] (byte) main::toD0181_return#0 ← (const byte) main::toD0181_$2 | (const byte) main::toD0181_$5
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant (const byte) main::toD0181_return#0 = main::toD0181_$2|main::toD0181_$5
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Inlining Noop Cast [48] (word~) mul16s::$13 ← (word)(signed word) mul16s::b#3 keeping mul16s::b#3
|
|
Inlining Noop Cast [54] (word~) mul16s::$14 ← (word)(signed word) mul16s::a#3 keeping mul16s::a#3
|
|
Inlining Noop Cast [111] (signed word) sin16s::sinx#0 ← (signed word)(word) sin16s::usinx#1 keeping sin16s::usinx#1
|
|
Inlining Noop Cast [128] (byte*~) memset::$4 ← (byte*)(void*) memset::str#3 keeping memset::str#3
|
|
Inlining Noop Cast [130] (byte*) memset::dst#0 ← (byte*)(void*) memset::str#3 keeping memset::str#3
|
|
Successful SSA optimization Pass2NopCastInlining
|
|
Inlining Noop Cast [71] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$7 keeping sin16s_gen2::$8
|
|
Inlining Noop Cast [160] (byte*) bitmap_plot::plotter#0 ← (byte*)(word~) bitmap_plot::$3 keeping bitmap_plot::plotter#0
|
|
Inlining Noop Cast [182] (signed word~) main::$28 ← (signed word)(word~) main::$6 keeping main::$28
|
|
Inlining Noop Cast [185] (word) main::x#0 ← (word)(signed word~) main::$8 keeping main::x#0
|
|
Inlining Noop Cast [195] (signed word~) main::$29 ← (signed word)(word~) main::$10 keeping main::$29
|
|
Inlining Noop Cast [198] (word) main::y#0 ← (word)(signed word~) main::$12 keeping main::y#0
|
|
Successful SSA optimization Pass2NopCastInlining
|
|
Rewriting multiplication to use shift [173] (word~) main::$26 ← (word) main::idx_x#11 * (const byte) SIZEOF_SIGNED_WORD
|
|
Rewriting multiplication to use shift [186] (word~) main::$27 ← (word) main::idx_y#3 * (const byte) SIZEOF_SIGNED_WORD
|
|
Rewriting division to use shift [213] (byte) main::r_add#1 ← (byte) main::r_add#10 / (byte) 2
|
|
Successful SSA optimization Pass2MultiplyToShiftRewriting
|
|
Inlining constant with var siblings (const word) divr16u::quotient#0
|
|
Inlining constant with var siblings (const byte) divr16u::i#0
|
|
Inlining constant with var siblings (const word) divr16u::rem#3
|
|
Inlining constant with var siblings (const word) divr16u::divisor#0
|
|
Inlining constant with var siblings (const word) divr16u::divisor#1
|
|
Inlining constant with var siblings (const word) divr16u::dividend#1
|
|
Inlining constant with var siblings (const word) divr16u::dividend#2
|
|
Inlining constant with var siblings (const dword) mul16u::res#0
|
|
Inlining constant with var siblings (const signed word) mul16s::b#0
|
|
Inlining constant with var siblings (const dword) sin16s_gen2::x#0
|
|
Inlining constant with var siblings (const word) sin16s_gen2::i#0
|
|
Inlining constant with var siblings (const signed word*) sin16s_gen2::sintab#1
|
|
Inlining constant with var siblings (const byte) sin16s::isUpper#0
|
|
Inlining constant with var siblings (const byte) sin16s::isUpper#1
|
|
Inlining constant with var siblings (const byte) mulu16_sel::select#0
|
|
Inlining constant with var siblings (const byte) mulu16_sel::select#1
|
|
Inlining constant with var siblings (const word) mulu16_sel::v2#2
|
|
Inlining constant with var siblings (const byte) mulu16_sel::select#2
|
|
Inlining constant with var siblings (const byte) mulu16_sel::select#3
|
|
Inlining constant with var siblings (const byte) mulu16_sel::select#4
|
|
Inlining constant with var siblings (const word) memset::num#0
|
|
Inlining constant with var siblings (const byte) memset::c#1
|
|
Inlining constant with var siblings (const word) memset::num#1
|
|
Inlining constant with var siblings (const void*) memset::str#0
|
|
Inlining constant with var siblings (const void*) memset::str#1
|
|
Inlining constant with var siblings (const byte) memset::c#0
|
|
Inlining constant with var siblings (const byte) bitmap_init::bits#0
|
|
Inlining constant with var siblings (const byte) bitmap_init::x#0
|
|
Inlining constant with var siblings (const byte) bitmap_init::bits#2
|
|
Inlining constant with var siblings (const byte) bitmap_init::y#0
|
|
Inlining constant with var siblings (const word) main::idx_x#0
|
|
Inlining constant with var siblings (const word) main::idx_y#0
|
|
Inlining constant with var siblings (const signed word) main::r#0
|
|
Inlining constant with var siblings (const byte) main::r_add#0
|
|
Inlining constant with var siblings (const word) main::idx_x#2
|
|
Inlining constant with var siblings (const word) main::idx_y#2
|
|
Constant inlined bitmap_init::screen#0 = (const byte*) SCREEN
|
|
Constant inlined divr16u::rem#3 = (byte) 0
|
|
Constant inlined bitmap_init::gfx#0 = (const byte*) BITMAP
|
|
Constant inlined sin16s_gen2::i#0 = (word) 0
|
|
Constant inlined sin16s::isUpper#0 = (byte) 0
|
|
Constant inlined memset::num#1 = (word) $1f40
|
|
Constant inlined memset::num#0 = (word) $3e8
|
|
Constant inlined mulu16_sel::select#4 = (byte) 0
|
|
Constant inlined mulu16_sel::select#2 = (byte) 1
|
|
Constant inlined mulu16_sel::select#3 = (byte) 0
|
|
Constant inlined mulu16_sel::select#0 = (byte) 0
|
|
Constant inlined sin16s::isUpper#1 = (byte) 1
|
|
Constant inlined mulu16_sel::select#1 = (byte) 1
|
|
Constant inlined main::idx_y#2 = (byte) 0
|
|
Constant inlined main::idx_y#0 = (word) $80
|
|
Constant inlined mul16s::b#0 = (const signed word) sin16s_gen2::ampl#0
|
|
Constant inlined main::toD0181_$7 = (word)(const byte*) SCREEN
|
|
Constant inlined main::toD0181_$2 = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4
|
|
Constant inlined main::toD0181_$1 = (word)(const byte*) SCREEN&(word) $3fff*(byte) 4
|
|
Constant inlined bitmap_gfx#1 = (const byte*) BITMAP
|
|
Constant inlined main::toD0181_$0 = (word)(const byte*) SCREEN&(word) $3fff
|
|
Constant inlined main::toD0181_$5 = >(word)(const byte*) BITMAP/(byte) 4&(byte) $f
|
|
Constant inlined main::toD0181_$4 = >(word)(const byte*) BITMAP/(byte) 4
|
|
Constant inlined main::toD0181_$3 = >(word)(const byte*) BITMAP
|
|
Constant inlined sin16s_gen2::sintab#1 = (const signed word*) SINUS
|
|
Constant inlined memset::c#0 = (const byte) bitmap_clear::col#0
|
|
Constant inlined bitmap_init::x#0 = (byte) 0
|
|
Constant inlined memset::c#1 = (byte) 0
|
|
Constant inlined main::toD0181_screen#0 = (const byte*) SCREEN
|
|
Constant inlined main::toD0181_gfx#0 = (const byte*) BITMAP
|
|
Constant inlined divr16u::i#0 = (byte) 0
|
|
Constant inlined div32u16u::dividend#0 = (const nomodify dword) PI2_u4f28
|
|
Constant inlined bitmap_init::bits#0 = (byte) $80
|
|
Constant inlined main::r_add#0 = (byte) $20
|
|
Constant inlined bitmap_init::bits#2 = (byte) $80
|
|
Constant inlined divr16u::quotient#0 = (word) 0
|
|
Constant inlined sin16s_gen2::x#0 = (dword) 0
|
|
Constant inlined mul16u::res#0 = (dword) 0
|
|
Constant inlined main::idx_x#2 = (byte) 0
|
|
Constant inlined divr16u::divisor#1 = (const word) sin16s_gen2::wavelength#0
|
|
Constant inlined divr16u::divisor#0 = (const word) sin16s_gen2::wavelength#0
|
|
Constant inlined main::idx_x#0 = (word) 0
|
|
Constant inlined main::r#0 = (signed word) 0
|
|
Constant inlined memset::str#1 = (void*)(const byte*) BITMAP
|
|
Constant inlined memset::str#0 = (void*)(const byte*) SCREEN
|
|
Constant inlined bitmap_clear::fgcol#0 = (const nomodify byte) WHITE
|
|
Constant inlined divr16u::dividend#1 = >(const nomodify dword) PI2_u4f28
|
|
Constant inlined divr16u::dividend#2 = <(const nomodify dword) PI2_u4f28
|
|
Constant inlined bitmap_screen#1 = (const byte*) SCREEN
|
|
Constant inlined mulu16_sel::v2#2 = (word)(number) $10000/(number) 6
|
|
Constant inlined bitmap_init::y#0 = (byte) 0
|
|
Constant inlined div32u16u::divisor#0 = (const word) sin16s_gen2::wavelength#0
|
|
Successful SSA optimization Pass2ConstantInlining
|
|
Identical Phi Values (word) divr16u::divisor#6 (const word) sin16s_gen2::wavelength#0
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Added new block during phi lifting divr16u::@7(between divr16u::@3 and divr16u::@1)
|
|
Added new block during phi lifting divr16u::@8(between divr16u::@1 and divr16u::@2)
|
|
Added new block during phi lifting divr16u::@9(between divr16u::@2 and divr16u::@3)
|
|
Added new block during phi lifting mul16u::@6(between mul16u::@2 and mul16u::@4)
|
|
Added new block during phi lifting mul16s::@6(between mul16s::@5 and mul16s::@1)
|
|
Added new block during phi lifting mul16s::@7(between mul16s::@1 and mul16s::@2)
|
|
Added new block during phi lifting sin16s::@12(between sin16s and sin16s::@1)
|
|
Fixing phi predecessor for sin16s::isUpper#2 to new block ( sin16s -> sin16s::@12 ) during phi lifting.
|
|
Added new block during phi lifting sin16s::@13(between sin16s::@1 and sin16s::@2)
|
|
Added new block during phi lifting sin16s::@14(between sin16s::@11 and sin16s::@3)
|
|
Added new block during phi lifting bitmap_init::@8(between bitmap_init::@2 and bitmap_init::@1)
|
|
Added new block during phi lifting bitmap_init::@9(between bitmap_init::@1 and bitmap_init::@2)
|
|
Added new block during phi lifting bitmap_init::@10(between bitmap_init::@6 and bitmap_init::@5)
|
|
Added new block during phi lifting bitmap_init::@11(between bitmap_init::@5 and bitmap_init::@6)
|
|
Added new block during phi lifting main::@20(between main::@5 and main::@1)
|
|
Added new block during phi lifting main::@21(between main::@18 and main::@3)
|
|
Added new block during phi lifting main::@22(between main::@3 and main::@4)
|
|
Added new block during phi lifting main::@23(between main::@4 and main::@5)
|
|
Adding NOP phi() at start of @begin
|
|
Adding NOP phi() at start of @1
|
|
Adding NOP phi() at start of @2
|
|
Adding NOP phi() at start of @4
|
|
Adding NOP phi() at start of @5
|
|
Adding NOP phi() at start of @end
|
|
Adding NOP phi() at start of main
|
|
Adding NOP phi() at start of main::@12
|
|
Adding NOP phi() at start of main::@13
|
|
Adding NOP phi() at start of main::toD0181
|
|
Adding NOP phi() at start of main::toD0181_@return
|
|
Adding NOP phi() at start of main::@15
|
|
Adding NOP phi() at start of main::@6
|
|
Adding NOP phi() at start of main::@7
|
|
Adding NOP phi() at start of main::@9
|
|
Adding NOP phi() at start of mul16u::@3
|
|
Adding NOP phi() at start of bitmap_clear
|
|
Adding NOP phi() at start of bitmap_clear::@1
|
|
Adding NOP phi() at start of bitmap_clear::@2
|
|
Adding NOP phi() at start of memset::@1
|
|
Adding NOP phi() at start of bitmap_init
|
|
Adding NOP phi() at start of bitmap_init::@3
|
|
Adding NOP phi() at start of bitmap_init::@4
|
|
Adding NOP phi() at start of sin16s_gen2
|
|
Adding NOP phi() at start of div32u16u
|
|
CALL GRAPH
|
|
Calls in [] to main:5
|
|
Calls in [main] to sin16s_gen2:9 bitmap_init:11 bitmap_clear:13 init_irq:18 mul16s:28 mul16s:41 bitmap_plot:49
|
|
Calls in [mul16s] to mul16u:86
|
|
Calls in [bitmap_clear] to memset:135 memset:137
|
|
Calls in [sin16s_gen2] to div32u16u:182 sin16s:189 mul16s:193
|
|
Calls in [sin16s] to mulu16_sel:218 mulu16_sel:225 mulu16_sel:230 mulu16_sel:238 mulu16_sel:245
|
|
Calls in [mulu16_sel] to mul16u:263
|
|
Calls in [div32u16u] to divr16u:270 divr16u:275
|
|
|
|
Created 46 initial phi equivalence classes
|
|
Coalesced [26] mul16s::a#9 ← mul16s::a#1
|
|
Coalesced [27] mul16s::b#8 ← mul16s::b#1
|
|
Coalesced [39] mul16s::a#8 ← mul16s::a#2
|
|
Coalesced [40] mul16s::b#7 ← mul16s::b#2
|
|
Coalesced [63] main::r_add#15 ← main::r_add#1
|
|
Coalesced [66] main::idx_x#13 ← main::idx_x#10
|
|
Coalesced [67] main::r#13 ← main::r#1
|
|
Coalesced [68] main::idx_y#13 ← main::idx_y#10
|
|
Coalesced [69] main::r_add#13 ← main::r_add#12
|
|
Coalesced (already) [72] main::r_add#14 ← main::r_add#10
|
|
Coalesced [73] main::idx_y#14 ← main::idx_y#1
|
|
Coalesced [74] main::idx_x#14 ← main::idx_x#1
|
|
Coalesced [84] mul16u::b#3 ← mul16u::b#0
|
|
Coalesced [85] mul16u::a#8 ← mul16u::a#1
|
|
Coalesced [93] mul16s::m#7 ← mul16s::m#1
|
|
Coalesced [99] mul16s::m#10 ← mul16s::m#2
|
|
Coalesced [103] mul16s::m#9 ← mul16s::m#5
|
|
Coalesced [104] mul16s::m#8 ← mul16s::m#0
|
|
Coalesced [107] mul16u::a#10 ← mul16u::a#6
|
|
Coalesced [108] mul16u::mb#6 ← mul16u::mb#0
|
|
Coalesced [116] mul16u::res#9 ← mul16u::res#1
|
|
Coalesced [120] mul16u::a#11 ← mul16u::a#0
|
|
Coalesced [121] mul16u::res#7 ← mul16u::res#6
|
|
Coalesced [122] mul16u::mb#7 ← mul16u::mb#1
|
|
Coalesced (already) [123] mul16u::res#8 ← mul16u::res#2
|
|
Coalesced [150] memset::dst#5 ← memset::dst#1
|
|
Coalesced [170] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1
|
|
Coalesced [175] bitmap_init::y#5 ← bitmap_init::y#1
|
|
Coalesced [176] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4
|
|
Coalesced (already) [177] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2
|
|
Coalesced [178] bitmap_init::bits#5 ← bitmap_init::bits#4
|
|
Coalesced [179] bitmap_init::x#5 ← bitmap_init::x#1
|
|
Coalesced [180] bitmap_init::bits#6 ← bitmap_init::bits#1
|
|
Coalesced [192] mul16s::a#10 ← mul16s::a#0
|
|
Coalesced [201] sin16s_gen2::i#6 ← sin16s_gen2::i#1
|
|
Coalesced [202] sin16s_gen2::x#6 ← sin16s_gen2::x#1
|
|
Coalesced [203] sin16s_gen2::sintab#8 ← sin16s_gen2::sintab#0
|
|
Coalesced [206] sin16s::x#9 ← sin16s::x#1
|
|
Coalesced [210] sin16s::x#11 ← sin16s::x#2
|
|
Coalesced [216] mulu16_sel::v1#7 ← mulu16_sel::v1#0
|
|
Coalesced [217] mulu16_sel::v2#7 ← mulu16_sel::v2#0
|
|
Coalesced [223] mulu16_sel::v1#8 ← mulu16_sel::v1#1
|
|
Coalesced [224] mulu16_sel::v2#8 ← mulu16_sel::v2#1
|
|
Coalesced [229] mulu16_sel::v1#9 ← mulu16_sel::v1#2
|
|
Coalesced [236] mulu16_sel::v1#10 ← mulu16_sel::v1#3
|
|
Coalesced [237] mulu16_sel::v2#9 ← mulu16_sel::v2#3
|
|
Coalesced [243] mulu16_sel::v1#6 ← mulu16_sel::v1#4
|
|
Coalesced [244] mulu16_sel::v2#6 ← mulu16_sel::v2#4
|
|
Coalesced [252] sin16s::return#6 ← sin16s::sinx#1
|
|
Coalesced [256] sin16s::x#10 ← sin16s::x#4
|
|
Coalesced [257] sin16s::x#8 ← sin16s::x#0
|
|
Coalesced [261] mul16u::b#4 ← mul16u::b#1
|
|
Coalesced [262] mul16u::a#9 ← mul16u::a#2
|
|
Coalesced [274] divr16u::rem#12 ← divr16u::rem#4
|
|
Coalesced [281] divr16u::rem#13 ← divr16u::rem#10
|
|
Coalesced [282] divr16u::dividend#9 ← divr16u::dividend#5
|
|
Coalesced [289] divr16u::rem#16 ← divr16u::rem#1
|
|
Coalesced [296] divr16u::rem#18 ← divr16u::rem#2
|
|
Coalesced [297] divr16u::return#8 ← divr16u::quotient#2
|
|
Coalesced [303] divr16u::rem#14 ← divr16u::rem#11
|
|
Coalesced [304] divr16u::dividend#10 ← divr16u::dividend#0
|
|
Coalesced [305] divr16u::quotient#9 ← divr16u::return#0
|
|
Coalesced [306] divr16u::i#7 ← divr16u::i#1
|
|
Coalesced [307] divr16u::rem#17 ← divr16u::rem#6
|
|
Coalesced [308] divr16u::return#7 ← divr16u::quotient#1
|
|
Coalesced [309] divr16u::rem#15 ← divr16u::rem#0
|
|
Coalesced down to 32 phi equivalence classes
|
|
Culled Empty Block (label) @1
|
|
Culled Empty Block (label) @2
|
|
Culled Empty Block (label) @5
|
|
Culled Empty Block (label) main::toD0181_@return
|
|
Culled Empty Block (label) main::@15
|
|
Culled Empty Block (label) main::@6
|
|
Culled Empty Block (label) main::@7
|
|
Culled Empty Block (label) main::@20
|
|
Culled Empty Block (label) main::@9
|
|
Culled Empty Block (label) main::@23
|
|
Culled Empty Block (label) mul16s::@7
|
|
Culled Empty Block (label) mul16s::@6
|
|
Culled Empty Block (label) mul16u::@3
|
|
Culled Empty Block (label) mul16u::@6
|
|
Culled Empty Block (label) bitmap_clear::@2
|
|
Culled Empty Block (label) memset::@1
|
|
Culled Empty Block (label) bitmap_init::@3
|
|
Culled Empty Block (label) bitmap_init::@4
|
|
Culled Empty Block (label) bitmap_init::@10
|
|
Culled Empty Block (label) bitmap_init::@11
|
|
Culled Empty Block (label) bitmap_init::@8
|
|
Culled Empty Block (label) sin16s::@13
|
|
Culled Empty Block (label) sin16s::@12
|
|
Culled Empty Block (label) divr16u::@7
|
|
Culled Empty Block (label) divr16u::@9
|
|
Culled Empty Block (label) divr16u::@8
|
|
Renumbering block @3 to @1
|
|
Renumbering block @4 to @2
|
|
Renumbering block mul16u::@4 to mul16u::@3
|
|
Renumbering block mul16u::@5 to mul16u::@4
|
|
Renumbering block sin16s::@14 to sin16s::@12
|
|
Renumbering block memset::@2 to memset::@1
|
|
Renumbering block memset::@3 to memset::@2
|
|
Renumbering block memset::@4 to memset::@3
|
|
Renumbering block bitmap_init::@5 to bitmap_init::@3
|
|
Renumbering block bitmap_init::@6 to bitmap_init::@4
|
|
Renumbering block bitmap_init::@7 to bitmap_init::@5
|
|
Renumbering block bitmap_init::@9 to bitmap_init::@6
|
|
Renumbering block main::@8 to main::@6
|
|
Renumbering block main::@10 to main::@7
|
|
Renumbering block main::@11 to main::@8
|
|
Renumbering block main::@12 to main::@9
|
|
Renumbering block main::@13 to main::@10
|
|
Renumbering block main::@14 to main::@11
|
|
Renumbering block main::@16 to main::@12
|
|
Renumbering block main::@17 to main::@13
|
|
Renumbering block main::@18 to main::@14
|
|
Renumbering block main::@19 to main::@15
|
|
Renumbering block main::@21 to main::@16
|
|
Renumbering block main::@22 to main::@17
|
|
Adding NOP phi() at start of @begin
|
|
Adding NOP phi() at start of @2
|
|
Adding NOP phi() at start of @end
|
|
Adding NOP phi() at start of main
|
|
Adding NOP phi() at start of main::@9
|
|
Adding NOP phi() at start of main::@10
|
|
Adding NOP phi() at start of main::toD0181
|
|
Adding NOP phi() at start of main::@16
|
|
Adding NOP phi() at start of main::@17
|
|
Adding NOP phi() at start of bitmap_clear
|
|
Adding NOP phi() at start of bitmap_clear::@1
|
|
Adding NOP phi() at start of bitmap_init
|
|
Adding NOP phi() at start of bitmap_init::@6
|
|
Adding NOP phi() at start of sin16s_gen2
|
|
Adding NOP phi() at start of div32u16u
|
|
|
|
FINAL CONTROL FLOW GRAPH
|
|
@begin: scope:[] from
|
|
[0] phi()
|
|
to:@1
|
|
@1: scope:[] from @begin
|
|
[1] (volatile byte) frame_cnt ← (byte) 1
|
|
to:@2
|
|
@2: scope:[] from @1
|
|
[2] phi()
|
|
[3] call main
|
|
to:@end
|
|
@end: scope:[] from @2
|
|
[4] phi()
|
|
|
|
(void()) main()
|
|
main: scope:[main] from @2
|
|
[5] phi()
|
|
[6] call sin16s_gen2
|
|
to:main::@9
|
|
main::@9: scope:[main] from main
|
|
[7] phi()
|
|
[8] call bitmap_init
|
|
to:main::@10
|
|
main::@10: scope:[main] from main::@9
|
|
[9] phi()
|
|
[10] call bitmap_clear
|
|
to:main::@11
|
|
main::@11: scope:[main] from main::@10
|
|
[11] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3
|
|
to:main::toD0181
|
|
main::toD0181: scope:[main] from main::@11
|
|
[12] phi()
|
|
to:main::@8
|
|
main::@8: scope:[main] from main::toD0181
|
|
[13] *((const nomodify byte*) D018) ← (const byte) main::toD0181_return#0
|
|
[14] call init_irq
|
|
to:main::@1
|
|
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/(word) $80 main::@5/(word) main::idx_y#10 )
|
|
[15] (signed word) main::r#10 ← phi( main::@8/(signed word) 0 main::@5/(signed word) main::r#1 )
|
|
[15] (word) main::idx_x#11 ← phi( main::@8/(word) 0 main::@5/(word) main::idx_x#10 )
|
|
to:main::@2
|
|
main::@2: scope:[main] from main::@1
|
|
[16] (word~) main::$26 ← (word) main::idx_x#11 << (byte) 1
|
|
[17] (signed word*~) main::$30 ← (const signed word*) SINUS + (word~) main::$26
|
|
[18] (signed word) main::cos_x#0 ← *((signed word*~) main::$30)
|
|
[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::@12
|
|
main::@12: scope:[main] from main::@2
|
|
[23] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3
|
|
[24] (word~) main::$28 ← > (signed dword) main::xpos#0
|
|
[25] (signed word~) main::$7 ← (signed word)(word~) main::$28 >> (signed byte) 2
|
|
[26] (signed word) main::x#0 ← (signed word) $a0 + (signed word~) main::$7
|
|
[27] (word~) main::$27 ← (word) main::idx_y#3 << (byte) 1
|
|
[28] (signed word*~) main::$31 ← (const signed word*) SINUS + (word~) main::$27
|
|
[29] (signed word) main::sin_y#0 ← *((signed word*~) main::$31)
|
|
[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::@13
|
|
main::@13: scope:[main] from main::@12
|
|
[34] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4
|
|
[35] (word~) main::$29 ← > (signed dword) main::ypos#0
|
|
[36] (signed word~) main::$11 ← (signed word)(word~) main::$29 >> (signed byte) 2
|
|
[37] (signed word) main::y#0 ← (signed byte) $64 + (signed word~) main::$11
|
|
[38] (word) bitmap_plot::x#0 ← (word)(signed word) main::x#0
|
|
[39] (byte) bitmap_plot::y#0 ← (byte)(word)(signed word) main::y#0
|
|
[40] call bitmap_plot
|
|
to:main::@14
|
|
main::@14: scope:[main] from main::@13
|
|
[41] *((const byte*) plots_per_frame + (volatile byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (volatile byte) frame_cnt)
|
|
[42] (word) main::idx_x#1 ← (word) main::idx_x#11 + (byte) main::r_add#10
|
|
[43] if((word) main::idx_x#1<(word) $200) goto main::@16
|
|
to:main::@3
|
|
main::@16: scope:[main] from main::@14
|
|
[44] phi()
|
|
to:main::@3
|
|
main::@3: scope:[main] from main::@14 main::@16
|
|
[45] (word) main::idx_x#10 ← phi( main::@16/(word) main::idx_x#1 main::@14/(byte) 0 )
|
|
[46] (word) main::idx_y#1 ← (word) main::idx_y#3 + (byte) main::r_add#10
|
|
[47] if((word) main::idx_y#1<(word) $200) goto main::@17
|
|
to:main::@4
|
|
main::@17: scope:[main] from main::@3
|
|
[48] phi()
|
|
to:main::@4
|
|
main::@4: scope:[main] from main::@17 main::@3
|
|
[49] (word) main::idx_y#10 ← phi( main::@17/(word) main::idx_y#1 main::@3/(byte) 0 )
|
|
[50] (signed word) main::r#1 ← (signed word) main::r#10 + (byte) main::r_add#10
|
|
[51] if((word) main::idx_x#10!=(byte) 0) goto main::@5
|
|
to:main::@15
|
|
main::@15: scope:[main] from main::@4
|
|
[52] if((byte) main::r_add#10==(byte) 1) goto main::@5
|
|
to:main::@6
|
|
main::@6: scope:[main] from main::@15
|
|
[53] (byte) main::r_add#1 ← (byte) main::r_add#10 >> (byte) 1
|
|
to:main::@5
|
|
main::@5: scope:[main] from main::@15 main::@4 main::@6
|
|
[54] (byte) main::r_add#12 ← phi( main::@4/(byte) main::r_add#10 main::@6/(byte) main::r_add#1 )
|
|
[55] 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
|
|
[56] *((const nomodify byte*) BORDER_COLOR) ← ++ *((const nomodify byte*) BORDER_COLOR)
|
|
to:main::@7
|
|
|
|
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
|
bitmap_plot: scope:[bitmap_plot] from main::@13
|
|
[57] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0)
|
|
[58] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8
|
|
[59] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0
|
|
[60] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#0
|
|
[61] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1)
|
|
to:bitmap_plot::@return
|
|
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
|
[62] return
|
|
to:@return
|
|
|
|
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
|
mul16s: scope:[mul16s] from main::@12 main::@2 sin16s_gen2::@4
|
|
[63] (signed word) mul16s::b#3 ← phi( main::@12/(signed word) mul16s::b#2 main::@2/(signed word) mul16s::b#1 sin16s_gen2::@4/(const signed word) sin16s_gen2::ampl#0 )
|
|
[63] (signed word) mul16s::a#3 ← phi( main::@12/(signed word) mul16s::a#2 main::@2/(signed word) mul16s::a#1 sin16s_gen2::@4/(signed word) mul16s::a#0 )
|
|
[64] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3
|
|
[65] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3
|
|
[66] call mul16u
|
|
[67] (dword) mul16u::return#2 ← (dword) mul16u::res#2
|
|
to:mul16s::@5
|
|
mul16s::@5: scope:[mul16s] from mul16s
|
|
[68] (dword) mul16s::m#0 ← (dword) mul16u::return#2
|
|
[69] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1
|
|
to:mul16s::@3
|
|
mul16s::@3: scope:[mul16s] from mul16s::@5
|
|
[70] (word~) mul16s::$6 ← > (dword) mul16s::m#0
|
|
[71] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#3
|
|
[72] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11
|
|
to:mul16s::@1
|
|
mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@5
|
|
[73] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@5/(dword) mul16s::m#0 )
|
|
[74] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2
|
|
to:mul16s::@4
|
|
mul16s::@4: scope:[mul16s] from mul16s::@1
|
|
[75] (word~) mul16s::$9 ← > (dword) mul16s::m#5
|
|
[76] (word~) mul16s::$12 ← (word~) mul16s::$9 - (word)(signed word) mul16s::a#3
|
|
[77] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$12
|
|
to:mul16s::@2
|
|
mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4
|
|
[78] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 )
|
|
[79] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4
|
|
to:mul16s::@return
|
|
mul16s::@return: scope:[mul16s] from mul16s::@2
|
|
[80] return
|
|
to:@return
|
|
|
|
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
|
|
mul16u: scope:[mul16u] from mul16s mulu16_sel
|
|
[81] (word) mul16u::a#6 ← phi( mul16s/(word) mul16u::a#1 mulu16_sel/(word) mul16u::a#2 )
|
|
[81] (word) mul16u::b#2 ← phi( mul16s/(word) mul16u::b#0 mulu16_sel/(word) mul16u::b#1 )
|
|
[82] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2
|
|
to:mul16u::@1
|
|
mul16u::@1: scope:[mul16u] from mul16u mul16u::@3
|
|
[83] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 )
|
|
[83] (dword) mul16u::res#2 ← phi( mul16u/(dword) 0 mul16u::@3/(dword) mul16u::res#6 )
|
|
[83] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 )
|
|
[84] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2
|
|
to:mul16u::@return
|
|
mul16u::@return: scope:[mul16u] from mul16u::@1
|
|
[85] return
|
|
to:@return
|
|
mul16u::@2: scope:[mul16u] from mul16u::@1
|
|
[86] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1
|
|
[87] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3
|
|
to:mul16u::@4
|
|
mul16u::@4: scope:[mul16u] from mul16u::@2
|
|
[88] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
|
to:mul16u::@3
|
|
mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4
|
|
[89] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
|
|
[90] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1
|
|
[91] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1
|
|
to:mul16u::@1
|
|
|
|
(void()) init_irq()
|
|
init_irq: scope:[init_irq] from main::@8
|
|
asm { sei }
|
|
[93] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK
|
|
[94] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO
|
|
[95] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR
|
|
[96] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) | (byte) $80
|
|
[97] *((const nomodify byte*) RASTER) ← (byte) 0
|
|
[98] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER
|
|
[99] *((const nomodify void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq()
|
|
asm { cli }
|
|
to:init_irq::@return
|
|
init_irq::@return: scope:[init_irq] from init_irq
|
|
[101] return
|
|
to:@return
|
|
|
|
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
|
|
bitmap_clear: scope:[bitmap_clear] from main::@10
|
|
[102] phi()
|
|
[103] call memset
|
|
to:bitmap_clear::@1
|
|
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear
|
|
[104] phi()
|
|
[105] call memset
|
|
to:bitmap_clear::@return
|
|
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1
|
|
[106] return
|
|
to:@return
|
|
|
|
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
|
memset: scope:[memset] from bitmap_clear bitmap_clear::@1
|
|
[107] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 )
|
|
[107] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const byte*) SCREEN bitmap_clear::@1/(void*)(const byte*) BITMAP )
|
|
[107] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 )
|
|
[108] if((word) memset::num#2<=(byte) 0) goto memset::@return
|
|
to:memset::@1
|
|
memset::@1: scope:[memset] from memset
|
|
[109] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2
|
|
[110] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
|
|
to:memset::@2
|
|
memset::@2: scope:[memset] from memset::@1 memset::@3
|
|
[111] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
|
|
[112] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
|
|
to:memset::@return
|
|
memset::@return: scope:[memset] from memset memset::@2
|
|
[113] return
|
|
to:@return
|
|
memset::@3: scope:[memset] from memset::@2
|
|
[114] *((byte*) memset::dst#2) ← (byte) memset::c#4
|
|
[115] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
|
|
to:memset::@2
|
|
|
|
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
|
|
bitmap_init: scope:[bitmap_init] from main::@9
|
|
[116] phi()
|
|
to:bitmap_init::@1
|
|
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
|
|
[117] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
|
|
[117] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 )
|
|
[118] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
|
|
[119] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1
|
|
[120] 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
|
|
[121] phi()
|
|
to:bitmap_init::@2
|
|
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6
|
|
[122] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 )
|
|
[123] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
|
|
[124] 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
|
|
[125] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP bitmap_init::@4/(byte*) bitmap_init::yoffs#4 )
|
|
[125] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 )
|
|
[126] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
|
|
[127] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
|
|
[128] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4
|
|
[129] *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
|
|
[130] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
|
|
[131] *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
|
|
[132] 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
|
|
[133] (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
|
|
[134] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 )
|
|
[135] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
|
|
[136] 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
|
|
[137] return
|
|
to:@return
|
|
|
|
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
|
|
sin16s_gen2: scope:[sin16s_gen2] from main
|
|
[138] phi()
|
|
[139] call div32u16u
|
|
[140] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
|
|
to:sin16s_gen2::@3
|
|
sin16s_gen2::@3: scope:[sin16s_gen2] from sin16s_gen2
|
|
[141] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2
|
|
to:sin16s_gen2::@1
|
|
sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2::@3 sin16s_gen2::@5
|
|
[142] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@3/(const signed word*) SINUS sin16s_gen2::@5/(signed word*) sin16s_gen2::sintab#0 )
|
|
[142] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@3/(dword) 0 sin16s_gen2::@5/(dword) sin16s_gen2::x#1 )
|
|
[142] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@3/(word) 0 sin16s_gen2::@5/(word) sin16s_gen2::i#1 )
|
|
[143] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2
|
|
to:sin16s_gen2::@return
|
|
sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@1
|
|
[144] return
|
|
to:@return
|
|
sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2::@1
|
|
[145] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2
|
|
[146] call sin16s
|
|
[147] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
|
|
to:sin16s_gen2::@4
|
|
sin16s_gen2::@4: scope:[sin16s_gen2] from sin16s_gen2::@2
|
|
[148] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0
|
|
[149] call mul16s
|
|
[150] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
|
|
to:sin16s_gen2::@5
|
|
sin16s_gen2::@5: scope:[sin16s_gen2] from sin16s_gen2::@4
|
|
[151] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2
|
|
[152] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$6
|
|
[153] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8
|
|
[154] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
|
|
[155] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0
|
|
[156] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2
|
|
to:sin16s_gen2::@1
|
|
|
|
(signed word()) sin16s((dword) sin16s::x)
|
|
sin16s: scope:[sin16s] from sin16s_gen2::@2
|
|
[157] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1
|
|
to:sin16s::@4
|
|
sin16s::@4: scope:[sin16s] from sin16s
|
|
[158] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28
|
|
to:sin16s::@1
|
|
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
|
|
[159] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte) 0 sin16s::@4/(byte) 1 )
|
|
[159] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
|
|
[160] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2
|
|
to:sin16s::@5
|
|
sin16s::@5: scope:[sin16s] from sin16s::@1
|
|
[161] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4
|
|
to:sin16s::@2
|
|
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
|
|
[162] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
|
|
[163] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3
|
|
[164] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
|
|
[165] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
|
|
[166] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
|
|
[167] call mulu16_sel
|
|
[168] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
|
to:sin16s::@7
|
|
sin16s::@7: scope:[sin16s] from sin16s::@2
|
|
[169] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
|
|
[170] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
|
[171] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
|
|
[172] call mulu16_sel
|
|
[173] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
|
|
to:sin16s::@8
|
|
sin16s::@8: scope:[sin16s] from sin16s::@7
|
|
[174] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
|
[175] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
|
[176] call mulu16_sel
|
|
[177] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
|
to:sin16s::@9
|
|
sin16s::@9: scope:[sin16s] from sin16s::@8
|
|
[178] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
|
[179] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
|
|
[180] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
|
[181] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
|
|
[182] call mulu16_sel
|
|
[183] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
|
|
to:sin16s::@10
|
|
sin16s::@10: scope:[sin16s] from sin16s::@9
|
|
[184] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
|
[185] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
|
[186] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
|
|
[187] call mulu16_sel
|
|
[188] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
|
to:sin16s::@11
|
|
sin16s::@11: scope:[sin16s] from sin16s::@10
|
|
[189] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
|
[190] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4
|
|
[191] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
|
|
[192] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12
|
|
to:sin16s::@6
|
|
sin16s::@6: scope:[sin16s] from sin16s::@11
|
|
[193] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
|
|
to:sin16s::@3
|
|
sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6
|
|
[194] (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
|
|
[195] return
|
|
to:@return
|
|
sin16s::@12: scope:[sin16s] from sin16s::@11
|
|
[196] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
|
to:sin16s::@3
|
|
|
|
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
|
|
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9
|
|
[197] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte) 0 sin16s::@2/(byte) 0 sin16s::@7/(byte) 1 sin16s::@8/(byte) 1 sin16s::@9/(byte) 0 )
|
|
[197] (word) mulu16_sel::v2#5 ← phi( 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 sin16s::@9/(word) mulu16_sel::v2#3 )
|
|
[197] (word) mulu16_sel::v1#5 ← phi( 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 sin16s::@9/(word) mulu16_sel::v1#3 )
|
|
[198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
|
[199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
|
[200] call mul16u
|
|
[201] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
|
to:mulu16_sel::@1
|
|
mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel
|
|
[202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
|
[203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
|
|
[204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
|
|
to:mulu16_sel::@return
|
|
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1
|
|
[205] return
|
|
to:@return
|
|
|
|
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
|
|
div32u16u: scope:[div32u16u] from sin16s_gen2
|
|
[206] phi()
|
|
[207] call divr16u
|
|
[208] (word) divr16u::return#2 ← (word) divr16u::return#0
|
|
to:div32u16u::@1
|
|
div32u16u::@1: scope:[div32u16u] from div32u16u
|
|
[209] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
|
|
[210] (word) divr16u::rem#4 ← (word) rem16u#1
|
|
[211] call divr16u
|
|
[212] (word) divr16u::return#3 ← (word) divr16u::return#0
|
|
to:div32u16u::@2
|
|
div32u16u::@2: scope:[div32u16u] from div32u16u::@1
|
|
[213] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
|
[214] (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
|
|
[215] return
|
|
to:@return
|
|
|
|
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
|
divr16u: scope:[divr16u] from div32u16u div32u16u::@1
|
|
[216] (word) divr16u::dividend#5 ← phi( div32u16u/>(const nomodify dword) PI2_u4f28 div32u16u::@1/<(const nomodify dword) PI2_u4f28 )
|
|
[216] (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
|
|
[217] (byte) divr16u::i#2 ← phi( divr16u/(byte) 0 divr16u::@3/(byte) divr16u::i#1 )
|
|
[217] (word) divr16u::quotient#3 ← phi( divr16u/(word) 0 divr16u::@3/(word) divr16u::return#0 )
|
|
[217] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
|
[217] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
|
[218] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1
|
|
[219] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
|
[220] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
|
|
[221] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
|
|
to:divr16u::@4
|
|
divr16u::@4: scope:[divr16u] from divr16u::@1
|
|
[222] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1
|
|
to:divr16u::@2
|
|
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
|
[223] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
|
[224] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1
|
|
[225] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1
|
|
[226] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3
|
|
to:divr16u::@5
|
|
divr16u::@5: scope:[divr16u] from divr16u::@2
|
|
[227] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
|
[228] (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
|
|
[229] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
|
[229] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
|
[230] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
|
[231] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1
|
|
to:divr16u::@6
|
|
divr16u::@6: scope:[divr16u] from divr16u::@3
|
|
[232] (word) rem16u#1 ← (word) divr16u::rem#11
|
|
to:divr16u::@return
|
|
divr16u::@return: scope:[divr16u] from divr16u::@6
|
|
[233] return
|
|
to:@return
|
|
|
|
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
|
irq: scope:[irq] from
|
|
[234] *((const nomodify byte*) BG_COLOR) ← (const nomodify byte) WHITE
|
|
[235] if((byte) 0==(volatile byte) frame_cnt) goto irq::@1
|
|
to:irq::@2
|
|
irq::@2: scope:[irq] from irq
|
|
[236] (volatile byte) frame_cnt ← ++ (volatile byte) frame_cnt
|
|
to:irq::@1
|
|
irq::@1: scope:[irq] from irq irq::@2
|
|
[237] *((const nomodify byte*) BG_COLOR) ← (const nomodify byte) BLACK
|
|
[238] *((const nomodify byte*) IRQ_STATUS) ← (const nomodify byte) IRQ_RASTER
|
|
to:irq::@return
|
|
irq::@return: scope:[irq] from irq::@1
|
|
[239] return
|
|
to:@return
|
|
|
|
|
|
VARIABLE REGISTER WEIGHTS
|
|
(byte) MOS6526_CIA::INTERRUPT
|
|
(byte) MOS6526_CIA::PORT_A
|
|
(byte) MOS6526_CIA::PORT_A_DDR
|
|
(byte) MOS6526_CIA::PORT_B
|
|
(byte) MOS6526_CIA::PORT_B_DDR
|
|
(byte) MOS6526_CIA::SERIAL_DATA
|
|
(word) MOS6526_CIA::TIMER_A
|
|
(byte) MOS6526_CIA::TIMER_A_CONTROL
|
|
(word) MOS6526_CIA::TIMER_B
|
|
(byte) MOS6526_CIA::TIMER_B_CONTROL
|
|
(byte) MOS6526_CIA::TOD_10THS
|
|
(byte) MOS6526_CIA::TOD_HOURS
|
|
(byte) MOS6526_CIA::TOD_MIN
|
|
(byte) MOS6526_CIA::TOD_SEC
|
|
(byte) MOS6569_VICII::BG_COLOR
|
|
(byte) MOS6569_VICII::BG_COLOR1
|
|
(byte) MOS6569_VICII::BG_COLOR2
|
|
(byte) MOS6569_VICII::BG_COLOR3
|
|
(byte) MOS6569_VICII::BORDER_COLOR
|
|
(byte) MOS6569_VICII::CONTROL1
|
|
(byte) MOS6569_VICII::CONTROL2
|
|
(byte) MOS6569_VICII::IRQ_ENABLE
|
|
(byte) MOS6569_VICII::IRQ_STATUS
|
|
(byte) MOS6569_VICII::LIGHTPEN_X
|
|
(byte) MOS6569_VICII::LIGHTPEN_Y
|
|
(byte) MOS6569_VICII::MEMORY
|
|
(byte) MOS6569_VICII::RASTER
|
|
(byte) MOS6569_VICII::SPRITE0_COLOR
|
|
(byte) MOS6569_VICII::SPRITE0_X
|
|
(byte) MOS6569_VICII::SPRITE0_Y
|
|
(byte) MOS6569_VICII::SPRITE1_COLOR
|
|
(byte) MOS6569_VICII::SPRITE1_X
|
|
(byte) MOS6569_VICII::SPRITE1_Y
|
|
(byte) MOS6569_VICII::SPRITE2_COLOR
|
|
(byte) MOS6569_VICII::SPRITE2_X
|
|
(byte) MOS6569_VICII::SPRITE2_Y
|
|
(byte) MOS6569_VICII::SPRITE3_COLOR
|
|
(byte) MOS6569_VICII::SPRITE3_X
|
|
(byte) MOS6569_VICII::SPRITE3_Y
|
|
(byte) MOS6569_VICII::SPRITE4_COLOR
|
|
(byte) MOS6569_VICII::SPRITE4_X
|
|
(byte) MOS6569_VICII::SPRITE4_Y
|
|
(byte) MOS6569_VICII::SPRITE5_COLOR
|
|
(byte) MOS6569_VICII::SPRITE5_X
|
|
(byte) MOS6569_VICII::SPRITE5_Y
|
|
(byte) MOS6569_VICII::SPRITE6_COLOR
|
|
(byte) MOS6569_VICII::SPRITE6_X
|
|
(byte) MOS6569_VICII::SPRITE6_Y
|
|
(byte) MOS6569_VICII::SPRITE7_COLOR
|
|
(byte) MOS6569_VICII::SPRITE7_X
|
|
(byte) MOS6569_VICII::SPRITE7_Y
|
|
(byte) MOS6569_VICII::SPRITES_BG_COLLISION
|
|
(byte) MOS6569_VICII::SPRITES_COLLISION
|
|
(byte) MOS6569_VICII::SPRITES_ENABLE
|
|
(byte) MOS6569_VICII::SPRITES_EXPAND_X
|
|
(byte) MOS6569_VICII::SPRITES_EXPAND_Y
|
|
(byte) MOS6569_VICII::SPRITES_MC
|
|
(byte) MOS6569_VICII::SPRITES_MCOLOR1
|
|
(byte) MOS6569_VICII::SPRITES_MCOLOR2
|
|
(byte) MOS6569_VICII::SPRITES_PRIORITY
|
|
(byte) MOS6569_VICII::SPRITES_XMSB
|
|
(byte) MOS6581_SID::CH1_ATTACK_DECAY
|
|
(byte) MOS6581_SID::CH1_CONTROL
|
|
(word) MOS6581_SID::CH1_FREQ
|
|
(word) MOS6581_SID::CH1_PULSE_WIDTH
|
|
(byte) MOS6581_SID::CH1_SUSTAIN_RELEASE
|
|
(byte) MOS6581_SID::CH2_ATTACK_DECAY
|
|
(byte) MOS6581_SID::CH2_CONTROL
|
|
(word) MOS6581_SID::CH2_FREQ
|
|
(word) MOS6581_SID::CH2_PULSE_WIDTH
|
|
(byte) MOS6581_SID::CH2_SUSTAIN_RELEASE
|
|
(byte) MOS6581_SID::CH3_ATTACK_DECAY
|
|
(byte) MOS6581_SID::CH3_CONTROL
|
|
(byte) MOS6581_SID::CH3_ENV
|
|
(word) MOS6581_SID::CH3_FREQ
|
|
(byte) MOS6581_SID::CH3_OSC
|
|
(word) MOS6581_SID::CH3_PULSE_WIDTH
|
|
(byte) MOS6581_SID::CH3_SUSTAIN_RELEASE
|
|
(byte) MOS6581_SID::FILTER_CUTOFF_HIGH
|
|
(byte) MOS6581_SID::FILTER_CUTOFF_LOW
|
|
(byte) MOS6581_SID::FILTER_SETUP
|
|
(byte) MOS6581_SID::POT_X
|
|
(byte) MOS6581_SID::POT_Y
|
|
(byte) MOS6581_SID::VOLUME_FILTER_MODE
|
|
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
|
|
(byte) bitmap_clear::bgcol
|
|
(byte) bitmap_clear::col
|
|
(byte) bitmap_clear::fgcol
|
|
(byte*) bitmap_gfx
|
|
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
|
|
(byte~) bitmap_init::$4 2002.0
|
|
(byte~) bitmap_init::$5 2002.0
|
|
(byte~) bitmap_init::$6 2002.0
|
|
(byte~) bitmap_init::$7 500.5
|
|
(byte) bitmap_init::bits
|
|
(byte) bitmap_init::bits#1 1001.0
|
|
(byte) bitmap_init::bits#3 1501.5
|
|
(byte) bitmap_init::bits#4 667.3333333333334
|
|
(byte*) bitmap_init::gfx
|
|
(byte*) bitmap_init::screen
|
|
(byte) bitmap_init::x
|
|
(byte) bitmap_init::x#1 1501.5
|
|
(byte) bitmap_init::x#2 500.5
|
|
(byte) bitmap_init::y
|
|
(byte) bitmap_init::y#1 1501.5
|
|
(byte) bitmap_init::y#2 500.5
|
|
(byte*) bitmap_init::yoffs
|
|
(byte*) bitmap_init::yoffs#1 2002.0
|
|
(byte*) bitmap_init::yoffs#2 625.625
|
|
(byte*) bitmap_init::yoffs#4 1001.0
|
|
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
|
(word~) bitmap_plot::$0 2002.0
|
|
(byte~) bitmap_plot::$1 2002.0
|
|
(byte*) bitmap_plot::plotter
|
|
(word) bitmap_plot::plotter#0 500.5
|
|
(byte*) bitmap_plot::plotter#1 1501.5
|
|
(word) bitmap_plot::x
|
|
(word) bitmap_plot::x#0 420.59999999999997
|
|
(byte) bitmap_plot::y
|
|
(byte) bitmap_plot::y#0 2103.0
|
|
(byte*) bitmap_screen
|
|
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
|
|
(dword) div32u16u::dividend
|
|
(word) div32u16u::divisor
|
|
(dword) div32u16u::quotient
|
|
(word) div32u16u::quotient_hi
|
|
(word) div32u16u::quotient_hi#0 400.4
|
|
(word) div32u16u::quotient_lo
|
|
(word) div32u16u::quotient_lo#0 2002.0
|
|
(dword) div32u16u::return
|
|
(dword) div32u16u::return#0 367.33333333333337
|
|
(dword) div32u16u::return#2 202.0
|
|
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
|
(byte~) divr16u::$1 200002.0
|
|
(byte~) divr16u::$2 200002.0
|
|
(word) divr16u::dividend
|
|
(word) divr16u::dividend#0 25000.25
|
|
(word) divr16u::dividend#3 44286.28571428572
|
|
(word) divr16u::dividend#5 10001.0
|
|
(word) divr16u::divisor
|
|
(byte) divr16u::i
|
|
(byte) divr16u::i#1 150001.5
|
|
(byte) divr16u::i#2 15384.76923076923
|
|
(word) divr16u::quotient
|
|
(word) divr16u::quotient#1 150001.5
|
|
(word) divr16u::quotient#2 100001.0
|
|
(word) divr16u::quotient#3 25000.25
|
|
(word) divr16u::rem
|
|
(word) divr16u::rem#0 75000.75
|
|
(word) divr16u::rem#1 200002.0
|
|
(word) divr16u::rem#10 11002.0
|
|
(word) divr16u::rem#11 103334.66666666667
|
|
(word) divr16u::rem#2 200002.0
|
|
(word) divr16u::rem#4 2002.0
|
|
(word) divr16u::rem#5 210003.0
|
|
(word) divr16u::rem#6 100001.0
|
|
(word) divr16u::return
|
|
(word) divr16u::return#0 43143.57142857143
|
|
(word) divr16u::return#2 2002.0
|
|
(word) divr16u::return#3 2002.0
|
|
(volatile byte) frame_cnt loadstore 3.8181818181818175
|
|
(void()) init_irq()
|
|
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
|
(void()) main()
|
|
(signed word~) main::$11 202.0
|
|
(word~) main::$26 202.0
|
|
(word~) main::$27 202.0
|
|
(word~) main::$28 101.0
|
|
(word~) main::$29 101.0
|
|
(signed word*~) main::$30 202.0
|
|
(signed word*~) main::$31 202.0
|
|
(signed word~) main::$7 202.0
|
|
(signed word) main::cos_x
|
|
(signed word) main::cos_x#0 101.0
|
|
(word) main::idx_x
|
|
(word) main::idx_x#1 101.0
|
|
(word) main::idx_x#10 27.545454545454547
|
|
(word) main::idx_x#11 11.222222222222223
|
|
(word) main::idx_y
|
|
(word) main::idx_y#1 101.0
|
|
(word) main::idx_y#10 28.857142857142858
|
|
(word) main::idx_y#3 9.774193548387098
|
|
(signed word) main::r
|
|
(signed word) main::r#1 50.5
|
|
(signed word) main::r#10 11.542857142857143
|
|
(byte) main::r_add
|
|
(byte) main::r_add#1 202.0
|
|
(byte) main::r_add#10 18.60526315789474
|
|
(byte) main::r_add#12 151.5
|
|
(signed word) main::sin_y
|
|
(signed word) main::sin_y#0 101.0
|
|
(byte*) main::toD0181_gfx
|
|
(byte) main::toD0181_return
|
|
(byte*) main::toD0181_screen
|
|
(word) main::x
|
|
(signed word) main::x#0 8.416666666666666
|
|
(signed dword) main::xpos
|
|
(signed dword) main::xpos#0 202.0
|
|
(word) main::y
|
|
(signed word) main::y#0 50.5
|
|
(signed dword) main::ypos
|
|
(signed dword) main::ypos#0 202.0
|
|
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
|
(byte) memset::c
|
|
(byte) memset::c#4 1250.125
|
|
(byte*) memset::dst
|
|
(byte*) memset::dst#1 20002.0
|
|
(byte*) memset::dst#2 13668.333333333332
|
|
(byte*) memset::dst#4 2002.0
|
|
(byte*) memset::end
|
|
(byte*) memset::end#0 1833.6666666666665
|
|
(word) memset::num
|
|
(word) memset::num#2 1001.0
|
|
(void*) memset::return
|
|
(void*) memset::str
|
|
(void*) memset::str#3
|
|
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
|
(word~) mul16s::$11 20002.0
|
|
(word~) mul16s::$12 20002.0
|
|
(word~) mul16s::$6 20002.0
|
|
(word~) mul16s::$9 20002.0
|
|
(signed word) mul16s::a
|
|
(signed word) mul16s::a#0 2002.0
|
|
(signed word) mul16s::a#1 101.0
|
|
(signed word) mul16s::a#2 101.0
|
|
(signed word) mul16s::a#3 861.8461538461538
|
|
(signed word) mul16s::b
|
|
(signed word) mul16s::b#1 202.0
|
|
(signed word) mul16s::b#2 202.0
|
|
(signed word) mul16s::b#3 927.5454545454545
|
|
(dword) mul16s::m
|
|
(dword) mul16s::m#0 10001.0
|
|
(dword) mul16s::m#1 20002.0
|
|
(dword) mul16s::m#2 20002.0
|
|
(dword) mul16s::m#4 20002.0
|
|
(dword) mul16s::m#5 12501.25
|
|
(signed dword) mul16s::return
|
|
(signed dword) mul16s::return#0 2240.8
|
|
(signed dword) mul16s::return#2 2002.0
|
|
(signed dword) mul16s::return#3 202.0
|
|
(signed dword) mul16s::return#4 202.0
|
|
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
|
|
(byte~) mul16u::$1 2.00000002E8
|
|
(word) mul16u::a
|
|
(word) mul16u::a#0 1.00000001E8
|
|
(word) mul16u::a#1 10001.0
|
|
(word) mul16u::a#2 100001.0
|
|
(word) mul16u::a#3 6.683333416666667E7
|
|
(word) mul16u::a#6 555001.5
|
|
(word) mul16u::b
|
|
(word) mul16u::b#0 20002.0
|
|
(word) mul16u::b#1 200002.0
|
|
(word) mul16u::b#2 110002.0
|
|
(dword) mul16u::mb
|
|
(dword) mul16u::mb#0 2000002.0
|
|
(dword) mul16u::mb#1 2.00000002E8
|
|
(dword) mul16u::mb#2 4.300000057142857E7
|
|
(dword) mul16u::res
|
|
(dword) mul16u::res#1 2.00000002E8
|
|
(dword) mul16u::res#2 4.287285785714286E7
|
|
(dword) mul16u::res#6 1.00000001E8
|
|
(dword) mul16u::return
|
|
(dword) mul16u::return#2 20002.0
|
|
(dword) mul16u::return#3 200002.0
|
|
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
|
|
(dword~) mulu16_sel::$0 200002.0
|
|
(dword~) mulu16_sel::$1 200002.0
|
|
(word) mulu16_sel::return
|
|
(word) mulu16_sel::return#0 20002.0
|
|
(word) mulu16_sel::return#1 20002.0
|
|
(word) mulu16_sel::return#10 20002.0
|
|
(word) mulu16_sel::return#11 20002.0
|
|
(word) mulu16_sel::return#12 21429.428571428572
|
|
(word) mulu16_sel::return#2 20002.0
|
|
(byte) mulu16_sel::select
|
|
(byte) mulu16_sel::select#5 16666.833333333332
|
|
(word) mulu16_sel::v1
|
|
(word) mulu16_sel::v1#0 10001.0
|
|
(word) mulu16_sel::v1#1 10001.0
|
|
(word) mulu16_sel::v1#2 20002.0
|
|
(word) mulu16_sel::v1#3 10001.0
|
|
(word) mulu16_sel::v1#4 10001.0
|
|
(word) mulu16_sel::v1#5 150006.0
|
|
(word) mulu16_sel::v2
|
|
(word) mulu16_sel::v2#0 20002.0
|
|
(word) mulu16_sel::v2#1 20002.0
|
|
(word) mulu16_sel::v2#3 20002.0
|
|
(word) mulu16_sel::v2#4 20002.0
|
|
(word) mulu16_sel::v2#5 70002.5
|
|
(word) rem16u
|
|
(word) rem16u#1 2200.4
|
|
(signed word()) sin16s((dword) sin16s::x)
|
|
(dword~) sin16s::$4 20002.0
|
|
(byte) sin16s::isUpper
|
|
(byte) sin16s::isUpper#2 303.06060606060606
|
|
(signed word) sin16s::return
|
|
(signed word) sin16s::return#0 2002.0
|
|
(signed word) sin16s::return#1 7001.0
|
|
(signed word) sin16s::return#5 20002.0
|
|
(signed word) sin16s::sinx
|
|
(signed word) sin16s::sinx#1 20002.0
|
|
(word) sin16s::usinx
|
|
(word) sin16s::usinx#0 1666.8333333333333
|
|
(word) sin16s::usinx#1 5000.5
|
|
(dword) sin16s::x
|
|
(dword) sin16s::x#0 15502.0
|
|
(dword) sin16s::x#1 20002.0
|
|
(dword) sin16s::x#2 20002.0
|
|
(dword) sin16s::x#4 25002.5
|
|
(dword) sin16s::x#6 30003.0
|
|
(word) sin16s::x1
|
|
(word) sin16s::x1#0 3182.1363636363635
|
|
(word) sin16s::x2
|
|
(word) sin16s::x2#0 20002.0
|
|
(word) sin16s::x3
|
|
(word) sin16s::x3#0 5000.5
|
|
(word) sin16s::x3_6
|
|
(word) sin16s::x3_6#0 20002.0
|
|
(word) sin16s::x4
|
|
(word) sin16s::x4#0 20002.0
|
|
(word) sin16s::x5
|
|
(word) sin16s::x5#0 20002.0
|
|
(word) sin16s::x5_128
|
|
(word) sin16s::x5_128#0 20002.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::$6 2002.0
|
|
(word~) sin16s_gen2::$8 1001.0
|
|
(signed word) sin16s_gen2::ampl
|
|
(word) sin16s_gen2::i
|
|
(word) sin16s_gen2::i#1 2002.0
|
|
(word) sin16s_gen2::i#2 231.0
|
|
(signed word) sin16s_gen2::max
|
|
(signed word) sin16s_gen2::min
|
|
(signed word) sin16s_gen2::offs
|
|
(signed word*) sin16s_gen2::sintab
|
|
(signed word*) sin16s_gen2::sintab#0 667.3333333333334
|
|
(signed word*) sin16s_gen2::sintab#2 273.0
|
|
(dword) sin16s_gen2::step
|
|
(dword) sin16s_gen2::step#0 73.46666666666667
|
|
(word) sin16s_gen2::wavelength
|
|
(dword) sin16s_gen2::x
|
|
(dword) sin16s_gen2::x#1 1001.0
|
|
(dword) sin16s_gen2::x#2 250.25
|
|
|
|
Initial phi equivalence classes
|
|
[ main::idx_x#11 main::idx_x#10 main::idx_x#1 ]
|
|
[ main::r#10 main::r#1 ]
|
|
[ main::idx_y#3 main::idx_y#10 main::idx_y#1 ]
|
|
[ main::r_add#10 main::r_add#12 main::r_add#1 ]
|
|
[ mul16s::a#3 mul16s::a#2 mul16s::a#1 mul16s::a#0 ]
|
|
[ mul16s::b#3 mul16s::b#2 mul16s::b#1 ]
|
|
[ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ]
|
|
[ mul16u::b#2 mul16u::b#0 mul16u::b#1 ]
|
|
[ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ]
|
|
[ mul16u::res#2 mul16u::res#6 mul16u::res#1 ]
|
|
[ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
|
[ memset::num#2 ]
|
|
[ memset::str#3 ]
|
|
[ memset::c#4 ]
|
|
[ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
|
[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
|
[ bitmap_init::x#2 bitmap_init::x#1 ]
|
|
[ bitmap_init::y#2 bitmap_init::y#1 ]
|
|
[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
|
[ sin16s_gen2::i#2 sin16s_gen2::i#1 ]
|
|
[ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
|
|
[ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
|
|
[ sin16s::isUpper#2 ]
|
|
[ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ]
|
|
[ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ]
|
|
[ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ]
|
|
[ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ]
|
|
[ mulu16_sel::select#5 ]
|
|
[ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
|
|
[ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ]
|
|
[ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
|
|
[ divr16u::i#2 divr16u::i#1 ]
|
|
Added variable frame_cnt to live range equivalence class [ frame_cnt ]
|
|
Added variable main::$26 to live range equivalence class [ main::$26 ]
|
|
Added variable main::$30 to live range equivalence class [ main::$30 ]
|
|
Added variable main::cos_x#0 to live range equivalence class [ main::cos_x#0 ]
|
|
Added variable mul16s::return#3 to live range equivalence class [ mul16s::return#3 ]
|
|
Added variable main::xpos#0 to live range equivalence class [ main::xpos#0 ]
|
|
Added variable main::$28 to live range equivalence class [ main::$28 ]
|
|
Added variable main::$7 to live range equivalence class [ main::$7 ]
|
|
Added variable main::x#0 to live range equivalence class [ main::x#0 ]
|
|
Added variable main::$27 to live range equivalence class [ main::$27 ]
|
|
Added variable main::$31 to live range equivalence class [ main::$31 ]
|
|
Added variable main::sin_y#0 to live range equivalence class [ main::sin_y#0 ]
|
|
Added variable mul16s::return#4 to live range equivalence class [ mul16s::return#4 ]
|
|
Added variable main::ypos#0 to live range equivalence class [ main::ypos#0 ]
|
|
Added variable main::$29 to live range equivalence class [ main::$29 ]
|
|
Added variable main::$11 to live range equivalence class [ main::$11 ]
|
|
Added variable main::y#0 to live range equivalence class [ main::y#0 ]
|
|
Added variable bitmap_plot::x#0 to live range equivalence class [ bitmap_plot::x#0 ]
|
|
Added variable bitmap_plot::y#0 to live range equivalence class [ bitmap_plot::y#0 ]
|
|
Added variable bitmap_plot::plotter#0 to live range equivalence class [ bitmap_plot::plotter#0 ]
|
|
Added variable bitmap_plot::$0 to live range equivalence class [ bitmap_plot::$0 ]
|
|
Added variable bitmap_plot::plotter#1 to live range equivalence class [ bitmap_plot::plotter#1 ]
|
|
Added variable bitmap_plot::$1 to live range equivalence class [ bitmap_plot::$1 ]
|
|
Added variable mul16u::return#2 to live range equivalence class [ mul16u::return#2 ]
|
|
Added variable mul16s::$6 to live range equivalence class [ mul16s::$6 ]
|
|
Added variable mul16s::$11 to live range equivalence class [ mul16s::$11 ]
|
|
Added variable mul16s::$9 to live range equivalence class [ mul16s::$9 ]
|
|
Added variable mul16s::$12 to live range equivalence class [ mul16s::$12 ]
|
|
Added variable mul16s::return#0 to live range equivalence class [ mul16s::return#0 ]
|
|
Added variable mul16u::$1 to live range equivalence class [ mul16u::$1 ]
|
|
Added variable memset::end#0 to live range equivalence class [ memset::end#0 ]
|
|
Added variable bitmap_init::$7 to live range equivalence class [ bitmap_init::$7 ]
|
|
Added variable bitmap_init::$4 to live range equivalence class [ bitmap_init::$4 ]
|
|
Added variable bitmap_init::$5 to live range equivalence class [ bitmap_init::$5 ]
|
|
Added variable bitmap_init::$6 to live range equivalence class [ bitmap_init::$6 ]
|
|
Added variable div32u16u::return#2 to live range equivalence class [ div32u16u::return#2 ]
|
|
Added variable sin16s_gen2::step#0 to live range equivalence class [ sin16s_gen2::step#0 ]
|
|
Added variable sin16s::return#0 to live range equivalence class [ sin16s::return#0 ]
|
|
Added variable mul16s::return#2 to live range equivalence class [ mul16s::return#2 ]
|
|
Added variable sin16s_gen2::$6 to live range equivalence class [ sin16s_gen2::$6 ]
|
|
Added variable sin16s_gen2::$8 to live range equivalence class [ sin16s_gen2::$8 ]
|
|
Added variable sin16s::$4 to live range equivalence class [ sin16s::$4 ]
|
|
Added variable sin16s::x1#0 to live range equivalence class [ sin16s::x1#0 ]
|
|
Added variable mulu16_sel::return#0 to live range equivalence class [ mulu16_sel::return#0 ]
|
|
Added variable sin16s::x2#0 to live range equivalence class [ sin16s::x2#0 ]
|
|
Added variable mulu16_sel::return#1 to live range equivalence class [ mulu16_sel::return#1 ]
|
|
Added variable sin16s::x3#0 to live range equivalence class [ sin16s::x3#0 ]
|
|
Added variable mulu16_sel::return#2 to live range equivalence class [ mulu16_sel::return#2 ]
|
|
Added variable sin16s::x3_6#0 to live range equivalence class [ sin16s::x3_6#0 ]
|
|
Added variable sin16s::usinx#0 to live range equivalence class [ sin16s::usinx#0 ]
|
|
Added variable mulu16_sel::return#10 to live range equivalence class [ mulu16_sel::return#10 ]
|
|
Added variable sin16s::x4#0 to live range equivalence class [ sin16s::x4#0 ]
|
|
Added variable mulu16_sel::return#11 to live range equivalence class [ mulu16_sel::return#11 ]
|
|
Added variable sin16s::x5#0 to live range equivalence class [ sin16s::x5#0 ]
|
|
Added variable sin16s::x5_128#0 to live range equivalence class [ sin16s::x5_128#0 ]
|
|
Added variable sin16s::usinx#1 to live range equivalence class [ sin16s::usinx#1 ]
|
|
Added variable mul16u::return#3 to live range equivalence class [ mul16u::return#3 ]
|
|
Added variable mulu16_sel::$0 to live range equivalence class [ mulu16_sel::$0 ]
|
|
Added variable mulu16_sel::$1 to live range equivalence class [ mulu16_sel::$1 ]
|
|
Added variable mulu16_sel::return#12 to live range equivalence class [ mulu16_sel::return#12 ]
|
|
Added variable divr16u::return#2 to live range equivalence class [ divr16u::return#2 ]
|
|
Added variable div32u16u::quotient_hi#0 to live range equivalence class [ div32u16u::quotient_hi#0 ]
|
|
Added variable divr16u::return#3 to live range equivalence class [ divr16u::return#3 ]
|
|
Added variable div32u16u::quotient_lo#0 to live range equivalence class [ div32u16u::quotient_lo#0 ]
|
|
Added variable div32u16u::return#0 to live range equivalence class [ div32u16u::return#0 ]
|
|
Added variable divr16u::$1 to live range equivalence class [ divr16u::$1 ]
|
|
Added variable divr16u::$2 to live range equivalence class [ divr16u::$2 ]
|
|
Added variable rem16u#1 to live range equivalence class [ rem16u#1 ]
|
|
Complete equivalence classes
|
|
[ main::idx_x#11 main::idx_x#10 main::idx_x#1 ]
|
|
[ main::r#10 main::r#1 ]
|
|
[ main::idx_y#3 main::idx_y#10 main::idx_y#1 ]
|
|
[ main::r_add#10 main::r_add#12 main::r_add#1 ]
|
|
[ mul16s::a#3 mul16s::a#2 mul16s::a#1 mul16s::a#0 ]
|
|
[ mul16s::b#3 mul16s::b#2 mul16s::b#1 ]
|
|
[ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ]
|
|
[ mul16u::b#2 mul16u::b#0 mul16u::b#1 ]
|
|
[ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ]
|
|
[ mul16u::res#2 mul16u::res#6 mul16u::res#1 ]
|
|
[ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
|
[ memset::num#2 ]
|
|
[ memset::str#3 ]
|
|
[ memset::c#4 ]
|
|
[ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
|
[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
|
[ bitmap_init::x#2 bitmap_init::x#1 ]
|
|
[ bitmap_init::y#2 bitmap_init::y#1 ]
|
|
[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
|
[ sin16s_gen2::i#2 sin16s_gen2::i#1 ]
|
|
[ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
|
|
[ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
|
|
[ sin16s::isUpper#2 ]
|
|
[ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ]
|
|
[ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ]
|
|
[ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ]
|
|
[ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ]
|
|
[ mulu16_sel::select#5 ]
|
|
[ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
|
|
[ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ]
|
|
[ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
|
|
[ divr16u::i#2 divr16u::i#1 ]
|
|
[ frame_cnt ]
|
|
[ main::$26 ]
|
|
[ main::$30 ]
|
|
[ main::cos_x#0 ]
|
|
[ mul16s::return#3 ]
|
|
[ main::xpos#0 ]
|
|
[ main::$28 ]
|
|
[ main::$7 ]
|
|
[ main::x#0 ]
|
|
[ main::$27 ]
|
|
[ main::$31 ]
|
|
[ main::sin_y#0 ]
|
|
[ mul16s::return#4 ]
|
|
[ main::ypos#0 ]
|
|
[ main::$29 ]
|
|
[ main::$11 ]
|
|
[ main::y#0 ]
|
|
[ bitmap_plot::x#0 ]
|
|
[ bitmap_plot::y#0 ]
|
|
[ bitmap_plot::plotter#0 ]
|
|
[ bitmap_plot::$0 ]
|
|
[ bitmap_plot::plotter#1 ]
|
|
[ bitmap_plot::$1 ]
|
|
[ mul16u::return#2 ]
|
|
[ mul16s::$6 ]
|
|
[ mul16s::$11 ]
|
|
[ mul16s::$9 ]
|
|
[ mul16s::$12 ]
|
|
[ mul16s::return#0 ]
|
|
[ mul16u::$1 ]
|
|
[ memset::end#0 ]
|
|
[ bitmap_init::$7 ]
|
|
[ bitmap_init::$4 ]
|
|
[ bitmap_init::$5 ]
|
|
[ bitmap_init::$6 ]
|
|
[ div32u16u::return#2 ]
|
|
[ sin16s_gen2::step#0 ]
|
|
[ sin16s::return#0 ]
|
|
[ mul16s::return#2 ]
|
|
[ sin16s_gen2::$6 ]
|
|
[ sin16s_gen2::$8 ]
|
|
[ sin16s::$4 ]
|
|
[ sin16s::x1#0 ]
|
|
[ mulu16_sel::return#0 ]
|
|
[ sin16s::x2#0 ]
|
|
[ mulu16_sel::return#1 ]
|
|
[ sin16s::x3#0 ]
|
|
[ mulu16_sel::return#2 ]
|
|
[ sin16s::x3_6#0 ]
|
|
[ sin16s::usinx#0 ]
|
|
[ mulu16_sel::return#10 ]
|
|
[ sin16s::x4#0 ]
|
|
[ mulu16_sel::return#11 ]
|
|
[ sin16s::x5#0 ]
|
|
[ sin16s::x5_128#0 ]
|
|
[ sin16s::usinx#1 ]
|
|
[ mul16u::return#3 ]
|
|
[ mulu16_sel::$0 ]
|
|
[ mulu16_sel::$1 ]
|
|
[ mulu16_sel::return#12 ]
|
|
[ divr16u::return#2 ]
|
|
[ div32u16u::quotient_hi#0 ]
|
|
[ divr16u::return#3 ]
|
|
[ div32u16u::quotient_lo#0 ]
|
|
[ div32u16u::return#0 ]
|
|
[ divr16u::$1 ]
|
|
[ divr16u::$2 ]
|
|
[ rem16u#1 ]
|
|
Allocated zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ]
|
|
Allocated zp[2]:4 [ main::r#10 main::r#1 ]
|
|
Allocated zp[2]:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ]
|
|
Allocated zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ]
|
|
Allocated zp[2]:9 [ mul16s::a#3 mul16s::a#2 mul16s::a#1 mul16s::a#0 ]
|
|
Allocated zp[2]:11 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 ]
|
|
Allocated zp[4]:13 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ]
|
|
Allocated zp[2]:17 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ]
|
|
Allocated zp[2]:19 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ]
|
|
Allocated zp[4]:21 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ]
|
|
Allocated zp[4]:25 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
|
Allocated zp[2]:29 [ memset::num#2 ]
|
|
Allocated zp[2]:31 [ memset::str#3 ]
|
|
Allocated zp[1]:33 [ memset::c#4 ]
|
|
Allocated zp[2]:34 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
|
Allocated zp[1]:36 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
|
Allocated zp[1]:37 [ bitmap_init::x#2 bitmap_init::x#1 ]
|
|
Allocated zp[1]:38 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
|
Allocated zp[2]:39 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
|
Allocated zp[2]:41 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ]
|
|
Allocated zp[4]:43 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
|
|
Allocated zp[2]:47 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
|
|
Allocated zp[1]:49 [ sin16s::isUpper#2 ]
|
|
Allocated zp[4]:50 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ]
|
|
Allocated zp[2]:54 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ]
|
|
Allocated zp[2]:56 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ]
|
|
Allocated zp[2]:58 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ]
|
|
Allocated zp[1]:60 [ mulu16_sel::select#5 ]
|
|
Allocated zp[2]:61 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
|
|
Allocated zp[2]:63 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ]
|
|
Allocated zp[2]:65 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
|
|
Allocated zp[1]:67 [ divr16u::i#2 divr16u::i#1 ]
|
|
Allocated zp[1]:68 [ frame_cnt ]
|
|
Allocated zp[2]:69 [ main::$26 ]
|
|
Allocated zp[2]:71 [ main::$30 ]
|
|
Allocated zp[2]:73 [ main::cos_x#0 ]
|
|
Allocated zp[4]:75 [ mul16s::return#3 ]
|
|
Allocated zp[4]:79 [ main::xpos#0 ]
|
|
Allocated zp[2]:83 [ main::$28 ]
|
|
Allocated zp[2]:85 [ main::$7 ]
|
|
Allocated zp[2]:87 [ main::x#0 ]
|
|
Allocated zp[2]:89 [ main::$27 ]
|
|
Allocated zp[2]:91 [ main::$31 ]
|
|
Allocated zp[2]:93 [ main::sin_y#0 ]
|
|
Allocated zp[4]:95 [ mul16s::return#4 ]
|
|
Allocated zp[4]:99 [ main::ypos#0 ]
|
|
Allocated zp[2]:103 [ main::$29 ]
|
|
Allocated zp[2]:105 [ main::$11 ]
|
|
Allocated zp[2]:107 [ main::y#0 ]
|
|
Allocated zp[2]:109 [ bitmap_plot::x#0 ]
|
|
Allocated zp[1]:111 [ bitmap_plot::y#0 ]
|
|
Allocated zp[2]:112 [ bitmap_plot::plotter#0 ]
|
|
Allocated zp[2]:114 [ bitmap_plot::$0 ]
|
|
Allocated zp[2]:116 [ bitmap_plot::plotter#1 ]
|
|
Allocated zp[1]:118 [ bitmap_plot::$1 ]
|
|
Allocated zp[4]:119 [ mul16u::return#2 ]
|
|
Allocated zp[2]:123 [ mul16s::$6 ]
|
|
Allocated zp[2]:125 [ mul16s::$11 ]
|
|
Allocated zp[2]:127 [ mul16s::$9 ]
|
|
Allocated zp[2]:129 [ mul16s::$12 ]
|
|
Allocated zp[4]:131 [ mul16s::return#0 ]
|
|
Allocated zp[1]:135 [ mul16u::$1 ]
|
|
Allocated zp[2]:136 [ memset::end#0 ]
|
|
Allocated zp[1]:138 [ bitmap_init::$7 ]
|
|
Allocated zp[1]:139 [ bitmap_init::$4 ]
|
|
Allocated zp[1]:140 [ bitmap_init::$5 ]
|
|
Allocated zp[1]:141 [ bitmap_init::$6 ]
|
|
Allocated zp[4]:142 [ div32u16u::return#2 ]
|
|
Allocated zp[4]:146 [ sin16s_gen2::step#0 ]
|
|
Allocated zp[2]:150 [ sin16s::return#0 ]
|
|
Allocated zp[4]:152 [ mul16s::return#2 ]
|
|
Allocated zp[4]:156 [ sin16s_gen2::$6 ]
|
|
Allocated zp[2]:160 [ sin16s_gen2::$8 ]
|
|
Allocated zp[4]:162 [ sin16s::$4 ]
|
|
Allocated zp[2]:166 [ sin16s::x1#0 ]
|
|
Allocated zp[2]:168 [ mulu16_sel::return#0 ]
|
|
Allocated zp[2]:170 [ sin16s::x2#0 ]
|
|
Allocated zp[2]:172 [ mulu16_sel::return#1 ]
|
|
Allocated zp[2]:174 [ sin16s::x3#0 ]
|
|
Allocated zp[2]:176 [ mulu16_sel::return#2 ]
|
|
Allocated zp[2]:178 [ sin16s::x3_6#0 ]
|
|
Allocated zp[2]:180 [ sin16s::usinx#0 ]
|
|
Allocated zp[2]:182 [ mulu16_sel::return#10 ]
|
|
Allocated zp[2]:184 [ sin16s::x4#0 ]
|
|
Allocated zp[2]:186 [ mulu16_sel::return#11 ]
|
|
Allocated zp[2]:188 [ sin16s::x5#0 ]
|
|
Allocated zp[2]:190 [ sin16s::x5_128#0 ]
|
|
Allocated zp[2]:192 [ sin16s::usinx#1 ]
|
|
Allocated zp[4]:194 [ mul16u::return#3 ]
|
|
Allocated zp[4]:198 [ mulu16_sel::$0 ]
|
|
Allocated zp[4]:202 [ mulu16_sel::$1 ]
|
|
Allocated zp[2]:206 [ mulu16_sel::return#12 ]
|
|
Allocated zp[2]:208 [ divr16u::return#2 ]
|
|
Allocated zp[2]:210 [ div32u16u::quotient_hi#0 ]
|
|
Allocated zp[2]:212 [ divr16u::return#3 ]
|
|
Allocated zp[2]:214 [ div32u16u::quotient_lo#0 ]
|
|
Allocated zp[4]:216 [ div32u16u::return#0 ]
|
|
Allocated zp[1]:220 [ divr16u::$1 ]
|
|
Allocated zp[1]:221 [ divr16u::$2 ]
|
|
Allocated zp[2]:222 [ rem16u#1 ]
|
|
|
|
INITIAL ASM
|
|
Target platform is c64basic / MOS6502X
|
|
// File Comments
|
|
// Tests the simple bitmap plotter - and counts plots per frame in an IRQ
|
|
// Plots a spiral
|
|
// Upstart
|
|
.pc = $801 "Basic"
|
|
:BasicUpstart(__bbegin)
|
|
.pc = $80d "Program"
|
|
// Global Constants & labels
|
|
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
|
.const CIA_INTERRUPT_CLEAR = $7f
|
|
.const VIC_BMM = $20
|
|
.const VIC_DEN = $10
|
|
.const VIC_RSEL = 8
|
|
// Bits for the VICII IRQ Status/Enable Registers
|
|
.const IRQ_RASTER = 1
|
|
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
|
.const PROCPORT_DDR_MEMORY_MASK = 7
|
|
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
|
.const PROCPORT_RAM_IO = 5
|
|
// The colors of the C64
|
|
.const BLACK = 0
|
|
.const WHITE = 1
|
|
// PI*2 in u[4.28] format
|
|
.const PI2_u4f28 = $6487ed51
|
|
// PI in u[4.28] format
|
|
.const PI_u4f28 = $3243f6a9
|
|
// PI/2 in u[4.28] format
|
|
.const PI_HALF_u4f28 = $1921fb54
|
|
.const SIZEOF_SIGNED_WORD = 2
|
|
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
|
.label RASTER = $d012
|
|
.label BORDER_COLOR = $d020
|
|
.label BG_COLOR = $d021
|
|
.label VIC_CONTROL = $d011
|
|
.label D011 = $d011
|
|
.label D018 = $d018
|
|
// VIC II IRQ Status Register
|
|
.label IRQ_STATUS = $d019
|
|
// VIC II IRQ Enable Register
|
|
.label IRQ_ENABLE = $d01a
|
|
// Processor port data direction register
|
|
.label PROCPORT_DDR = 0
|
|
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
|
.label PROCPORT = 1
|
|
// The CIA#1: keyboard matrix, joystick #1/#2
|
|
.label CIA1 = $dc00
|
|
// The vector used when the HARDWARE serves IRQ interrupts
|
|
.label HARDWARE_IRQ = $fffe
|
|
.label BITMAP = $2000
|
|
.label SCREEN = $400
|
|
.label frame_cnt = $44
|
|
// Remainder after unsigned 16-bit division
|
|
.label rem16u = $de
|
|
// @begin
|
|
__bbegin:
|
|
jmp __b1
|
|
// @1
|
|
__b1:
|
|
// [1] (volatile byte) frame_cnt ← (byte) 1 -- vbuz1=vbuc1
|
|
// Counts frames - updated by the IRQ
|
|
lda #1
|
|
sta.z frame_cnt
|
|
// [2] phi from @1 to @2 [phi:@1->@2]
|
|
__b2_from___b1:
|
|
jmp __b2
|
|
// @2
|
|
__b2:
|
|
// [3] call main
|
|
// [5] phi from @2 to main [phi:@2->main]
|
|
main_from___b2:
|
|
jsr main
|
|
// [4] phi from @2 to @end [phi:@2->@end]
|
|
__bend_from___b2:
|
|
jmp __bend
|
|
// @end
|
|
__bend:
|
|
// main
|
|
main: {
|
|
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
|
|
.label __7 = $55
|
|
.label __11 = $69
|
|
.label __26 = $45
|
|
.label __27 = $59
|
|
.label __28 = $53
|
|
.label __29 = $67
|
|
.label cos_x = $49
|
|
.label xpos = $4f
|
|
.label x = $57
|
|
.label sin_y = $5d
|
|
.label ypos = $63
|
|
.label y = $6b
|
|
.label idx_x = 2
|
|
.label idx_y = 6
|
|
.label r = 4
|
|
.label r_add = 8
|
|
.label __30 = $47
|
|
.label __31 = $5b
|
|
// [6] call sin16s_gen2
|
|
// [138] phi from main to sin16s_gen2 [phi:main->sin16s_gen2]
|
|
sin16s_gen2_from_main:
|
|
jsr sin16s_gen2
|
|
// [7] phi from main to main::@9 [phi:main->main::@9]
|
|
__b9_from_main:
|
|
jmp __b9
|
|
// main::@9
|
|
__b9:
|
|
// [8] call bitmap_init
|
|
// [116] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init]
|
|
bitmap_init_from___b9:
|
|
jsr bitmap_init
|
|
// [9] phi from main::@9 to main::@10 [phi:main::@9->main::@10]
|
|
__b10_from___b9:
|
|
jmp __b10
|
|
// main::@10
|
|
__b10:
|
|
// [10] call bitmap_clear
|
|
// [102] phi from main::@10 to bitmap_clear [phi:main::@10->bitmap_clear]
|
|
bitmap_clear_from___b10:
|
|
jsr bitmap_clear
|
|
jmp __b11
|
|
// main::@11
|
|
__b11:
|
|
// [11] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2
|
|
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
|
|
sta D011
|
|
// [12] phi from main::@11 to main::toD0181 [phi:main::@11->main::toD0181]
|
|
toD0181_from___b11:
|
|
jmp toD0181
|
|
// main::toD0181
|
|
toD0181:
|
|
jmp __b8
|
|
// main::@8
|
|
__b8:
|
|
// [13] *((const nomodify byte*) D018) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2
|
|
lda #toD0181_return
|
|
sta D018
|
|
// [14] call init_irq
|
|
jsr init_irq
|
|
// [15] phi from main::@8 to main::@1 [phi:main::@8->main::@1]
|
|
__b1_from___b8:
|
|
// [15] phi (byte) main::r_add#10 = (byte) $20 [phi:main::@8->main::@1#0] -- vbuz1=vbuc1
|
|
lda #$20
|
|
sta.z r_add
|
|
// [15] phi (word) main::idx_y#3 = (word) $80 [phi:main::@8->main::@1#1] -- vwuz1=vwuc1
|
|
lda #<$80
|
|
sta.z idx_y
|
|
lda #>$80
|
|
sta.z idx_y+1
|
|
// [15] phi (signed word) main::r#10 = (signed word) 0 [phi:main::@8->main::@1#2] -- vwsz1=vwsc1
|
|
lda #<0
|
|
sta.z r
|
|
lda #>0
|
|
sta.z r+1
|
|
// [15] phi (word) main::idx_x#11 = (word) 0 [phi:main::@8->main::@1#3] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z idx_x
|
|
lda #>0
|
|
sta.z idx_x+1
|
|
jmp __b1
|
|
// main::@1
|
|
__b1:
|
|
jmp __b2
|
|
// main::@2
|
|
__b2:
|
|
// [16] (word~) main::$26 ← (word) main::idx_x#11 << (byte) 1 -- vwuz1=vwuz2_rol_1
|
|
lda.z idx_x
|
|
asl
|
|
sta.z __26
|
|
lda.z idx_x+1
|
|
rol
|
|
sta.z __26+1
|
|
// [17] (signed word*~) main::$30 ← (const signed word*) SINUS + (word~) main::$26 -- pwsz1=pwsc1_plus_vwuz2
|
|
lda.z __26
|
|
clc
|
|
adc #<SINUS
|
|
sta.z __30
|
|
lda.z __26+1
|
|
adc #>SINUS
|
|
sta.z __30+1
|
|
// [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$30) -- vwsz1=_deref_pwsz2
|
|
ldy #0
|
|
lda (__30),y
|
|
sta.z cos_x
|
|
iny
|
|
lda (__30),y
|
|
sta.z cos_x+1
|
|
// [19] (signed word) mul16s::a#1 ← (signed word) main::r#10 -- vwsz1=vwsz2
|
|
lda.z r
|
|
sta.z mul16s.a
|
|
lda.z r+1
|
|
sta.z mul16s.a+1
|
|
// [20] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0 -- vwsz1=vwsz2
|
|
lda.z cos_x
|
|
sta.z mul16s.b
|
|
lda.z cos_x+1
|
|
sta.z mul16s.b+1
|
|
// [21] call mul16s
|
|
// [63] phi from main::@2 to mul16s [phi:main::@2->mul16s]
|
|
mul16s_from___b2:
|
|
// [63] phi (signed word) mul16s::b#3 = (signed word) mul16s::b#1 [phi:main::@2->mul16s#0] -- register_copy
|
|
// [63] phi (signed word) mul16s::a#3 = (signed word) mul16s::a#1 [phi:main::@2->mul16s#1] -- register_copy
|
|
jsr mul16s
|
|
// [22] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0 -- vdsz1=vdsz2
|
|
lda.z mul16s.return
|
|
sta.z mul16s.return_2
|
|
lda.z mul16s.return+1
|
|
sta.z mul16s.return_2+1
|
|
lda.z mul16s.return+2
|
|
sta.z mul16s.return_2+2
|
|
lda.z mul16s.return+3
|
|
sta.z mul16s.return_2+3
|
|
jmp __b12
|
|
// main::@12
|
|
__b12:
|
|
// [23] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3 -- vdsz1=vdsz2
|
|
lda.z mul16s.return_2
|
|
sta.z xpos
|
|
lda.z mul16s.return_2+1
|
|
sta.z xpos+1
|
|
lda.z mul16s.return_2+2
|
|
sta.z xpos+2
|
|
lda.z mul16s.return_2+3
|
|
sta.z xpos+3
|
|
// [24] (word~) main::$28 ← > (signed dword) main::xpos#0 -- vwuz1=_hi_vdsz2
|
|
lda.z xpos+2
|
|
sta.z __28
|
|
lda.z xpos+3
|
|
sta.z __28+1
|
|
// [25] (signed word~) main::$7 ← (signed word)(word~) main::$28 >> (signed byte) 2 -- vwsz1=vwsz2_ror_2
|
|
lda.z __28+1
|
|
cmp #$80
|
|
ror
|
|
sta.z __7+1
|
|
lda.z __28
|
|
ror
|
|
sta.z __7
|
|
lda.z __7+1
|
|
cmp #$80
|
|
ror.z __7+1
|
|
ror.z __7
|
|
// [26] (signed word) main::x#0 ← (signed word) $a0 + (signed word~) main::$7 -- vwsz1=vwsc1_plus_vwsz2
|
|
lda.z __7
|
|
clc
|
|
adc #<$a0
|
|
sta.z x
|
|
lda.z __7+1
|
|
adc #>$a0
|
|
sta.z x+1
|
|
// [27] (word~) main::$27 ← (word) main::idx_y#3 << (byte) 1 -- vwuz1=vwuz2_rol_1
|
|
lda.z idx_y
|
|
asl
|
|
sta.z __27
|
|
lda.z idx_y+1
|
|
rol
|
|
sta.z __27+1
|
|
// [28] (signed word*~) main::$31 ← (const signed word*) SINUS + (word~) main::$27 -- pwsz1=pwsc1_plus_vwuz2
|
|
lda.z __27
|
|
clc
|
|
adc #<SINUS
|
|
sta.z __31
|
|
lda.z __27+1
|
|
adc #>SINUS
|
|
sta.z __31+1
|
|
// [29] (signed word) main::sin_y#0 ← *((signed word*~) main::$31) -- vwsz1=_deref_pwsz2
|
|
ldy #0
|
|
lda (__31),y
|
|
sta.z sin_y
|
|
iny
|
|
lda (__31),y
|
|
sta.z sin_y+1
|
|
// [30] (signed word) mul16s::a#2 ← (signed word) main::r#10 -- vwsz1=vwsz2
|
|
lda.z r
|
|
sta.z mul16s.a
|
|
lda.z r+1
|
|
sta.z mul16s.a+1
|
|
// [31] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0 -- vwsz1=vwsz2
|
|
lda.z sin_y
|
|
sta.z mul16s.b
|
|
lda.z sin_y+1
|
|
sta.z mul16s.b+1
|
|
// [32] call mul16s
|
|
// [63] phi from main::@12 to mul16s [phi:main::@12->mul16s]
|
|
mul16s_from___b12:
|
|
// [63] phi (signed word) mul16s::b#3 = (signed word) mul16s::b#2 [phi:main::@12->mul16s#0] -- register_copy
|
|
// [63] phi (signed word) mul16s::a#3 = (signed word) mul16s::a#2 [phi:main::@12->mul16s#1] -- register_copy
|
|
jsr mul16s
|
|
// [33] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0 -- vdsz1=vdsz2
|
|
lda.z mul16s.return
|
|
sta.z mul16s.return_3
|
|
lda.z mul16s.return+1
|
|
sta.z mul16s.return_3+1
|
|
lda.z mul16s.return+2
|
|
sta.z mul16s.return_3+2
|
|
lda.z mul16s.return+3
|
|
sta.z mul16s.return_3+3
|
|
jmp __b13
|
|
// main::@13
|
|
__b13:
|
|
// [34] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4 -- vdsz1=vdsz2
|
|
lda.z mul16s.return_3
|
|
sta.z ypos
|
|
lda.z mul16s.return_3+1
|
|
sta.z ypos+1
|
|
lda.z mul16s.return_3+2
|
|
sta.z ypos+2
|
|
lda.z mul16s.return_3+3
|
|
sta.z ypos+3
|
|
// [35] (word~) main::$29 ← > (signed dword) main::ypos#0 -- vwuz1=_hi_vdsz2
|
|
lda.z ypos+2
|
|
sta.z __29
|
|
lda.z ypos+3
|
|
sta.z __29+1
|
|
// [36] (signed word~) main::$11 ← (signed word)(word~) main::$29 >> (signed byte) 2 -- vwsz1=vwsz2_ror_2
|
|
lda.z __29+1
|
|
cmp #$80
|
|
ror
|
|
sta.z __11+1
|
|
lda.z __29
|
|
ror
|
|
sta.z __11
|
|
lda.z __11+1
|
|
cmp #$80
|
|
ror.z __11+1
|
|
ror.z __11
|
|
// [37] (signed word) main::y#0 ← (signed byte) $64 + (signed word~) main::$11 -- vwsz1=vbsc1_plus_vwsz2
|
|
lda.z __11
|
|
clc
|
|
adc #<$64
|
|
sta.z y
|
|
lda.z __11+1
|
|
adc #>$64
|
|
sta.z y+1
|
|
// [38] (word) bitmap_plot::x#0 ← (word)(signed word) main::x#0 -- vwuz1=vwuz2
|
|
lda.z x
|
|
sta.z bitmap_plot.x
|
|
lda.z x+1
|
|
sta.z bitmap_plot.x+1
|
|
// [39] (byte) bitmap_plot::y#0 ← (byte)(word)(signed word) main::y#0 -- vbuz1=_byte_vwuz2
|
|
lda.z y
|
|
sta.z bitmap_plot.y
|
|
// [40] call bitmap_plot
|
|
jsr bitmap_plot
|
|
jmp __b14
|
|
// main::@14
|
|
__b14:
|
|
// [41] *((const byte*) plots_per_frame + (volatile byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (volatile byte) frame_cnt) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
|
|
ldx.z frame_cnt
|
|
inc plots_per_frame,x
|
|
// [42] (word) main::idx_x#1 ← (word) main::idx_x#11 + (byte) main::r_add#10 -- vwuz1=vwuz1_plus_vbuz2
|
|
lda.z r_add
|
|
clc
|
|
adc.z idx_x
|
|
sta.z idx_x
|
|
bcc !+
|
|
inc.z idx_x+1
|
|
!:
|
|
// [43] if((word) main::idx_x#1<(word) $200) goto main::@16 -- vwuz1_lt_vwuc1_then_la1
|
|
lda.z idx_x+1
|
|
cmp #>$200
|
|
bcc __b16_from___b14
|
|
bne !+
|
|
lda.z idx_x
|
|
cmp #<$200
|
|
bcc __b16_from___b14
|
|
!:
|
|
// [45] phi from main::@14 to main::@3 [phi:main::@14->main::@3]
|
|
__b3_from___b14:
|
|
// [45] phi (word) main::idx_x#10 = (byte) 0 [phi:main::@14->main::@3#0] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z idx_x
|
|
lda #>0
|
|
sta.z idx_x+1
|
|
jmp __b3
|
|
// [44] phi from main::@14 to main::@16 [phi:main::@14->main::@16]
|
|
__b16_from___b14:
|
|
jmp __b16
|
|
// main::@16
|
|
__b16:
|
|
// [45] phi from main::@16 to main::@3 [phi:main::@16->main::@3]
|
|
__b3_from___b16:
|
|
// [45] phi (word) main::idx_x#10 = (word) main::idx_x#1 [phi:main::@16->main::@3#0] -- register_copy
|
|
jmp __b3
|
|
// main::@3
|
|
__b3:
|
|
// [46] (word) main::idx_y#1 ← (word) main::idx_y#3 + (byte) main::r_add#10 -- vwuz1=vwuz1_plus_vbuz2
|
|
lda.z r_add
|
|
clc
|
|
adc.z idx_y
|
|
sta.z idx_y
|
|
bcc !+
|
|
inc.z idx_y+1
|
|
!:
|
|
// [47] if((word) main::idx_y#1<(word) $200) goto main::@17 -- vwuz1_lt_vwuc1_then_la1
|
|
lda.z idx_y+1
|
|
cmp #>$200
|
|
bcc __b17_from___b3
|
|
bne !+
|
|
lda.z idx_y
|
|
cmp #<$200
|
|
bcc __b17_from___b3
|
|
!:
|
|
// [49] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
|
|
__b4_from___b3:
|
|
// [49] phi (word) main::idx_y#10 = (byte) 0 [phi:main::@3->main::@4#0] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z idx_y
|
|
lda #>0
|
|
sta.z idx_y+1
|
|
jmp __b4
|
|
// [48] phi from main::@3 to main::@17 [phi:main::@3->main::@17]
|
|
__b17_from___b3:
|
|
jmp __b17
|
|
// main::@17
|
|
__b17:
|
|
// [49] phi from main::@17 to main::@4 [phi:main::@17->main::@4]
|
|
__b4_from___b17:
|
|
// [49] phi (word) main::idx_y#10 = (word) main::idx_y#1 [phi:main::@17->main::@4#0] -- register_copy
|
|
jmp __b4
|
|
// main::@4
|
|
__b4:
|
|
// [50] (signed word) main::r#1 ← (signed word) main::r#10 + (byte) main::r_add#10 -- vwsz1=vwsz1_plus_vbuz2
|
|
clc
|
|
lda.z r
|
|
adc.z r_add
|
|
sta.z r
|
|
lda.z r+1
|
|
adc #0
|
|
sta.z r+1
|
|
// [51] if((word) main::idx_x#10!=(byte) 0) goto main::@5 -- vwuz1_neq_0_then_la1
|
|
lda.z idx_x
|
|
bne __b5_from___b4
|
|
lda.z idx_x+1
|
|
bne __b5_from___b4
|
|
jmp __b15
|
|
// main::@15
|
|
__b15:
|
|
// [52] if((byte) main::r_add#10==(byte) 1) goto main::@5 -- vbuz1_eq_vbuc1_then_la1
|
|
lda #1
|
|
cmp.z r_add
|
|
beq __b5_from___b15
|
|
jmp __b6
|
|
// main::@6
|
|
__b6:
|
|
// [53] (byte) main::r_add#1 ← (byte) main::r_add#10 >> (byte) 1 -- vbuz1=vbuz1_ror_1
|
|
lsr.z r_add
|
|
// [54] phi from main::@4 main::@6 to main::@5 [phi:main::@4/main::@6->main::@5]
|
|
__b5_from___b4:
|
|
__b5_from___b6:
|
|
// [54] phi (byte) main::r_add#12 = (byte) main::r_add#10 [phi:main::@4/main::@6->main::@5#0] -- register_copy
|
|
jmp __b5
|
|
// [54] phi from main::@15 to main::@5 [phi:main::@15->main::@5]
|
|
__b5_from___b15:
|
|
jmp __b5
|
|
// main::@5
|
|
__b5:
|
|
// [55] if((signed word) main::r#1>=(signed word)(number) $200*(number) $c+(number) $100) goto main::@7 -- vwsz1_ge_vwsc1_then_la1
|
|
lda.z r
|
|
cmp #<$200*$c+$100
|
|
lda.z r+1
|
|
sbc #>$200*$c+$100
|
|
bvc !+
|
|
eor #$80
|
|
!:
|
|
bpl __b7
|
|
// [15] phi from main::@5 to main::@1 [phi:main::@5->main::@1]
|
|
__b1_from___b5:
|
|
// [15] phi (byte) main::r_add#10 = (byte) main::r_add#12 [phi:main::@5->main::@1#0] -- register_copy
|
|
// [15] phi (word) main::idx_y#3 = (word) main::idx_y#10 [phi:main::@5->main::@1#1] -- register_copy
|
|
// [15] phi (signed word) main::r#10 = (signed word) main::r#1 [phi:main::@5->main::@1#2] -- register_copy
|
|
// [15] phi (word) main::idx_x#11 = (word) main::idx_x#10 [phi:main::@5->main::@1#3] -- register_copy
|
|
jmp __b1
|
|
// main::@7
|
|
__b7:
|
|
// [56] *((const nomodify byte*) BORDER_COLOR) ← ++ *((const nomodify byte*) BORDER_COLOR) -- _deref_pbuc1=_inc__deref_pbuc1
|
|
inc BORDER_COLOR
|
|
jmp __b7
|
|
}
|
|
// bitmap_plot
|
|
// Plot a single dot in the bitmap
|
|
// bitmap_plot(word zp($6d) x, byte zp($6f) y)
|
|
bitmap_plot: {
|
|
.label __0 = $72
|
|
.label __1 = $76
|
|
.label plotter = $70
|
|
.label plotter_1 = $74
|
|
.label x = $6d
|
|
.label y = $6f
|
|
// [57] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2
|
|
ldy.z y
|
|
lda bitmap_plot_yhi,y
|
|
sta.z plotter+1
|
|
lda bitmap_plot_ylo,y
|
|
sta.z plotter
|
|
// [58] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1
|
|
lda.z x
|
|
and #<$fff8
|
|
sta.z __0
|
|
lda.z x+1
|
|
and #>$fff8
|
|
sta.z __0+1
|
|
// [59] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz2_plus_vwuz3
|
|
lda.z plotter
|
|
clc
|
|
adc.z __0
|
|
sta.z plotter_1
|
|
lda.z plotter+1
|
|
adc.z __0+1
|
|
sta.z plotter_1+1
|
|
// [60] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#0 -- vbuz1=_lo_vwuz2
|
|
lda.z x
|
|
sta.z __1
|
|
// [61] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2
|
|
ldy #0
|
|
lda (plotter_1),y
|
|
ldy.z __1
|
|
ora bitmap_plot_bit,y
|
|
ldy #0
|
|
sta (plotter_1),y
|
|
jmp __breturn
|
|
// bitmap_plot::@return
|
|
__breturn:
|
|
// [62] return
|
|
rts
|
|
}
|
|
// mul16s
|
|
// Multiply of two signed ints to a signed long
|
|
// Fixes offsets introduced by using unsigned multiplication
|
|
// mul16s(signed word zp(9) a, signed word zp($b) b)
|
|
mul16s: {
|
|
.label __6 = $7b
|
|
.label __9 = $7f
|
|
.label __11 = $7d
|
|
.label __12 = $81
|
|
.label m = $d
|
|
.label return = $83
|
|
.label a = 9
|
|
.label return_1 = $98
|
|
.label b = $b
|
|
.label return_2 = $4b
|
|
.label return_3 = $5f
|
|
// [64] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3 -- vwuz1=vwuz2
|
|
lda.z a
|
|
sta.z mul16u.a
|
|
lda.z a+1
|
|
sta.z mul16u.a+1
|
|
// [65] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3 -- vwuz1=vwuz2
|
|
lda.z b
|
|
sta.z mul16u.b
|
|
lda.z b+1
|
|
sta.z mul16u.b+1
|
|
// [66] call mul16u
|
|
// [81] phi from mul16s to mul16u [phi:mul16s->mul16u]
|
|
mul16u_from_mul16s:
|
|
// [81] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy
|
|
// [81] phi (word) mul16u::b#2 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- register_copy
|
|
jsr mul16u
|
|
// [67] (dword) mul16u::return#2 ← (dword) mul16u::res#2 -- vduz1=vduz2
|
|
lda.z mul16u.res
|
|
sta.z mul16u.return
|
|
lda.z mul16u.res+1
|
|
sta.z mul16u.return+1
|
|
lda.z mul16u.res+2
|
|
sta.z mul16u.return+2
|
|
lda.z mul16u.res+3
|
|
sta.z mul16u.return+3
|
|
jmp __b5
|
|
// mul16s::@5
|
|
__b5:
|
|
// [68] (dword) mul16s::m#0 ← (dword) mul16u::return#2 -- vduz1=vduz2
|
|
lda.z mul16u.return
|
|
sta.z m
|
|
lda.z mul16u.return+1
|
|
sta.z m+1
|
|
lda.z mul16u.return+2
|
|
sta.z m+2
|
|
lda.z mul16u.return+3
|
|
sta.z m+3
|
|
// [69] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1
|
|
lda.z a+1
|
|
bpl __b1_from___b5
|
|
jmp __b3
|
|
// mul16s::@3
|
|
__b3:
|
|
// [70] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2
|
|
lda.z m+2
|
|
sta.z __6
|
|
lda.z m+3
|
|
sta.z __6+1
|
|
// [71] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#3 -- vwuz1=vwuz2_minus_vwuz3
|
|
lda.z __6
|
|
sec
|
|
sbc.z b
|
|
sta.z __11
|
|
lda.z __6+1
|
|
sbc.z b+1
|
|
sta.z __11+1
|
|
// [72] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 -- vduz1=vduz1_sethi_vwuz2
|
|
lda.z __11
|
|
sta.z m+2
|
|
lda.z __11+1
|
|
sta.z m+3
|
|
// [73] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1]
|
|
__b1_from___b3:
|
|
__b1_from___b5:
|
|
// [73] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy
|
|
jmp __b1
|
|
// mul16s::@1
|
|
__b1:
|
|
// [74] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1
|
|
lda.z b+1
|
|
bpl __b2_from___b1
|
|
jmp __b4
|
|
// mul16s::@4
|
|
__b4:
|
|
// [75] (word~) mul16s::$9 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2
|
|
lda.z m+2
|
|
sta.z __9
|
|
lda.z m+3
|
|
sta.z __9+1
|
|
// [76] (word~) mul16s::$12 ← (word~) mul16s::$9 - (word)(signed word) mul16s::a#3 -- vwuz1=vwuz2_minus_vwuz3
|
|
lda.z __9
|
|
sec
|
|
sbc.z a
|
|
sta.z __12
|
|
lda.z __9+1
|
|
sbc.z a+1
|
|
sta.z __12+1
|
|
// [77] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$12 -- vduz1=vduz1_sethi_vwuz2
|
|
lda.z __12
|
|
sta.z m+2
|
|
lda.z __12+1
|
|
sta.z m+3
|
|
// [78] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2]
|
|
__b2_from___b1:
|
|
__b2_from___b4:
|
|
// [78] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy
|
|
jmp __b2
|
|
// mul16s::@2
|
|
__b2:
|
|
// [79] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 -- vdsz1=vdsz2
|
|
lda.z m
|
|
sta.z return
|
|
lda.z m+1
|
|
sta.z return+1
|
|
lda.z m+2
|
|
sta.z return+2
|
|
lda.z m+3
|
|
sta.z return+3
|
|
jmp __breturn
|
|
// mul16s::@return
|
|
__breturn:
|
|
// [80] return
|
|
rts
|
|
}
|
|
// mul16u
|
|
// Perform binary multiplication of two unsigned 16-bit unsigned ints into a 32-bit unsigned long
|
|
// mul16u(word zp($13) a, word zp($11) b)
|
|
mul16u: {
|
|
.label __1 = $87
|
|
.label mb = $19
|
|
.label a = $13
|
|
.label res = $15
|
|
.label b = $11
|
|
.label return = $77
|
|
.label return_1 = $c2
|
|
// [82] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 -- vduz1=_dword_vwuz2
|
|
lda.z b
|
|
sta.z mb
|
|
lda.z b+1
|
|
sta.z mb+1
|
|
lda #0
|
|
sta.z mb+2
|
|
sta.z mb+3
|
|
// [83] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1]
|
|
__b1_from_mul16u:
|
|
// [83] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy
|
|
// [83] phi (dword) mul16u::res#2 = (dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vduc1
|
|
lda #<0
|
|
sta.z res
|
|
lda #>0
|
|
sta.z res+1
|
|
lda #<0>>$10
|
|
sta.z res+2
|
|
lda #>0>>$10
|
|
sta.z res+3
|
|
// [83] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy
|
|
jmp __b1
|
|
// mul16u::@1
|
|
__b1:
|
|
// [84] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1
|
|
lda.z a
|
|
bne __b2
|
|
lda.z a+1
|
|
bne __b2
|
|
jmp __breturn
|
|
// mul16u::@return
|
|
__breturn:
|
|
// [85] return
|
|
rts
|
|
// mul16u::@2
|
|
__b2:
|
|
// [86] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuz1=vwuz2_band_vbuc1
|
|
lda #1
|
|
and.z a
|
|
sta.z __1
|
|
// [87] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuz1_eq_0_then_la1
|
|
lda.z __1
|
|
cmp #0
|
|
beq __b3_from___b2
|
|
jmp __b4
|
|
// mul16u::@4
|
|
__b4:
|
|
// [88] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2
|
|
lda.z res
|
|
clc
|
|
adc.z mb
|
|
sta.z res
|
|
lda.z res+1
|
|
adc.z mb+1
|
|
sta.z res+1
|
|
lda.z res+2
|
|
adc.z mb+2
|
|
sta.z res+2
|
|
lda.z res+3
|
|
adc.z mb+3
|
|
sta.z res+3
|
|
// [89] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3]
|
|
__b3_from___b2:
|
|
__b3_from___b4:
|
|
// [89] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy
|
|
jmp __b3
|
|
// mul16u::@3
|
|
__b3:
|
|
// [90] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1
|
|
lsr.z a+1
|
|
ror.z a
|
|
// [91] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1
|
|
asl.z mb
|
|
rol.z mb+1
|
|
rol.z mb+2
|
|
rol.z mb+3
|
|
// [83] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1]
|
|
__b1_from___b3:
|
|
// [83] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy
|
|
// [83] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy
|
|
// [83] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// init_irq
|
|
// Setup the IRQ
|
|
init_irq: {
|
|
// asm { sei }
|
|
sei
|
|
// [93] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK -- _deref_pbuc1=vbuc2
|
|
// Disable kernal & basic
|
|
lda #PROCPORT_DDR_MEMORY_MASK
|
|
sta PROCPORT_DDR
|
|
// [94] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_IO
|
|
sta PROCPORT
|
|
// [95] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
|
|
// Disable CIA 1 Timer IRQ
|
|
lda #CIA_INTERRUPT_CLEAR
|
|
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
|
|
// [96] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) | (byte) $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
|
// Set raster line to $100
|
|
lda #$80
|
|
ora VIC_CONTROL
|
|
sta VIC_CONTROL
|
|
// [97] *((const nomodify byte*) RASTER) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta RASTER
|
|
// [98] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER -- _deref_pbuc1=vbuc2
|
|
// Enable Raster Interrupt
|
|
lda #IRQ_RASTER
|
|
sta IRQ_ENABLE
|
|
// [99] *((const nomodify void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2
|
|
// Set the IRQ routine
|
|
lda #<irq
|
|
sta HARDWARE_IRQ
|
|
lda #>irq
|
|
sta HARDWARE_IRQ+1
|
|
// asm { cli }
|
|
cli
|
|
jmp __breturn
|
|
// init_irq::@return
|
|
__breturn:
|
|
// [101] return
|
|
rts
|
|
}
|
|
// bitmap_clear
|
|
// Clear all graphics on the bitmap
|
|
// bgcol - the background color to fill the screen with
|
|
// fgcol - the foreground color to fill the screen with
|
|
bitmap_clear: {
|
|
.const col = WHITE*$10
|
|
// [103] call memset
|
|
// [107] phi from bitmap_clear to memset [phi:bitmap_clear->memset]
|
|
memset_from_bitmap_clear:
|
|
// [107] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuz1=vbuc1
|
|
lda #col
|
|
sta.z memset.c
|
|
// [107] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1
|
|
lda #<SCREEN
|
|
sta.z memset.str
|
|
lda #>SCREEN
|
|
sta.z memset.str+1
|
|
// [107] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1
|
|
lda #<$3e8
|
|
sta.z memset.num
|
|
lda #>$3e8
|
|
sta.z memset.num+1
|
|
jsr memset
|
|
// [104] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1]
|
|
__b1_from_bitmap_clear:
|
|
jmp __b1
|
|
// bitmap_clear::@1
|
|
__b1:
|
|
// [105] call memset
|
|
// [107] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset]
|
|
memset_from___b1:
|
|
// [107] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z memset.c
|
|
// [107] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1
|
|
lda #<BITMAP
|
|
sta.z memset.str
|
|
lda #>BITMAP
|
|
sta.z memset.str+1
|
|
// [107] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1
|
|
lda #<$1f40
|
|
sta.z memset.num
|
|
lda #>$1f40
|
|
sta.z memset.num+1
|
|
jsr memset
|
|
jmp __breturn
|
|
// bitmap_clear::@return
|
|
__breturn:
|
|
// [106] return
|
|
rts
|
|
}
|
|
// memset
|
|
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
|
// memset(void* zp($1f) str, byte zp($21) c, word zp($1d) num)
|
|
memset: {
|
|
.label end = $88
|
|
.label dst = $22
|
|
.label num = $1d
|
|
.label str = $1f
|
|
.label c = $21
|
|
// [108] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1
|
|
lda.z num
|
|
bne !+
|
|
lda.z num+1
|
|
beq __breturn
|
|
!:
|
|
jmp __b1
|
|
// memset::@1
|
|
__b1:
|
|
// [109] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz3
|
|
lda.z str
|
|
clc
|
|
adc.z num
|
|
sta.z end
|
|
lda.z str+1
|
|
adc.z num+1
|
|
sta.z end+1
|
|
// [110] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 -- pbuz1=pbuz2
|
|
lda.z str
|
|
sta.z dst
|
|
lda.z str+1
|
|
sta.z dst+1
|
|
// [111] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
|
|
__b2_from___b1:
|
|
__b2_from___b3:
|
|
// [111] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy
|
|
jmp __b2
|
|
// memset::@2
|
|
__b2:
|
|
// [112] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1
|
|
lda.z dst+1
|
|
cmp.z end+1
|
|
bne __b3
|
|
lda.z dst
|
|
cmp.z end
|
|
bne __b3
|
|
jmp __breturn
|
|
// memset::@return
|
|
__breturn:
|
|
// [113] return
|
|
rts
|
|
// memset::@3
|
|
__b3:
|
|
// [114] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuz2
|
|
lda.z c
|
|
ldy #0
|
|
sta (dst),y
|
|
// [115] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1
|
|
inc.z dst
|
|
bne !+
|
|
inc.z dst+1
|
|
!:
|
|
jmp __b2_from___b3
|
|
}
|
|
// bitmap_init
|
|
// Initialize bitmap plotting tables
|
|
bitmap_init: {
|
|
.label __4 = $8b
|
|
.label __5 = $8c
|
|
.label __6 = $8d
|
|
.label __7 = $8a
|
|
.label bits = $24
|
|
.label x = $25
|
|
.label y = $26
|
|
.label yoffs = $27
|
|
// [117] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
|
__b1_from_bitmap_init:
|
|
// [117] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z x
|
|
// [117] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1
|
|
lda #$80
|
|
sta.z bits
|
|
jmp __b1
|
|
// [117] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1]
|
|
__b1_from___b2:
|
|
// [117] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy
|
|
// [117] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy
|
|
jmp __b1
|
|
// bitmap_init::@1
|
|
__b1:
|
|
// [118] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2
|
|
lda.z bits
|
|
ldy.z x
|
|
sta bitmap_plot_bit,y
|
|
// [119] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1
|
|
lsr.z bits
|
|
// [120] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuz1_neq_0_then_la1
|
|
lda.z bits
|
|
cmp #0
|
|
bne __b6_from___b1
|
|
// [122] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2]
|
|
__b2_from___b1:
|
|
// [122] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1
|
|
lda #$80
|
|
sta.z bits
|
|
jmp __b2
|
|
// [121] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6]
|
|
__b6_from___b1:
|
|
jmp __b6
|
|
// bitmap_init::@6
|
|
__b6:
|
|
// [122] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2]
|
|
__b2_from___b6:
|
|
// [122] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy
|
|
jmp __b2
|
|
// bitmap_init::@2
|
|
__b2:
|
|
// [123] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1
|
|
inc.z x
|
|
// [124] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1
|
|
lda.z x
|
|
cmp #0
|
|
bne __b1_from___b2
|
|
// [125] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3]
|
|
__b3_from___b2:
|
|
// [125] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1
|
|
lda #<BITMAP
|
|
sta.z yoffs
|
|
lda #>BITMAP
|
|
sta.z yoffs+1
|
|
// [125] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z y
|
|
jmp __b3
|
|
// [125] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3]
|
|
__b3_from___b4:
|
|
// [125] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy
|
|
// [125] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy
|
|
jmp __b3
|
|
// bitmap_init::@3
|
|
__b3:
|
|
// [126] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1
|
|
lda #7
|
|
and.z y
|
|
sta.z __7
|
|
// [127] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2
|
|
lda.z yoffs
|
|
sta.z __4
|
|
// [128] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3
|
|
lda.z __7
|
|
ora.z __4
|
|
sta.z __5
|
|
// [129] *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2
|
|
lda.z __5
|
|
ldy.z y
|
|
sta bitmap_plot_ylo,y
|
|
// [130] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2
|
|
lda.z yoffs+1
|
|
sta.z __6
|
|
// [131] *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2
|
|
lda.z __6
|
|
ldy.z y
|
|
sta bitmap_plot_yhi,y
|
|
// [132] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #7
|
|
cmp.z __7
|
|
bne __b4_from___b3
|
|
jmp __b5
|
|
// bitmap_init::@5
|
|
__b5:
|
|
// [133] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1
|
|
clc
|
|
lda.z yoffs
|
|
adc #<$28*8
|
|
sta.z yoffs
|
|
lda.z yoffs+1
|
|
adc #>$28*8
|
|
sta.z yoffs+1
|
|
// [134] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4]
|
|
__b4_from___b3:
|
|
__b4_from___b5:
|
|
// [134] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy
|
|
jmp __b4
|
|
// bitmap_init::@4
|
|
__b4:
|
|
// [135] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1
|
|
inc.z y
|
|
// [136] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1
|
|
lda.z y
|
|
cmp #0
|
|
bne __b3_from___b4
|
|
jmp __breturn
|
|
// bitmap_init::@return
|
|
__breturn:
|
|
// [137] return
|
|
rts
|
|
}
|
|
// sin16s_gen2
|
|
// Generate signed int 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* zp($2f) sintab)
|
|
sin16s_gen2: {
|
|
.const min = -$1001
|
|
.const max = $1001
|
|
.const ampl = max-min
|
|
.label wavelength = $200
|
|
.label __6 = $9c
|
|
.label __8 = $a0
|
|
.label step = $92
|
|
.label sintab = $2f
|
|
// u[4.28]
|
|
// Iterate over the table
|
|
.label x = $2b
|
|
.label i = $29
|
|
// [139] call div32u16u
|
|
// [206] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u]
|
|
div32u16u_from_sin16s_gen2:
|
|
jsr div32u16u
|
|
// [140] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 -- vduz1=vduz2
|
|
lda.z div32u16u.return
|
|
sta.z div32u16u.return_1
|
|
lda.z div32u16u.return+1
|
|
sta.z div32u16u.return_1+1
|
|
lda.z div32u16u.return+2
|
|
sta.z div32u16u.return_1+2
|
|
lda.z div32u16u.return+3
|
|
sta.z div32u16u.return_1+3
|
|
jmp __b3
|
|
// sin16s_gen2::@3
|
|
__b3:
|
|
// [141] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 -- vduz1=vduz2
|
|
lda.z div32u16u.return_1
|
|
sta.z step
|
|
lda.z div32u16u.return_1+1
|
|
sta.z step+1
|
|
lda.z div32u16u.return_1+2
|
|
sta.z step+2
|
|
lda.z div32u16u.return_1+3
|
|
sta.z step+3
|
|
// [142] phi from sin16s_gen2::@3 to sin16s_gen2::@1 [phi:sin16s_gen2::@3->sin16s_gen2::@1]
|
|
__b1_from___b3:
|
|
// [142] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word*) SINUS [phi:sin16s_gen2::@3->sin16s_gen2::@1#0] -- pwsz1=pwsc1
|
|
lda #<SINUS
|
|
sta.z sintab
|
|
lda #>SINUS
|
|
sta.z sintab+1
|
|
// [142] phi (dword) sin16s_gen2::x#2 = (dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#1] -- vduz1=vduc1
|
|
lda #<0
|
|
sta.z x
|
|
lda #>0
|
|
sta.z x+1
|
|
lda #<0>>$10
|
|
sta.z x+2
|
|
lda #>0>>$10
|
|
sta.z x+3
|
|
// [142] phi (word) sin16s_gen2::i#2 = (word) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#2] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z i
|
|
lda #>0
|
|
sta.z i+1
|
|
jmp __b1
|
|
// u[4.28]
|
|
// sin16s_gen2::@1
|
|
__b1:
|
|
// [143] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2 -- vwuz1_lt_vwuc1_then_la1
|
|
lda.z i+1
|
|
cmp #>wavelength
|
|
bcc __b2
|
|
bne !+
|
|
lda.z i
|
|
cmp #<wavelength
|
|
bcc __b2
|
|
!:
|
|
jmp __breturn
|
|
// sin16s_gen2::@return
|
|
__breturn:
|
|
// [144] return
|
|
rts
|
|
// sin16s_gen2::@2
|
|
__b2:
|
|
// [145] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2
|
|
lda.z x
|
|
sta.z sin16s.x
|
|
lda.z x+1
|
|
sta.z sin16s.x+1
|
|
lda.z x+2
|
|
sta.z sin16s.x+2
|
|
lda.z x+3
|
|
sta.z sin16s.x+3
|
|
// [146] call sin16s
|
|
jsr sin16s
|
|
// [147] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 -- vwsz1=vwsz2
|
|
lda.z sin16s.return_1
|
|
sta.z sin16s.return
|
|
lda.z sin16s.return_1+1
|
|
sta.z sin16s.return+1
|
|
jmp __b4
|
|
// sin16s_gen2::@4
|
|
__b4:
|
|
// [148] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 -- vwsz1=vwsz2
|
|
lda.z sin16s.return
|
|
sta.z mul16s.a
|
|
lda.z sin16s.return+1
|
|
sta.z mul16s.a+1
|
|
// [149] call mul16s
|
|
// [63] phi from sin16s_gen2::@4 to mul16s [phi:sin16s_gen2::@4->mul16s]
|
|
mul16s_from___b4:
|
|
// [63] phi (signed word) mul16s::b#3 = (const signed word) sin16s_gen2::ampl#0 [phi:sin16s_gen2::@4->mul16s#0] -- vwsz1=vwsc1
|
|
lda #<ampl
|
|
sta.z mul16s.b
|
|
lda #>ampl
|
|
sta.z mul16s.b+1
|
|
// [63] phi (signed word) mul16s::a#3 = (signed word) mul16s::a#0 [phi:sin16s_gen2::@4->mul16s#1] -- register_copy
|
|
jsr mul16s
|
|
// [150] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 -- vdsz1=vdsz2
|
|
lda.z mul16s.return
|
|
sta.z mul16s.return_1
|
|
lda.z mul16s.return+1
|
|
sta.z mul16s.return_1+1
|
|
lda.z mul16s.return+2
|
|
sta.z mul16s.return_1+2
|
|
lda.z mul16s.return+3
|
|
sta.z mul16s.return_1+3
|
|
jmp __b5
|
|
// sin16s_gen2::@5
|
|
__b5:
|
|
// [151] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 -- vdsz1=vdsz2
|
|
lda.z mul16s.return_1
|
|
sta.z __6
|
|
lda.z mul16s.return_1+1
|
|
sta.z __6+1
|
|
lda.z mul16s.return_1+2
|
|
sta.z __6+2
|
|
lda.z mul16s.return_1+3
|
|
sta.z __6+3
|
|
// [152] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$6 -- vwuz1=_hi_vdsz2
|
|
lda.z __6+2
|
|
sta.z __8
|
|
lda.z __6+3
|
|
sta.z __8+1
|
|
// [153] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2
|
|
ldy #0
|
|
lda.z __8
|
|
sta (sintab),y
|
|
iny
|
|
lda.z __8+1
|
|
sta (sintab),y
|
|
// [154] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1
|
|
lda #SIZEOF_SIGNED_WORD
|
|
clc
|
|
adc.z sintab
|
|
sta.z sintab
|
|
bcc !+
|
|
inc.z sintab+1
|
|
!:
|
|
// [155] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2
|
|
lda.z x
|
|
clc
|
|
adc.z step
|
|
sta.z x
|
|
lda.z x+1
|
|
adc.z step+1
|
|
sta.z x+1
|
|
lda.z x+2
|
|
adc.z step+2
|
|
sta.z x+2
|
|
lda.z x+3
|
|
adc.z step+3
|
|
sta.z x+3
|
|
// [156] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1
|
|
inc.z i
|
|
bne !+
|
|
inc.z i+1
|
|
!:
|
|
// [142] phi from sin16s_gen2::@5 to sin16s_gen2::@1 [phi:sin16s_gen2::@5->sin16s_gen2::@1]
|
|
__b1_from___b5:
|
|
// [142] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@5->sin16s_gen2::@1#0] -- register_copy
|
|
// [142] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#1] -- register_copy
|
|
// [142] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#2] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// sin16s
|
|
// Calculate signed int sinus sin(x)
|
|
// x: unsigned long input u[4.28] in the interval $00000000 - PI2_u4f28
|
|
// result: signed int sin(x) s[0.15] - using the full range -$7fff - $7fff
|
|
// sin16s(dword zp($32) x)
|
|
sin16s: {
|
|
.label __4 = $a2
|
|
.label x = $32
|
|
.label return = $96
|
|
.label x1 = $a6
|
|
.label x2 = $aa
|
|
.label x3 = $ae
|
|
.label x3_6 = $b2
|
|
.label usinx = $b4
|
|
.label x4 = $b8
|
|
.label x5 = $bc
|
|
.label x5_128 = $be
|
|
.label usinx_1 = $c0
|
|
.label return_1 = $36
|
|
.label sinx = $36
|
|
// Move x1 into the range 0-PI/2 using sinus mirror symmetries
|
|
.label isUpper = $31
|
|
// [157] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1
|
|
lda.z x+3
|
|
cmp #>PI_u4f28>>$10
|
|
bcc __b1_from_sin16s
|
|
bne !+
|
|
lda.z x+2
|
|
cmp #<PI_u4f28>>$10
|
|
bcc __b1_from_sin16s
|
|
bne !+
|
|
lda.z x+1
|
|
cmp #>PI_u4f28
|
|
bcc __b1_from_sin16s
|
|
bne !+
|
|
lda.z x
|
|
cmp #<PI_u4f28
|
|
bcc __b1_from_sin16s
|
|
!:
|
|
jmp __b4
|
|
// sin16s::@4
|
|
__b4:
|
|
// [158] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 -- vduz1=vduz1_minus_vduc1
|
|
lda.z x
|
|
sec
|
|
sbc #<PI_u4f28
|
|
sta.z x
|
|
lda.z x+1
|
|
sbc #>PI_u4f28
|
|
sta.z x+1
|
|
lda.z x+2
|
|
sbc #<PI_u4f28>>$10
|
|
sta.z x+2
|
|
lda.z x+3
|
|
sbc #>PI_u4f28>>$10
|
|
sta.z x+3
|
|
// [159] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1]
|
|
__b1_from___b4:
|
|
// [159] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuz1=vbuc1
|
|
lda #1
|
|
sta.z isUpper
|
|
// [159] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy
|
|
jmp __b1
|
|
// [159] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1]
|
|
__b1_from_sin16s:
|
|
// [159] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z isUpper
|
|
// [159] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy
|
|
jmp __b1
|
|
// sin16s::@1
|
|
__b1:
|
|
// [160] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1
|
|
lda.z x+3
|
|
cmp #>PI_HALF_u4f28>>$10
|
|
bcc __b2_from___b1
|
|
bne !+
|
|
lda.z x+2
|
|
cmp #<PI_HALF_u4f28>>$10
|
|
bcc __b2_from___b1
|
|
bne !+
|
|
lda.z x+1
|
|
cmp #>PI_HALF_u4f28
|
|
bcc __b2_from___b1
|
|
bne !+
|
|
lda.z x
|
|
cmp #<PI_HALF_u4f28
|
|
bcc __b2_from___b1
|
|
!:
|
|
jmp __b5
|
|
// sin16s::@5
|
|
__b5:
|
|
// [161] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1
|
|
lda #<PI_u4f28
|
|
sec
|
|
sbc.z x
|
|
sta.z x
|
|
lda #>PI_u4f28
|
|
sbc.z x+1
|
|
sta.z x+1
|
|
lda #<PI_u4f28>>$10
|
|
sbc.z x+2
|
|
sta.z x+2
|
|
lda #>PI_u4f28>>$10
|
|
sbc.z x+3
|
|
sta.z x+3
|
|
// [162] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2]
|
|
__b2_from___b1:
|
|
__b2_from___b5:
|
|
// [162] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy
|
|
jmp __b2
|
|
// sin16s::@2
|
|
__b2:
|
|
// [163] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz2_rol_3
|
|
lda.z x
|
|
asl
|
|
sta.z __4
|
|
lda.z x+1
|
|
rol
|
|
sta.z __4+1
|
|
lda.z x+2
|
|
rol
|
|
sta.z __4+2
|
|
lda.z x+3
|
|
rol
|
|
sta.z __4+3
|
|
asl.z __4
|
|
rol.z __4+1
|
|
rol.z __4+2
|
|
rol.z __4+3
|
|
asl.z __4
|
|
rol.z __4+1
|
|
rol.z __4+2
|
|
rol.z __4+3
|
|
// [164] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2
|
|
lda.z __4+2
|
|
sta.z x1
|
|
lda.z __4+3
|
|
sta.z x1+1
|
|
// [165] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2
|
|
lda.z x1
|
|
sta.z mulu16_sel.v1
|
|
lda.z x1+1
|
|
sta.z mulu16_sel.v1+1
|
|
// [166] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2
|
|
lda.z x1
|
|
sta.z mulu16_sel.v2
|
|
lda.z x1+1
|
|
sta.z mulu16_sel.v2+1
|
|
// [167] call mulu16_sel
|
|
// [197] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel]
|
|
mulu16_sel_from___b2:
|
|
// [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z mulu16_sel.select
|
|
// [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy
|
|
// [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy
|
|
jsr mulu16_sel
|
|
// [168] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return_5
|
|
sta.z mulu16_sel.return
|
|
lda.z mulu16_sel.return_5+1
|
|
sta.z mulu16_sel.return+1
|
|
jmp __b7
|
|
// sin16s::@7
|
|
__b7:
|
|
// [169] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return
|
|
sta.z x2
|
|
lda.z mulu16_sel.return+1
|
|
sta.z x2+1
|
|
// [170] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 -- vwuz1=vwuz2
|
|
lda.z x2
|
|
sta.z mulu16_sel.v1
|
|
lda.z x2+1
|
|
sta.z mulu16_sel.v1+1
|
|
// [171] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2
|
|
lda.z x1
|
|
sta.z mulu16_sel.v2
|
|
lda.z x1+1
|
|
sta.z mulu16_sel.v2+1
|
|
// [172] call mulu16_sel
|
|
// [197] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel]
|
|
mulu16_sel_from___b7:
|
|
// [197] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuz1=vbuc1
|
|
lda #1
|
|
sta.z mulu16_sel.select
|
|
// [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy
|
|
// [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy
|
|
jsr mulu16_sel
|
|
// [173] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return_5
|
|
sta.z mulu16_sel.return_1
|
|
lda.z mulu16_sel.return_5+1
|
|
sta.z mulu16_sel.return_1+1
|
|
jmp __b8
|
|
// sin16s::@8
|
|
__b8:
|
|
// [174] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return_1
|
|
sta.z x3
|
|
lda.z mulu16_sel.return_1+1
|
|
sta.z x3+1
|
|
// [175] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 -- vwuz1=vwuz2
|
|
lda.z x3
|
|
sta.z mulu16_sel.v1
|
|
lda.z x3+1
|
|
sta.z mulu16_sel.v1+1
|
|
// [176] call mulu16_sel
|
|
// [197] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel]
|
|
mulu16_sel_from___b8:
|
|
// [197] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuz1=vbuc1
|
|
lda #1
|
|
sta.z mulu16_sel.select
|
|
// [197] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1
|
|
lda #<$10000/6
|
|
sta.z mulu16_sel.v2
|
|
lda #>$10000/6
|
|
sta.z mulu16_sel.v2+1
|
|
// [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy
|
|
jsr mulu16_sel
|
|
// [177] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return_5
|
|
sta.z mulu16_sel.return_2
|
|
lda.z mulu16_sel.return_5+1
|
|
sta.z mulu16_sel.return_2+1
|
|
jmp __b9
|
|
// sin16s::@9
|
|
__b9:
|
|
// [178] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return_2
|
|
sta.z x3_6
|
|
lda.z mulu16_sel.return_2+1
|
|
sta.z x3_6+1
|
|
// [179] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3
|
|
lda.z x1
|
|
sec
|
|
sbc.z x3_6
|
|
sta.z usinx
|
|
lda.z x1+1
|
|
sbc.z x3_6+1
|
|
sta.z usinx+1
|
|
// [180] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 -- vwuz1=vwuz2
|
|
lda.z x3
|
|
sta.z mulu16_sel.v1
|
|
lda.z x3+1
|
|
sta.z mulu16_sel.v1+1
|
|
// [181] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2
|
|
lda.z x1
|
|
sta.z mulu16_sel.v2
|
|
lda.z x1+1
|
|
sta.z mulu16_sel.v2+1
|
|
// [182] call mulu16_sel
|
|
// [197] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel]
|
|
mulu16_sel_from___b9:
|
|
// [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z mulu16_sel.select
|
|
// [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy
|
|
// [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy
|
|
jsr mulu16_sel
|
|
// [183] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return_5
|
|
sta.z mulu16_sel.return_3
|
|
lda.z mulu16_sel.return_5+1
|
|
sta.z mulu16_sel.return_3+1
|
|
jmp __b10
|
|
// sin16s::@10
|
|
__b10:
|
|
// [184] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return_3
|
|
sta.z x4
|
|
lda.z mulu16_sel.return_3+1
|
|
sta.z x4+1
|
|
// [185] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 -- vwuz1=vwuz2
|
|
lda.z x4
|
|
sta.z mulu16_sel.v1
|
|
lda.z x4+1
|
|
sta.z mulu16_sel.v1+1
|
|
// [186] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2
|
|
lda.z x1
|
|
sta.z mulu16_sel.v2
|
|
lda.z x1+1
|
|
sta.z mulu16_sel.v2+1
|
|
// [187] call mulu16_sel
|
|
// [197] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel]
|
|
mulu16_sel_from___b10:
|
|
// [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z mulu16_sel.select
|
|
// [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy
|
|
// [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy
|
|
jsr mulu16_sel
|
|
// [188] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return_5
|
|
sta.z mulu16_sel.return_4
|
|
lda.z mulu16_sel.return_5+1
|
|
sta.z mulu16_sel.return_4+1
|
|
jmp __b11
|
|
// sin16s::@11
|
|
__b11:
|
|
// [189] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return_4
|
|
sta.z x5
|
|
lda.z mulu16_sel.return_4+1
|
|
sta.z x5+1
|
|
// [190] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz2_ror_4
|
|
lda.z x5+1
|
|
lsr
|
|
sta.z x5_128+1
|
|
lda.z x5
|
|
ror
|
|
sta.z x5_128
|
|
lsr.z x5_128+1
|
|
ror.z x5_128
|
|
lsr.z x5_128+1
|
|
ror.z x5_128
|
|
lsr.z x5_128+1
|
|
ror.z x5_128
|
|
// [191] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz2_plus_vwuz3
|
|
lda.z usinx
|
|
clc
|
|
adc.z x5_128
|
|
sta.z usinx_1
|
|
lda.z usinx+1
|
|
adc.z x5_128+1
|
|
sta.z usinx_1+1
|
|
// [192] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuz1_eq_0_then_la1
|
|
lda.z isUpper
|
|
cmp #0
|
|
beq __b12
|
|
jmp __b6
|
|
// sin16s::@6
|
|
__b6:
|
|
// [193] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz2
|
|
sec
|
|
lda #0
|
|
sbc.z usinx_1
|
|
sta.z sinx
|
|
lda #0
|
|
sbc.z usinx_1+1
|
|
sta.z sinx+1
|
|
// [194] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3]
|
|
__b3_from___b12:
|
|
__b3_from___b6:
|
|
// [194] phi (signed word) sin16s::return#1 = (signed word) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy
|
|
jmp __b3
|
|
// sin16s::@3
|
|
__b3:
|
|
jmp __breturn
|
|
// sin16s::@return
|
|
__breturn:
|
|
// [195] return
|
|
rts
|
|
// sin16s::@12
|
|
__b12:
|
|
// [196] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 -- vwsz1=vwsz2
|
|
lda.z usinx_1
|
|
sta.z return_1
|
|
lda.z usinx_1+1
|
|
sta.z return_1+1
|
|
jmp __b3_from___b12
|
|
}
|
|
// mulu16_sel
|
|
// Calculate val*val for two unsigned int 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 zp($38) v1, word zp($3a) v2, byte zp($3c) select)
|
|
mulu16_sel: {
|
|
.label __0 = $c6
|
|
.label __1 = $ca
|
|
.label v1 = $38
|
|
.label v2 = $3a
|
|
.label return = $a8
|
|
.label return_1 = $ac
|
|
.label return_2 = $b0
|
|
.label return_3 = $b6
|
|
.label return_4 = $ba
|
|
.label select = $3c
|
|
.label return_5 = $ce
|
|
// [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2
|
|
lda.z v1
|
|
sta.z mul16u.a
|
|
lda.z v1+1
|
|
sta.z mul16u.a+1
|
|
// [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 -- vwuz1=vwuz2
|
|
lda.z v2
|
|
sta.z mul16u.b
|
|
lda.z v2+1
|
|
sta.z mul16u.b+1
|
|
// [200] call mul16u
|
|
// [81] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u]
|
|
mul16u_from_mulu16_sel:
|
|
// [81] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy
|
|
// [81] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy
|
|
jsr mul16u
|
|
// [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2 -- vduz1=vduz2
|
|
lda.z mul16u.res
|
|
sta.z mul16u.return_1
|
|
lda.z mul16u.res+1
|
|
sta.z mul16u.return_1+1
|
|
lda.z mul16u.res+2
|
|
sta.z mul16u.return_1+2
|
|
lda.z mul16u.res+3
|
|
sta.z mul16u.return_1+3
|
|
jmp __b1
|
|
// mulu16_sel::@1
|
|
__b1:
|
|
// [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 -- vduz1=vduz2
|
|
lda.z mul16u.return_1
|
|
sta.z __0
|
|
lda.z mul16u.return_1+1
|
|
sta.z __0+1
|
|
lda.z mul16u.return_1+2
|
|
sta.z __0+2
|
|
lda.z mul16u.return_1+3
|
|
sta.z __0+3
|
|
// [203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz2_rol_vbuz3
|
|
lda.z __0
|
|
sta.z __1
|
|
lda.z __0+1
|
|
sta.z __1+1
|
|
lda.z __0+2
|
|
sta.z __1+2
|
|
lda.z __0+3
|
|
sta.z __1+3
|
|
ldx.z select
|
|
beq !e+
|
|
!:
|
|
asl.z __1
|
|
rol.z __1+1
|
|
rol.z __1+2
|
|
rol.z __1+3
|
|
dex
|
|
bne !-
|
|
!e:
|
|
// [204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2
|
|
lda.z __1+2
|
|
sta.z return_5
|
|
lda.z __1+3
|
|
sta.z return_5+1
|
|
jmp __breturn
|
|
// mulu16_sel::@return
|
|
__breturn:
|
|
// [205] return
|
|
rts
|
|
}
|
|
// div32u16u
|
|
// Divide unsigned 32-bit unsigned long dividend with a 16-bit unsigned int divisor
|
|
// The 16-bit unsigned int remainder can be found in rem16u after the division
|
|
div32u16u: {
|
|
.label quotient_hi = $d2
|
|
.label quotient_lo = $d6
|
|
.label return = $d8
|
|
.label return_1 = $8e
|
|
// [207] call divr16u
|
|
// [216] phi from div32u16u to divr16u [phi:div32u16u->divr16u]
|
|
divr16u_from_div32u16u:
|
|
// [216] phi (word) divr16u::dividend#5 = >(const nomodify dword) PI2_u4f28 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1
|
|
lda #<PI2_u4f28>>$10
|
|
sta.z divr16u.dividend
|
|
lda #>PI2_u4f28>>$10
|
|
sta.z divr16u.dividend+1
|
|
// [216] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z divr16u.rem
|
|
lda #>0
|
|
sta.z divr16u.rem+1
|
|
jsr divr16u
|
|
// [208] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2
|
|
lda.z divr16u.return
|
|
sta.z divr16u.return_1
|
|
lda.z divr16u.return+1
|
|
sta.z divr16u.return_1+1
|
|
jmp __b1
|
|
// div32u16u::@1
|
|
__b1:
|
|
// [209] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2
|
|
lda.z divr16u.return_1
|
|
sta.z quotient_hi
|
|
lda.z divr16u.return_1+1
|
|
sta.z quotient_hi+1
|
|
// [210] (word) divr16u::rem#4 ← (word) rem16u#1 -- vwuz1=vwuz2
|
|
lda.z rem16u
|
|
sta.z divr16u.rem
|
|
lda.z rem16u+1
|
|
sta.z divr16u.rem+1
|
|
// [211] call divr16u
|
|
// [216] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u]
|
|
divr16u_from___b1:
|
|
// [216] phi (word) divr16u::dividend#5 = <(const nomodify dword) PI2_u4f28 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1
|
|
lda #<PI2_u4f28&$ffff
|
|
sta.z divr16u.dividend
|
|
lda #>PI2_u4f28&$ffff
|
|
sta.z divr16u.dividend+1
|
|
// [216] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy
|
|
jsr divr16u
|
|
// [212] (word) divr16u::return#3 ← (word) divr16u::return#0 -- vwuz1=vwuz2
|
|
lda.z divr16u.return
|
|
sta.z divr16u.return_2
|
|
lda.z divr16u.return+1
|
|
sta.z divr16u.return_2+1
|
|
jmp __b2
|
|
// div32u16u::@2
|
|
__b2:
|
|
// [213] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 -- vwuz1=vwuz2
|
|
lda.z divr16u.return_2
|
|
sta.z quotient_lo
|
|
lda.z divr16u.return_2+1
|
|
sta.z quotient_lo+1
|
|
// [214] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3
|
|
lda.z quotient_hi
|
|
sta.z return+2
|
|
lda.z quotient_hi+1
|
|
sta.z return+3
|
|
lda.z quotient_lo
|
|
sta.z return
|
|
lda.z quotient_lo+1
|
|
sta.z return+1
|
|
jmp __breturn
|
|
// div32u16u::@return
|
|
__breturn:
|
|
// [215] return
|
|
rts
|
|
}
|
|
// divr16u
|
|
// Performs division on two 16 bit unsigned ints and an initial remainder
|
|
// Returns the quotient dividend/divisor.
|
|
// The final remainder will be set into the global variable rem16u
|
|
// Implemented using simple binary division
|
|
// divr16u(word zp($3f) dividend, word zp($3d) rem)
|
|
divr16u: {
|
|
.label __1 = $dc
|
|
.label __2 = $dd
|
|
.label rem = $3d
|
|
.label dividend = $3f
|
|
.label quotient = $41
|
|
.label i = $43
|
|
.label return = $41
|
|
.label return_1 = $d0
|
|
.label return_2 = $d4
|
|
// [217] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
|
|
__b1_from_divr16u:
|
|
// [217] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z i
|
|
// [217] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z quotient
|
|
lda #>0
|
|
sta.z quotient+1
|
|
// [217] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy
|
|
// [217] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy
|
|
jmp __b1
|
|
// [217] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
|
|
__b1_from___b3:
|
|
// [217] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy
|
|
// [217] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy
|
|
// [217] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy
|
|
// [217] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy
|
|
jmp __b1
|
|
// divr16u::@1
|
|
__b1:
|
|
// [218] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z rem
|
|
rol.z rem+1
|
|
// [219] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuz1=_hi_vwuz2
|
|
lda.z dividend+1
|
|
sta.z __1
|
|
// [220] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuz1=vbuz2_band_vbuc1
|
|
lda #$80
|
|
and.z __1
|
|
sta.z __2
|
|
// [221] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1
|
|
lda.z __2
|
|
cmp #0
|
|
beq __b2_from___b1
|
|
jmp __b4
|
|
// divr16u::@4
|
|
__b4:
|
|
// [222] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1
|
|
lda #1
|
|
ora.z rem
|
|
sta.z rem
|
|
// [223] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
|
|
__b2_from___b1:
|
|
__b2_from___b4:
|
|
// [223] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy
|
|
jmp __b2
|
|
// divr16u::@2
|
|
__b2:
|
|
// [224] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z dividend
|
|
rol.z dividend+1
|
|
// [225] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z quotient
|
|
rol.z quotient+1
|
|
// [226] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1
|
|
lda.z rem+1
|
|
cmp #>sin16s_gen2.wavelength
|
|
bcc __b3_from___b2
|
|
bne !+
|
|
lda.z rem
|
|
cmp #<sin16s_gen2.wavelength
|
|
bcc __b3_from___b2
|
|
!:
|
|
jmp __b5
|
|
// divr16u::@5
|
|
__b5:
|
|
// [227] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1
|
|
inc.z quotient
|
|
bne !+
|
|
inc.z quotient+1
|
|
!:
|
|
// [228] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1
|
|
lda.z rem
|
|
sec
|
|
sbc #<sin16s_gen2.wavelength
|
|
sta.z rem
|
|
lda.z rem+1
|
|
sbc #>sin16s_gen2.wavelength
|
|
sta.z rem+1
|
|
// [229] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
|
|
__b3_from___b2:
|
|
__b3_from___b5:
|
|
// [229] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy
|
|
// [229] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy
|
|
jmp __b3
|
|
// divr16u::@3
|
|
__b3:
|
|
// [230] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1
|
|
inc.z i
|
|
// [231] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #$10
|
|
cmp.z i
|
|
bne __b1_from___b3
|
|
jmp __b6
|
|
// divr16u::@6
|
|
__b6:
|
|
// [232] (word) rem16u#1 ← (word) divr16u::rem#11 -- vwuz1=vwuz2
|
|
lda.z rem
|
|
sta.z rem16u
|
|
lda.z rem+1
|
|
sta.z rem16u+1
|
|
jmp __breturn
|
|
// divr16u::@return
|
|
__breturn:
|
|
// [233] return
|
|
rts
|
|
}
|
|
// irq
|
|
// Interrupt Routine counting frames
|
|
irq: {
|
|
// entry interrupt(HARDWARE_CLOBBER)
|
|
sta rega+1
|
|
stx regx+1
|
|
sty regy+1
|
|
// [234] *((const nomodify byte*) BG_COLOR) ← (const nomodify byte) WHITE -- _deref_pbuc1=vbuc2
|
|
lda #WHITE
|
|
sta BG_COLOR
|
|
// [235] if((byte) 0==(volatile byte) frame_cnt) goto irq::@1 -- vbuc1_eq_vbuz1_then_la1
|
|
lda #0
|
|
cmp.z frame_cnt
|
|
beq __b1
|
|
jmp __b2
|
|
// irq::@2
|
|
__b2:
|
|
// [236] (volatile byte) frame_cnt ← ++ (volatile byte) frame_cnt -- vbuz1=_inc_vbuz1
|
|
inc.z frame_cnt
|
|
jmp __b1
|
|
// irq::@1
|
|
__b1:
|
|
// [237] *((const nomodify byte*) BG_COLOR) ← (const nomodify byte) BLACK -- _deref_pbuc1=vbuc2
|
|
lda #BLACK
|
|
sta BG_COLOR
|
|
// [238] *((const nomodify byte*) IRQ_STATUS) ← (const nomodify byte) IRQ_RASTER -- _deref_pbuc1=vbuc2
|
|
// Acknowledge the IRQ
|
|
lda #IRQ_RASTER
|
|
sta IRQ_STATUS
|
|
jmp __breturn
|
|
// irq::@return
|
|
__breturn:
|
|
// [239] return - exit interrupt(HARDWARE_CLOBBER)
|
|
rega:
|
|
lda #00
|
|
regx:
|
|
ldx #00
|
|
regy:
|
|
ldy #00
|
|
rti
|
|
}
|
|
// File Data
|
|
// Tables for the plotter - initialized by calling bitmap_init();
|
|
bitmap_plot_ylo: .fill $100, 0
|
|
bitmap_plot_yhi: .fill $100, 0
|
|
bitmap_plot_bit: .fill $100, 0
|
|
plots_per_frame: .fill $100, 0
|
|
.align $100
|
|
SINUS: .fill 2*$200, 0
|
|
|
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
|
Equivalence Class zp[1]:139 [ bitmap_init::$4 ] has ALU potential.
|
|
Statement [1] (volatile byte) frame_cnt ← (byte) 1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [11] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [13] *((const nomodify byte*) D018) ← (const byte) main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [16] (word~) main::$26 ← (word) main::idx_x#11 << (byte) 1 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$26 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$26 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ]
|
|
Statement [17] (signed word*~) main::$30 ← (const signed word*) SINUS + (word~) main::$26 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$30 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$30 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
|
|
Statement [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$30) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ]
|
|
Statement [19] (signed word) mul16s::a#1 ← (signed word) main::r#10 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 mul16s::a#1 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 mul16s::a#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
|
|
Statement [20] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#1 mul16s::b#1 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#1 mul16s::b#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
|
|
Statement [22] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#3 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#3 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
|
|
Statement [23] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::xpos#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::xpos#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [24] (word~) main::$28 ← > (signed dword) main::xpos#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$28 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$28 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [25] (signed word~) main::$7 ← (signed word)(word~) main::$28 >> (signed byte) 2 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$7 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$7 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [26] (signed word) main::x#0 ← (signed word) $a0 + (signed word~) main::$7 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [27] (word~) main::$27 ← (word) main::idx_y#3 << (byte) 1 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$27 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$27 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [28] (signed word*~) main::$31 ← (const signed word*) SINUS + (word~) main::$27 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$31 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$31 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [29] (signed word) main::sin_y#0 ← *((signed word*~) main::$31) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a reg byte y
|
|
Statement [30] (signed word) mul16s::a#2 ← (signed word) main::r#10 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 mul16s::a#2 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 mul16s::a#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [31] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#2 mul16s::b#2 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#2 mul16s::b#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [33] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#4 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#4 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [34] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::ypos#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::ypos#0 ] { } ) always clobbers reg byte a
|
|
Statement [35] (word~) main::$29 ← > (signed dword) main::ypos#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$29 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$29 ] { } ) always clobbers reg byte a
|
|
Statement [36] (signed word~) main::$11 ← (signed word)(word~) main::$29 >> (signed byte) 2 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$11 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$11 ] { } ) always clobbers reg byte a
|
|
Statement [37] (signed word) main::y#0 ← (signed byte) $64 + (signed word~) main::$11 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::y#0 ] { } ) always clobbers reg byte a
|
|
Statement [38] (word) bitmap_plot::x#0 ← (word)(signed word) main::x#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::y#0 bitmap_plot::x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::y#0 bitmap_plot::x#0 ] { } ) always clobbers reg byte a
|
|
Statement [39] (byte) bitmap_plot::y#0 ← (byte)(word)(signed word) main::y#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::y#0 ] { } ) always clobbers reg byte a
|
|
Statement [41] *((const byte*) plots_per_frame + (volatile byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (volatile byte) frame_cnt) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] { } ) always clobbers reg byte x
|
|
Removing always clobbered register reg byte x as potential for zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ]
|
|
Statement [42] (word) main::idx_x#1 ← (word) main::idx_x#11 + (byte) main::r_add#10 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ( main:3 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] { } ) always clobbers reg byte a
|
|
Statement [43] if((word) main::idx_x#1<(word) $200) goto main::@16 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ( main:3 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] { } ) always clobbers reg byte a
|
|
Statement [46] (word) main::idx_y#1 ← (word) main::idx_y#3 + (byte) main::r_add#10 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] { } ) always clobbers reg byte a
|
|
Statement [47] if((word) main::idx_y#1<(word) $200) goto main::@17 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] { } ) always clobbers reg byte a
|
|
Statement [50] (signed word) main::r#1 ← (signed word) main::r#10 + (byte) main::r_add#10 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] { } ) always clobbers reg byte a
|
|
Statement [51] if((word) main::idx_x#10!=(byte) 0) goto main::@5 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] { } ) always clobbers reg byte a
|
|
Statement [52] if((byte) main::r_add#10==(byte) 1) goto main::@5 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] { } ) always clobbers reg byte a
|
|
Statement [55] if((signed word) main::r#1>=(signed word)(number) $200*(number) $c+(number) $100) goto main::@7 [ frame_cnt main::idx_x#10 main::r#1 main::idx_y#10 main::r_add#12 ] ( main:3 [ frame_cnt main::idx_x#10 main::r#1 main::idx_y#10 main::r_add#12 ] { } ) always clobbers reg byte a
|
|
Statement [57] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#0 ] { } ) always clobbers reg byte a
|
|
Statement [58] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] { } ) always clobbers reg byte a
|
|
Statement [59] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { } ) always clobbers reg byte a
|
|
Statement [61] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) [ ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [64] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [65] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [67] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#3 mul16s::b#3 mul16u::return#2 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [68] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [69] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [70] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$6 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$6 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$6 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$6 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [71] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$11 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$11 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$11 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$11 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [72] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 [ mul16s::a#3 mul16s::b#3 mul16s::m#1 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [74] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#3 mul16s::m#5 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::m#5 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::m#5 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [75] (word~) mul16s::$9 ← > (dword) mul16s::m#5 [ mul16s::a#3 mul16s::m#5 mul16s::$9 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::m#5 mul16s::$9 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::m#5 mul16s::$9 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 mul16s::$9 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [76] (word~) mul16s::$12 ← (word~) mul16s::$9 - (word)(signed word) mul16s::a#3 [ mul16s::m#5 mul16s::$12 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::m#5 mul16s::$12 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::m#5 mul16s::$12 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#5 mul16s::$12 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [77] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$12 [ mul16s::m#2 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::m#2 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::m#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [79] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [82] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:49 [ sin16s::isUpper#2 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:60 [ mulu16_sel::select#5 ]
|
|
Statement [84] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [86] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [88] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [93] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [94] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [95] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [96] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [97] *((const nomodify byte*) RASTER) ← (byte) 0 [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [98] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [99] *((const nomodify void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [108] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:33 [ memset::c#4 ]
|
|
Statement [109] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a
|
|
Statement [110] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a
|
|
Statement [112] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a
|
|
Statement [114] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:33 [ memset::c#4 ]
|
|
Statement [133] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:8 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:38 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
|
Statement [140] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a
|
|
Statement [141] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 ] { } ) always clobbers reg byte a
|
|
Statement [143] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a
|
|
Statement [145] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [147] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [148] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [150] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [151] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] { } ) always clobbers reg byte a
|
|
Statement [152] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$8 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$8 ] { } ) always clobbers reg byte a
|
|
Statement [153] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [154] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a
|
|
Statement [155] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a
|
|
Statement [157] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [158] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 [ sin16s::x#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [160] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [161] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [163] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [164] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [165] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [166] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [168] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [169] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [170] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [171] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [173] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [174] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a
|
|
Statement [175] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a
|
|
Statement [177] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a
|
|
Statement [178] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [179] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [180] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [181] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [183] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [184] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [185] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [186] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [188] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [189] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [190] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [191] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [193] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [196] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [208] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a
|
|
Statement [209] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [210] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [212] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [213] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a
|
|
Statement [214] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a
|
|
Statement [222] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:67 [ divr16u::i#2 divr16u::i#1 ]
|
|
Statement [226] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [228] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [232] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [234] *((const nomodify byte*) BG_COLOR) ← (const nomodify byte) WHITE [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [235] if((byte) 0==(volatile byte) frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [237] *((const nomodify byte*) BG_COLOR) ← (const nomodify byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [238] *((const nomodify byte*) IRQ_STATUS) ← (const nomodify byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [239] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
|
|
Statement [1] (volatile byte) frame_cnt ← (byte) 1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [11] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [13] *((const nomodify byte*) D018) ← (const byte) main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [16] (word~) main::$26 ← (word) main::idx_x#11 << (byte) 1 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$26 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$26 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
|
|
Statement [17] (signed word*~) main::$30 ← (const signed word*) SINUS + (word~) main::$26 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$30 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$30 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
|
|
Statement [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$30) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a reg byte y
|
|
Statement [19] (signed word) mul16s::a#1 ← (signed word) main::r#10 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 mul16s::a#1 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::cos_x#0 mul16s::a#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
|
|
Statement [20] (signed word) mul16s::b#1 ← (signed word) main::cos_x#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#1 mul16s::b#1 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#1 mul16s::b#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
|
|
Statement [22] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#3 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#3 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } ) always clobbers reg byte a
|
|
Statement [23] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::xpos#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::xpos#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [24] (word~) main::$28 ← > (signed dword) main::xpos#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$28 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$28 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [25] (signed word~) main::$7 ← (signed word)(word~) main::$28 >> (signed byte) 2 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$7 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::$7 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [26] (signed word) main::x#0 ← (signed word) $a0 + (signed word~) main::$7 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [27] (word~) main::$27 ← (word) main::idx_y#3 << (byte) 1 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$27 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$27 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [28] (signed word*~) main::$31 ← (const signed word*) SINUS + (word~) main::$27 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$31 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$31 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [29] (signed word) main::sin_y#0 ← *((signed word*~) main::$31) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a reg byte y
|
|
Statement [30] (signed word) mul16s::a#2 ← (signed word) main::r#10 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 mul16s::a#2 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::sin_y#0 mul16s::a#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [31] (signed word) mul16s::b#2 ← (signed word) main::sin_y#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#2 mul16s::b#2 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#2 mul16s::b#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [33] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#4 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#4 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } ) always clobbers reg byte a
|
|
Statement [34] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::ypos#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::ypos#0 ] { } ) always clobbers reg byte a
|
|
Statement [35] (word~) main::$29 ← > (signed dword) main::ypos#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$29 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$29 ] { } ) always clobbers reg byte a
|
|
Statement [36] (signed word~) main::$11 ← (signed word)(word~) main::$29 >> (signed byte) 2 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$11 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::$11 ] { } ) always clobbers reg byte a
|
|
Statement [37] (signed word) main::y#0 ← (signed byte) $64 + (signed word~) main::$11 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 main::y#0 ] { } ) always clobbers reg byte a
|
|
Statement [38] (word) bitmap_plot::x#0 ← (word)(signed word) main::x#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::y#0 bitmap_plot::x#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::y#0 bitmap_plot::x#0 ] { } ) always clobbers reg byte a
|
|
Statement [39] (byte) bitmap_plot::y#0 ← (byte)(word)(signed word) main::y#0 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::y#0 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::y#0 ] { } ) always clobbers reg byte a
|
|
Statement [41] *((const byte*) plots_per_frame + (volatile byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (volatile byte) frame_cnt) [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] ( main:3 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] { } ) always clobbers reg byte x
|
|
Statement [42] (word) main::idx_x#1 ← (word) main::idx_x#11 + (byte) main::r_add#10 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ( main:3 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] { } ) always clobbers reg byte a
|
|
Statement [43] if((word) main::idx_x#1<(word) $200) goto main::@16 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] ( main:3 [ frame_cnt main::r#10 main::idx_y#3 main::r_add#10 main::idx_x#1 ] { } ) always clobbers reg byte a
|
|
Statement [46] (word) main::idx_y#1 ← (word) main::idx_y#3 + (byte) main::r_add#10 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] { } ) always clobbers reg byte a
|
|
Statement [47] if((word) main::idx_y#1<(word) $200) goto main::@17 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] ( main:3 [ frame_cnt main::r#10 main::r_add#10 main::idx_x#10 main::idx_y#1 ] { } ) always clobbers reg byte a
|
|
Statement [50] (signed word) main::r#1 ← (signed word) main::r#10 + (byte) main::r_add#10 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] { } ) always clobbers reg byte a
|
|
Statement [51] if((word) main::idx_x#10!=(byte) 0) goto main::@5 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] { } ) always clobbers reg byte a
|
|
Statement [52] if((byte) main::r_add#10==(byte) 1) goto main::@5 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] ( main:3 [ frame_cnt main::r_add#10 main::idx_x#10 main::r#1 main::idx_y#10 ] { } ) always clobbers reg byte a
|
|
Statement [55] if((signed word) main::r#1>=(signed word)(number) $200*(number) $c+(number) $100) goto main::@7 [ frame_cnt main::idx_x#10 main::r#1 main::idx_y#10 main::r_add#12 ] ( main:3 [ frame_cnt main::idx_x#10 main::r#1 main::idx_y#10 main::r_add#12 ] { } ) always clobbers reg byte a
|
|
Statement [57] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::plotter#0 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#0 ] { } ) always clobbers reg byte a
|
|
Statement [58] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$0 ] { } ) always clobbers reg byte a
|
|
Statement [59] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { } ) always clobbers reg byte a
|
|
Statement [61] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) [ ] ( main:3::bitmap_plot:40 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [64] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [65] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#1 mul16u::b#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [67] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#3 mul16s::b#3 mul16u::return#2 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::return#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [68] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [69] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [70] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$6 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$6 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$6 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$6 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [71] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#3 [ mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$11 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$11 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$11 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#0 mul16s::$11 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [72] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 [ mul16s::a#3 mul16s::b#3 mul16s::m#1 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16s::m#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [74] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2 [ mul16s::a#3 mul16s::m#5 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::m#5 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::m#5 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [75] (word~) mul16s::$9 ← > (dword) mul16s::m#5 [ mul16s::a#3 mul16s::m#5 mul16s::$9 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::m#5 mul16s::$9 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::m#5 mul16s::$9 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::m#5 mul16s::$9 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [76] (word~) mul16s::$12 ← (word~) mul16s::$9 - (word)(signed word) mul16s::a#3 [ mul16s::m#5 mul16s::$12 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::m#5 mul16s::$12 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::m#5 mul16s::$12 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#5 mul16s::$12 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [77] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$12 [ mul16s::m#2 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::m#2 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::m#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::m#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [79] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4 [ mul16s::return#0 ] ( main:3::mul16s:21 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::return#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } } main:3::mul16s:32 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::return#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } } main:3::sin16s_gen2:6::mul16s:149 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [82] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#6 mul16u::mb#0 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [84] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [86] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [88] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:3::mul16s:21::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#1 = mul16s::a#3 main::r#10 } { mul16s::b#1 = mul16s::b#3 main::cos_x#0 } { mul16s::return#0 = mul16s::return#3 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::mul16s:32::mul16u:66 [ frame_cnt main::idx_x#11 main::r#10 main::idx_y#3 main::r_add#10 main::x#0 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#2 = mul16s::a#3 main::r#10 } { mul16s::b#2 = mul16s::b#3 main::sin_y#0 } { mul16s::return#0 = mul16s::return#4 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::mul16s:149::mul16u:66 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::a#3 mul16s::b#3 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } { mul16u::b#0 = mul16u::b#2 } { mul16u::a#1 = mul16u::a#6 } { mul16u::return#2 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187::mul16u:200 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [93] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [94] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [95] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [96] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) | (byte) $80 [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [97] *((const nomodify byte*) RASTER) ← (byte) 0 [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [98] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [99] *((const nomodify void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() [ ] ( main:3::init_irq:14 [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [108] if((word) memset::num#2<=(byte) 0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a
|
|
Statement [109] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a
|
|
Statement [110] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a
|
|
Statement [112] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a
|
|
Statement [114] *((byte*) memset::dst#2) ← (byte) memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:10::memset:103 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:10::memset:105 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [126] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:3::bitmap_init:8 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] { } ) always clobbers reg byte a
|
|
Statement [133] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:8 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a
|
|
Statement [140] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt div32u16u::return#2 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a
|
|
Statement [141] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 ] { } ) always clobbers reg byte a
|
|
Statement [143] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a
|
|
Statement [145] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [147] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [148] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt mul16s::a#0 sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [150] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 mul16s::return#2 ] { { mul16s::a#0 = mul16s::a#3 sin16s::return#0 } { mul16s::return#0 = mul16s::return#2 } } ) always clobbers reg byte a
|
|
Statement [151] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$6 ] { } ) always clobbers reg byte a
|
|
Statement [152] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$8 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::$8 ] { } ) always clobbers reg byte a
|
|
Statement [153] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 ] { } ) always clobbers reg byte a reg byte y
|
|
Statement [154] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a
|
|
Statement [155] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:3::sin16s_gen2:6 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] { } ) always clobbers reg byte a
|
|
Statement [157] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 [ sin16s::x#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [158] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 [ sin16s::x#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [160] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::x#4 sin16s::isUpper#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [161] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [163] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 [ sin16s::isUpper#2 sin16s::$4 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::$4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [164] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [165] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [166] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [168] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [169] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [170] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [171] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [173] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [174] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a
|
|
Statement [175] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a
|
|
Statement [177] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } ) always clobbers reg byte a
|
|
Statement [178] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [179] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [180] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [181] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [183] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [184] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [185] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [186] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [188] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [189] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [190] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [191] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [193] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::sinx#1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [196] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:3::sin16s_gen2:6::sin16s:146 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::return#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } } ) always clobbers reg byte a
|
|
Statement [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#0 = mulu16_sel::return#12 } { mul16u::a#2 = mul16u::a#6 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#0 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#1 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#1 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#1 sin16s::x2#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#12 = mulu16_sel::return#2 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#2 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#10 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#3 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#3 sin16s::x3#0 } { mul16u::return#3 = mul16u::res#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::return#11 = mulu16_sel::return#12 } { mul16u::b#1 = mul16u::b#2 mulu16_sel::v2#5 mulu16_sel::v2#4 sin16s::x1#0 } { mul16u::a#2 = mul16u::a#6 mulu16_sel::v1#5 mulu16_sel::v1#4 sin16s::x4#0 } { mul16u::return#3 = mul16u::res#2 } } ) always clobbers reg byte a
|
|
Statement [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:167 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v2#0 = mulu16_sel::v2#5 mulu16_sel::v1#5 mulu16_sel::v1#0 sin16s::x1#0 } { mulu16_sel::return#0 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:172 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#1 = mulu16_sel::v1#5 sin16s::x2#0 } { mulu16_sel::v2#1 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#1 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:176 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#2 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::return#12 = mulu16_sel::return#2 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:182 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#3 = mulu16_sel::v1#5 sin16s::x3#0 } { mulu16_sel::v2#3 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#10 = mulu16_sel::return#12 } } main:3::sin16s_gen2:6::sin16s:146::mulu16_sel:187 [ frame_cnt sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] { { sin16s::x#0 = sin16s_gen2::x#2 } { sin16s::return#0 = sin16s::return#1 } { mulu16_sel::v1#4 = mulu16_sel::v1#5 sin16s::x4#0 } { mulu16_sel::v2#4 = mulu16_sel::v2#5 sin16s::x1#0 } { mulu16_sel::return#11 = mulu16_sel::return#12 } } ) always clobbers reg byte a
|
|
Statement [208] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt divr16u::return#2 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } ) always clobbers reg byte a
|
|
Statement [209] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [210] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 divr16u::rem#4 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [212] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#3 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [213] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a
|
|
Statement [214] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:3::sin16s_gen2:6::div32u16u:139 [ frame_cnt div32u16u::return#0 ] { { div32u16u::return#0 = div32u16u::return#2 } } ) always clobbers reg byte a
|
|
Statement [222] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [226] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [228] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [232] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:3::sin16s_gen2:6::div32u16u:139::divr16u:207 [ frame_cnt divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::return#0 = divr16u::return#2 } } main:3::sin16s_gen2:6::div32u16u:139::divr16u:211 [ frame_cnt div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] { { div32u16u::return#0 = div32u16u::return#2 } { divr16u::rem#10 = divr16u::rem#4 rem16u#1 } { divr16u::return#0 = divr16u::return#3 } } ) always clobbers reg byte a
|
|
Statement [234] *((const nomodify byte*) BG_COLOR) ← (const nomodify byte) WHITE [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [235] if((byte) 0==(volatile byte) frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
|
Statement [237] *((const nomodify byte*) BG_COLOR) ← (const nomodify byte) BLACK [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [238] *((const nomodify byte*) IRQ_STATUS) ← (const nomodify byte) IRQ_RASTER [ ] ( [ ] { } ) always clobbers reg byte a
|
|
Statement [239] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x reg byte y
|
|
Potential registers zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ] : zp[2]:2 ,
|
|
Potential registers zp[2]:4 [ main::r#10 main::r#1 ] : zp[2]:4 ,
|
|
Potential registers zp[2]:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] : zp[2]:6 ,
|
|
Potential registers zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] : zp[1]:8 ,
|
|
Potential registers zp[2]:9 [ mul16s::a#3 mul16s::a#2 mul16s::a#1 mul16s::a#0 ] : zp[2]:9 ,
|
|
Potential registers zp[2]:11 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 ] : zp[2]:11 ,
|
|
Potential registers zp[4]:13 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] : zp[4]:13 ,
|
|
Potential registers zp[2]:17 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] : zp[2]:17 ,
|
|
Potential registers zp[2]:19 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] : zp[2]:19 ,
|
|
Potential registers zp[4]:21 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] : zp[4]:21 ,
|
|
Potential registers zp[4]:25 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] : zp[4]:25 ,
|
|
Potential registers zp[2]:29 [ memset::num#2 ] : zp[2]:29 ,
|
|
Potential registers zp[2]:31 [ memset::str#3 ] : zp[2]:31 ,
|
|
Potential registers zp[1]:33 [ memset::c#4 ] : zp[1]:33 , reg byte x ,
|
|
Potential registers zp[2]:34 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:34 ,
|
|
Potential registers zp[1]:36 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp[1]:36 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:37 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp[1]:37 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:38 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp[1]:38 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:39 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp[2]:39 ,
|
|
Potential registers zp[2]:41 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] : zp[2]:41 ,
|
|
Potential registers zp[4]:43 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] : zp[4]:43 ,
|
|
Potential registers zp[2]:47 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] : zp[2]:47 ,
|
|
Potential registers zp[1]:49 [ sin16s::isUpper#2 ] : zp[1]:49 , reg byte x , reg byte y ,
|
|
Potential registers zp[4]:50 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] : zp[4]:50 ,
|
|
Potential registers zp[2]:54 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] : zp[2]:54 ,
|
|
Potential registers zp[2]:56 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ] : zp[2]:56 ,
|
|
Potential registers zp[2]:58 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ] : zp[2]:58 ,
|
|
Potential registers zp[1]:60 [ mulu16_sel::select#5 ] : zp[1]:60 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:61 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] : zp[2]:61 ,
|
|
Potential registers zp[2]:63 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] : zp[2]:63 ,
|
|
Potential registers zp[2]:65 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] : zp[2]:65 ,
|
|
Potential registers zp[1]:67 [ divr16u::i#2 divr16u::i#1 ] : zp[1]:67 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:68 [ frame_cnt ] : zp[1]:68 ,
|
|
Potential registers zp[2]:69 [ main::$26 ] : zp[2]:69 ,
|
|
Potential registers zp[2]:71 [ main::$30 ] : zp[2]:71 ,
|
|
Potential registers zp[2]:73 [ main::cos_x#0 ] : zp[2]:73 ,
|
|
Potential registers zp[4]:75 [ mul16s::return#3 ] : zp[4]:75 ,
|
|
Potential registers zp[4]:79 [ main::xpos#0 ] : zp[4]:79 ,
|
|
Potential registers zp[2]:83 [ main::$28 ] : zp[2]:83 ,
|
|
Potential registers zp[2]:85 [ main::$7 ] : zp[2]:85 ,
|
|
Potential registers zp[2]:87 [ main::x#0 ] : zp[2]:87 ,
|
|
Potential registers zp[2]:89 [ main::$27 ] : zp[2]:89 ,
|
|
Potential registers zp[2]:91 [ main::$31 ] : zp[2]:91 ,
|
|
Potential registers zp[2]:93 [ main::sin_y#0 ] : zp[2]:93 ,
|
|
Potential registers zp[4]:95 [ mul16s::return#4 ] : zp[4]:95 ,
|
|
Potential registers zp[4]:99 [ main::ypos#0 ] : zp[4]:99 ,
|
|
Potential registers zp[2]:103 [ main::$29 ] : zp[2]:103 ,
|
|
Potential registers zp[2]:105 [ main::$11 ] : zp[2]:105 ,
|
|
Potential registers zp[2]:107 [ main::y#0 ] : zp[2]:107 ,
|
|
Potential registers zp[2]:109 [ bitmap_plot::x#0 ] : zp[2]:109 ,
|
|
Potential registers zp[1]:111 [ bitmap_plot::y#0 ] : zp[1]:111 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:112 [ bitmap_plot::plotter#0 ] : zp[2]:112 ,
|
|
Potential registers zp[2]:114 [ bitmap_plot::$0 ] : zp[2]:114 ,
|
|
Potential registers zp[2]:116 [ bitmap_plot::plotter#1 ] : zp[2]:116 ,
|
|
Potential registers zp[1]:118 [ bitmap_plot::$1 ] : zp[1]:118 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[4]:119 [ mul16u::return#2 ] : zp[4]:119 ,
|
|
Potential registers zp[2]:123 [ mul16s::$6 ] : zp[2]:123 ,
|
|
Potential registers zp[2]:125 [ mul16s::$11 ] : zp[2]:125 ,
|
|
Potential registers zp[2]:127 [ mul16s::$9 ] : zp[2]:127 ,
|
|
Potential registers zp[2]:129 [ mul16s::$12 ] : zp[2]:129 ,
|
|
Potential registers zp[4]:131 [ mul16s::return#0 ] : zp[4]:131 ,
|
|
Potential registers zp[1]:135 [ mul16u::$1 ] : zp[1]:135 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:136 [ memset::end#0 ] : zp[2]:136 ,
|
|
Potential registers zp[1]:138 [ bitmap_init::$7 ] : zp[1]:138 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:139 [ bitmap_init::$4 ] : zp[1]:139 , reg byte a , reg byte x , reg byte y , reg byte alu ,
|
|
Potential registers zp[1]:140 [ bitmap_init::$5 ] : zp[1]:140 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:141 [ bitmap_init::$6 ] : zp[1]:141 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[4]:142 [ div32u16u::return#2 ] : zp[4]:142 ,
|
|
Potential registers zp[4]:146 [ sin16s_gen2::step#0 ] : zp[4]:146 ,
|
|
Potential registers zp[2]:150 [ sin16s::return#0 ] : zp[2]:150 ,
|
|
Potential registers zp[4]:152 [ mul16s::return#2 ] : zp[4]:152 ,
|
|
Potential registers zp[4]:156 [ sin16s_gen2::$6 ] : zp[4]:156 ,
|
|
Potential registers zp[2]:160 [ sin16s_gen2::$8 ] : zp[2]:160 ,
|
|
Potential registers zp[4]:162 [ sin16s::$4 ] : zp[4]:162 ,
|
|
Potential registers zp[2]:166 [ sin16s::x1#0 ] : zp[2]:166 ,
|
|
Potential registers zp[2]:168 [ mulu16_sel::return#0 ] : zp[2]:168 ,
|
|
Potential registers zp[2]:170 [ sin16s::x2#0 ] : zp[2]:170 ,
|
|
Potential registers zp[2]:172 [ mulu16_sel::return#1 ] : zp[2]:172 ,
|
|
Potential registers zp[2]:174 [ sin16s::x3#0 ] : zp[2]:174 ,
|
|
Potential registers zp[2]:176 [ mulu16_sel::return#2 ] : zp[2]:176 ,
|
|
Potential registers zp[2]:178 [ sin16s::x3_6#0 ] : zp[2]:178 ,
|
|
Potential registers zp[2]:180 [ sin16s::usinx#0 ] : zp[2]:180 ,
|
|
Potential registers zp[2]:182 [ mulu16_sel::return#10 ] : zp[2]:182 ,
|
|
Potential registers zp[2]:184 [ sin16s::x4#0 ] : zp[2]:184 ,
|
|
Potential registers zp[2]:186 [ mulu16_sel::return#11 ] : zp[2]:186 ,
|
|
Potential registers zp[2]:188 [ sin16s::x5#0 ] : zp[2]:188 ,
|
|
Potential registers zp[2]:190 [ sin16s::x5_128#0 ] : zp[2]:190 ,
|
|
Potential registers zp[2]:192 [ sin16s::usinx#1 ] : zp[2]:192 ,
|
|
Potential registers zp[4]:194 [ mul16u::return#3 ] : zp[4]:194 ,
|
|
Potential registers zp[4]:198 [ mulu16_sel::$0 ] : zp[4]:198 ,
|
|
Potential registers zp[4]:202 [ mulu16_sel::$1 ] : zp[4]:202 ,
|
|
Potential registers zp[2]:206 [ mulu16_sel::return#12 ] : zp[2]:206 ,
|
|
Potential registers zp[2]:208 [ divr16u::return#2 ] : zp[2]:208 ,
|
|
Potential registers zp[2]:210 [ div32u16u::quotient_hi#0 ] : zp[2]:210 ,
|
|
Potential registers zp[2]:212 [ divr16u::return#3 ] : zp[2]:212 ,
|
|
Potential registers zp[2]:214 [ div32u16u::quotient_lo#0 ] : zp[2]:214 ,
|
|
Potential registers zp[4]:216 [ div32u16u::return#0 ] : zp[4]:216 ,
|
|
Potential registers zp[1]:220 [ divr16u::$1 ] : zp[1]:220 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:221 [ divr16u::$2 ] : zp[1]:221 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:222 [ rem16u#1 ] : zp[2]:222 ,
|
|
|
|
REGISTER UPLIFT SCOPES
|
|
Uplift Scope [mul16u] 342,872,860.86: zp[4]:21 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] 245,000,004.57: zp[4]:25 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] 200,000,002: zp[1]:135 [ mul16u::$1 ] 167,498,338.67: zp[2]:19 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] 330,006: zp[2]:17 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] 200,002: zp[4]:194 [ mul16u::return#3 ] 20,002: zp[4]:119 [ mul16u::return#2 ]
|
|
Uplift Scope [divr16u] 901,347.42: zp[2]:61 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 318,146.32: zp[2]:65 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 200,002: zp[1]:220 [ divr16u::$1 ] 200,002: zp[1]:221 [ divr16u::$2 ] 165,386.27: zp[1]:67 [ divr16u::i#2 divr16u::i#1 ] 79,287.54: zp[2]:63 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] 2,002: zp[2]:208 [ divr16u::return#2 ] 2,002: zp[2]:212 [ divr16u::return#3 ]
|
|
Uplift Scope [mulu16_sel] 210,012: zp[2]:56 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ] 200,002: zp[4]:198 [ mulu16_sel::$0 ] 200,002: zp[4]:202 [ mulu16_sel::$1 ] 150,010.5: zp[2]:58 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ] 21,429.43: zp[2]:206 [ mulu16_sel::return#12 ] 20,002: zp[2]:168 [ mulu16_sel::return#0 ] 20,002: zp[2]:172 [ mulu16_sel::return#1 ] 20,002: zp[2]:176 [ mulu16_sel::return#2 ] 20,002: zp[2]:182 [ mulu16_sel::return#10 ] 20,002: zp[2]:186 [ mulu16_sel::return#11 ] 16,666.83: zp[1]:60 [ mulu16_sel::select#5 ]
|
|
Uplift Scope [sin16s] 110,511.5: zp[4]:50 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] 47,005: zp[2]:54 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] 20,002: zp[4]:162 [ sin16s::$4 ] 20,002: zp[2]:170 [ sin16s::x2#0 ] 20,002: zp[2]:178 [ sin16s::x3_6#0 ] 20,002: zp[2]:184 [ sin16s::x4#0 ] 20,002: zp[2]:188 [ sin16s::x5#0 ] 20,002: zp[2]:190 [ sin16s::x5_128#0 ] 5,000.5: zp[2]:174 [ sin16s::x3#0 ] 5,000.5: zp[2]:192 [ sin16s::usinx#1 ] 3,182.14: zp[2]:166 [ sin16s::x1#0 ] 2,002: zp[2]:150 [ sin16s::return#0 ] 1,666.83: zp[2]:180 [ sin16s::usinx#0 ] 303.06: zp[1]:49 [ sin16s::isUpper#2 ]
|
|
Uplift Scope [mul16s] 82,508.25: zp[4]:13 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] 20,002: zp[2]:123 [ mul16s::$6 ] 20,002: zp[2]:125 [ mul16s::$11 ] 20,002: zp[2]:127 [ mul16s::$9 ] 20,002: zp[2]:129 [ mul16s::$12 ] 3,065.85: zp[2]:9 [ mul16s::a#3 mul16s::a#2 mul16s::a#1 mul16s::a#0 ] 2,240.8: zp[4]:131 [ mul16s::return#0 ] 2,002: zp[4]:152 [ mul16s::return#2 ] 1,331.55: zp[2]:11 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 ] 202: zp[4]:75 [ mul16s::return#3 ] 202: zp[4]:95 [ mul16s::return#4 ]
|
|
Uplift Scope [memset] 35,672.33: zp[2]:34 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,833.67: zp[2]:136 [ memset::end#0 ] 1,250.12: zp[1]:33 [ memset::c#4 ] 1,001: zp[2]:29 [ memset::num#2 ] 0: zp[2]:31 [ memset::str#3 ]
|
|
Uplift Scope [bitmap_init] 3,628.62: zp[2]:39 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 3,169.83: zp[1]:36 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 2,002: zp[1]:37 [ bitmap_init::x#2 bitmap_init::x#1 ] 2,002: zp[1]:38 [ bitmap_init::y#2 bitmap_init::y#1 ] 2,002: zp[1]:139 [ bitmap_init::$4 ] 2,002: zp[1]:140 [ bitmap_init::$5 ] 2,002: zp[1]:141 [ bitmap_init::$6 ] 500.5: zp[1]:138 [ bitmap_init::$7 ]
|
|
Uplift Scope [bitmap_plot] 2,103: zp[1]:111 [ bitmap_plot::y#0 ] 2,002: zp[2]:114 [ bitmap_plot::$0 ] 2,002: zp[1]:118 [ bitmap_plot::$1 ] 1,501.5: zp[2]:116 [ bitmap_plot::plotter#1 ] 500.5: zp[2]:112 [ bitmap_plot::plotter#0 ] 420.6: zp[2]:109 [ bitmap_plot::x#0 ]
|
|
Uplift Scope [sin16s_gen2] 2,233: zp[2]:41 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] 2,002: zp[4]:156 [ sin16s_gen2::$6 ] 1,251.25: zp[4]:43 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] 1,001: zp[2]:160 [ sin16s_gen2::$8 ] 940.33: zp[2]:47 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] 73.47: zp[4]:146 [ sin16s_gen2::step#0 ]
|
|
Uplift Scope [div32u16u] 2,002: zp[2]:214 [ div32u16u::quotient_lo#0 ] 400.4: zp[2]:210 [ div32u16u::quotient_hi#0 ] 367.33: zp[4]:216 [ div32u16u::return#0 ] 202: zp[4]:142 [ div32u16u::return#2 ]
|
|
Uplift Scope [main] 372.11: zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] 202: zp[2]:69 [ main::$26 ] 202: zp[2]:71 [ main::$30 ] 202: zp[4]:79 [ main::xpos#0 ] 202: zp[2]:85 [ main::$7 ] 202: zp[2]:89 [ main::$27 ] 202: zp[2]:91 [ main::$31 ] 202: zp[4]:99 [ main::ypos#0 ] 202: zp[2]:105 [ main::$11 ] 139.77: zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ] 139.63: zp[2]:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] 101: zp[2]:73 [ main::cos_x#0 ] 101: zp[2]:83 [ main::$28 ] 101: zp[2]:93 [ main::sin_y#0 ] 101: zp[2]:103 [ main::$29 ] 62.04: zp[2]:4 [ main::r#10 main::r#1 ] 50.5: zp[2]:107 [ main::y#0 ] 8.42: zp[2]:87 [ main::x#0 ]
|
|
Uplift Scope [] 2,200.4: zp[2]:222 [ rem16u#1 ] 3.82: zp[1]:68 [ frame_cnt ]
|
|
Uplift Scope [MOS6526_CIA]
|
|
Uplift Scope [MOS6569_VICII]
|
|
Uplift Scope [MOS6581_SID]
|
|
Uplift Scope [bitmap_clear]
|
|
Uplift Scope [init_irq]
|
|
Uplift Scope [irq]
|
|
|
|
Uplifting [mul16u] best 27566 combination zp[4]:21 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:25 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:19 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] zp[2]:17 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] zp[4]:194 [ mul16u::return#3 ] zp[4]:119 [ mul16u::return#2 ]
|
|
Uplifting [divr16u] best 27356 combination zp[2]:61 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:65 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[2]:63 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp[2]:208 [ divr16u::return#2 ] zp[2]:212 [ divr16u::return#3 ]
|
|
Uplifting [mulu16_sel] best 27340 combination zp[2]:56 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ] zp[4]:198 [ mulu16_sel::$0 ] zp[4]:202 [ mulu16_sel::$1 ] zp[2]:58 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ] zp[2]:206 [ mulu16_sel::return#12 ] zp[2]:168 [ mulu16_sel::return#0 ] zp[2]:172 [ mulu16_sel::return#1 ] zp[2]:176 [ mulu16_sel::return#2 ] zp[2]:182 [ mulu16_sel::return#10 ] zp[2]:186 [ mulu16_sel::return#11 ] reg byte x [ mulu16_sel::select#5 ]
|
|
Uplifting [sin16s] best 27331 combination zp[4]:50 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:54 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:162 [ sin16s::$4 ] zp[2]:170 [ sin16s::x2#0 ] zp[2]:178 [ sin16s::x3_6#0 ] zp[2]:184 [ sin16s::x4#0 ] zp[2]:188 [ sin16s::x5#0 ] zp[2]:190 [ sin16s::x5_128#0 ] zp[2]:174 [ sin16s::x3#0 ] zp[2]:192 [ sin16s::usinx#1 ] zp[2]:166 [ sin16s::x1#0 ] zp[2]:150 [ sin16s::return#0 ] zp[2]:180 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ]
|
|
Uplifting [mul16s] best 27331 combination zp[4]:13 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp[2]:123 [ mul16s::$6 ] zp[2]:125 [ mul16s::$11 ] zp[2]:127 [ mul16s::$9 ] zp[2]:129 [ mul16s::$12 ] zp[2]:9 [ mul16s::a#3 mul16s::a#2 mul16s::a#1 mul16s::a#0 ] zp[4]:131 [ mul16s::return#0 ] zp[4]:152 [ mul16s::return#2 ] zp[2]:11 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 ] zp[4]:75 [ mul16s::return#3 ] zp[4]:95 [ mul16s::return#4 ]
|
|
Uplifting [memset] best 27315 combination zp[2]:34 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:136 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:29 [ memset::num#2 ] zp[2]:31 [ memset::str#3 ]
|
|
Uplifting [bitmap_init] best 26805 combination zp[2]:39 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 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 ] reg byte a [ bitmap_init::$4 ] zp[1]:140 [ bitmap_init::$5 ] zp[1]:141 [ bitmap_init::$6 ] zp[1]:138 [ bitmap_init::$7 ]
|
|
Limited combination testing to 100 combinations of 15360 possible.
|
|
Uplifting [bitmap_plot] best 26768 combination reg byte a [ bitmap_plot::y#0 ] zp[2]:114 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:116 [ bitmap_plot::plotter#1 ] zp[2]:112 [ bitmap_plot::plotter#0 ] zp[2]:109 [ bitmap_plot::x#0 ]
|
|
Uplifting [sin16s_gen2] best 26768 combination zp[2]:41 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp[4]:156 [ sin16s_gen2::$6 ] zp[4]:43 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp[2]:160 [ sin16s_gen2::$8 ] zp[2]:47 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[4]:146 [ sin16s_gen2::step#0 ]
|
|
Uplifting [div32u16u] best 26768 combination zp[2]:214 [ div32u16u::quotient_lo#0 ] zp[2]:210 [ div32u16u::quotient_hi#0 ] zp[4]:216 [ div32u16u::return#0 ] zp[4]:142 [ div32u16u::return#2 ]
|
|
Uplifting [main] best 26768 combination zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] zp[2]:69 [ main::$26 ] zp[2]:71 [ main::$30 ] zp[4]:79 [ main::xpos#0 ] zp[2]:85 [ main::$7 ] zp[2]:89 [ main::$27 ] zp[2]:91 [ main::$31 ] zp[4]:99 [ main::ypos#0 ] zp[2]:105 [ main::$11 ] zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ] zp[2]:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] zp[2]:73 [ main::cos_x#0 ] zp[2]:83 [ main::$28 ] zp[2]:93 [ main::sin_y#0 ] zp[2]:103 [ main::$29 ] zp[2]:4 [ main::r#10 main::r#1 ] zp[2]:107 [ main::y#0 ] zp[2]:87 [ main::x#0 ]
|
|
Uplifting [] best 26768 combination zp[2]:222 [ rem16u#1 ] zp[1]:68 [ frame_cnt ]
|
|
Uplifting [MOS6526_CIA] best 26768 combination
|
|
Uplifting [MOS6569_VICII] best 26768 combination
|
|
Uplifting [MOS6581_SID] best 26768 combination
|
|
Uplifting [bitmap_clear] best 26768 combination
|
|
Uplifting [init_irq] best 26768 combination
|
|
Uplifting [irq] best 26768 combination
|
|
Attempting to uplift remaining variables inzp[1]:140 [ bitmap_init::$5 ]
|
|
Uplifting [bitmap_init] best 26708 combination reg byte a [ bitmap_init::$5 ]
|
|
Attempting to uplift remaining variables inzp[1]:141 [ bitmap_init::$6 ]
|
|
Uplifting [bitmap_init] best 26648 combination reg byte a [ bitmap_init::$6 ]
|
|
Attempting to uplift remaining variables inzp[1]:138 [ bitmap_init::$7 ]
|
|
Uplifting [bitmap_init] best 26648 combination zp[1]:138 [ bitmap_init::$7 ]
|
|
Attempting to uplift remaining variables inzp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ]
|
|
Uplifting [main] best 26648 combination zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:68 [ frame_cnt ]
|
|
Uplifting [] best 26648 combination zp[1]:68 [ frame_cnt ]
|
|
Coalescing zero page register [ zp[2]:4 [ main::r#10 main::r#1 ] ] with [ zp[2]:9 [ mul16s::a#3 mul16s::a#2 mul16s::a#1 mul16s::a#0 ] ] - score: 2
|
|
Coalescing zero page register [ zp[2]:54 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp[2]:192 [ sin16s::usinx#1 ] ] - score: 2
|
|
Coalescing zero page register [ zp[2]:56 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ] ] with [ zp[2]:174 [ sin16s::x3#0 ] ] - score: 2
|
|
Coalescing zero page register [ zp[2]:61 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp[2]:222 [ rem16u#1 ] ] - score: 2
|
|
Coalescing zero page register [ zp[2]:11 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 ] ] with [ zp[2]:73 [ main::cos_x#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:11 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 main::cos_x#0 ] ] with [ zp[2]:93 [ main::sin_y#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[4]:13 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] ] with [ zp[4]:119 [ mul16u::return#2 ] ] - score: 1
|
|
Coalescing zero page register [ zp[4]:13 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 ] ] with [ zp[4]:131 [ mul16s::return#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:17 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 ] ] with [ zp[2]:58 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ] ] - score: 1
|
|
Coalescing zero page register [ zp[4]:21 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] ] with [ zp[4]:194 [ mul16u::return#3 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:29 [ memset::num#2 ] ] with [ zp[2]:136 [ memset::end#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:31 [ memset::str#3 ] ] with [ zp[2]:34 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:54 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 ] ] with [ zp[2]:150 [ sin16s::return#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:56 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 ] ] with [ zp[2]:170 [ sin16s::x2#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:56 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 ] ] with [ zp[2]:184 [ sin16s::x4#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:65 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp[2]:208 [ divr16u::return#2 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:65 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp[2]:212 [ divr16u::return#3 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:69 [ main::$26 ] ] with [ zp[2]:71 [ main::$30 ] ] - score: 1
|
|
Coalescing zero page register [ zp[4]:75 [ mul16s::return#3 ] ] with [ zp[4]:79 [ main::xpos#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:83 [ main::$28 ] ] with [ zp[2]:85 [ main::$7 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:87 [ main::x#0 ] ] with [ zp[2]:109 [ bitmap_plot::x#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:89 [ main::$27 ] ] with [ zp[2]:91 [ main::$31 ] ] - score: 1
|
|
Coalescing zero page register [ zp[4]:95 [ mul16s::return#4 ] ] with [ zp[4]:99 [ main::ypos#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:103 [ main::$29 ] ] with [ zp[2]:105 [ main::$11 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:112 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:116 [ bitmap_plot::plotter#1 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:123 [ mul16s::$6 ] ] with [ zp[2]:125 [ mul16s::$11 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:127 [ mul16s::$9 ] ] with [ zp[2]:129 [ mul16s::$12 ] ] - score: 1
|
|
Coalescing zero page register [ zp[4]:142 [ div32u16u::return#2 ] ] with [ zp[4]:146 [ sin16s_gen2::step#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[4]:142 [ div32u16u::return#2 sin16s_gen2::step#0 ] ] with [ zp[4]:216 [ div32u16u::return#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[4]:152 [ mul16s::return#2 ] ] with [ zp[4]:156 [ sin16s_gen2::$6 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:168 [ mulu16_sel::return#0 ] ] with [ zp[2]:206 [ mulu16_sel::return#12 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:176 [ mulu16_sel::return#2 ] ] with [ zp[2]:178 [ sin16s::x3_6#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:186 [ mulu16_sel::return#11 ] ] with [ zp[2]:188 [ sin16s::x5#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[4]:198 [ mulu16_sel::$0 ] ] with [ zp[4]:202 [ mulu16_sel::$1 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:4 [ main::r#10 main::r#1 mul16s::a#3 mul16s::a#2 mul16s::a#1 mul16s::a#0 ] ] with [ zp[2]:54 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:11 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 main::cos_x#0 main::sin_y#0 ] ] with [ zp[2]:69 [ main::$26 main::$30 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:11 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 main::cos_x#0 main::sin_y#0 main::$26 main::$30 ] ] with [ zp[2]:89 [ main::$27 main::$31 ] ] - score: 1
|
|
Coalescing zero page register [ zp[4]:13 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 mul16u::return#2 mul16s::return#0 ] ] with [ zp[4]:21 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 ] ] - score: 1
|
|
Coalescing zero page register [ zp[4]:13 [ 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 ] ] with [ zp[4]:75 [ mul16s::return#3 main::xpos#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[4]:13 [ 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 ] ] with [ zp[4]:95 [ mul16s::return#4 main::ypos#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[4]:13 [ 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 ] ] with [ zp[4]:152 [ mul16s::return#2 sin16s_gen2::$6 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:56 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 ] ] with [ zp[2]:172 [ mulu16_sel::return#1 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:56 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 ] ] with [ zp[2]:182 [ mulu16_sel::return#10 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:65 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 ] ] with [ zp[2]:214 [ div32u16u::quotient_lo#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:83 [ main::$28 main::$7 ] ] with [ zp[2]:87 [ main::x#0 bitmap_plot::x#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:103 [ main::$29 main::$11 ] ] with [ zp[2]:107 [ main::y#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:168 [ mulu16_sel::return#0 mulu16_sel::return#12 ] ] with [ zp[2]:176 [ mulu16_sel::return#2 sin16s::x3_6#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:168 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 ] ] with [ zp[2]:186 [ mulu16_sel::return#11 sin16s::x5#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:4 [ main::r#10 main::r#1 mul16s::a#3 mul16s::a#2 mul16s::a#1 mul16s::a#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 ] ] with [ zp[2]:180 [ sin16s::usinx#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[4]:13 [ 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::$6 ] ] with [ zp[4]:198 [ mulu16_sel::$0 mulu16_sel::$1 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:168 [ mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 ] ] with [ zp[2]:190 [ sin16s::x5_128#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:29 [ memset::num#2 memset::end#0 ] ] with [ zp[2]:17 [ mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ] ]
|
|
Coalescing zero page register [ zp[2]:31 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] with [ zp[2]:19 [ mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] ]
|
|
Coalescing zero page register [ zp[2]:41 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] ] with [ zp[2]:39 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ]
|
|
Coalescing zero page register [ zp[4]:50 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] ] with [ zp[4]:25 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] ]
|
|
Coalescing zero page register [ zp[2]:61 [ 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 ] ] with [ zp[2]:56 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ] ]
|
|
Coalescing zero page register [ zp[2]:83 [ main::$28 main::$7 main::x#0 bitmap_plot::x#0 ] ] with [ zp[2]:47 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] ]
|
|
Coalescing zero page register [ zp[2]:103 [ main::$29 main::$11 main::y#0 ] ] with [ zp[2]:63 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ]
|
|
Coalescing zero page register [ zp[2]:112 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:65 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] ]
|
|
Coalescing zero page register [ zp[2]:123 [ mul16s::$6 mul16s::$11 ] ] with [ zp[2]:114 [ bitmap_plot::$0 ] ]
|
|
Coalescing zero page register [ zp[2]:160 [ sin16s_gen2::$8 ] ] with [ zp[2]:127 [ mul16s::$9 mul16s::$12 ] ]
|
|
Coalescing zero page register [ zp[2]:210 [ div32u16u::quotient_hi#0 ] ] with [ zp[2]:166 [ sin16s::x1#0 ] ]
|
|
Coalescing zero page register [ zp[2]:103 [ main::$29 main::$11 main::y#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] ] with [ zp[2]:29 [ memset::num#2 memset::end#0 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ] ]
|
|
Coalescing zero page register [ zp[2]:112 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] ] with [ zp[2]:31 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] ]
|
|
Coalescing zero page register [ zp[2]:168 [ 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 ] ] with [ zp[2]:123 [ mul16s::$6 mul16s::$11 bitmap_plot::$0 ] ]
|
|
Coalescing zero page register [ zp[2]:160 [ sin16s_gen2::$8 mul16s::$9 mul16s::$12 ] ] with [ zp[2]:112 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] ]
|
|
Allocated (was zp[2]:11) zp[2]:9 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 main::cos_x#0 main::sin_y#0 main::$26 main::$30 main::$27 main::$31 ]
|
|
Allocated (was zp[4]:13) zp[4]: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::$6 mulu16_sel::$0 mulu16_sel::$1 ]
|
|
Allocated (was zp[2]:41) zp[2]:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
|
Allocated (was zp[4]:43) zp[4]:17 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
|
|
Allocated (was zp[4]:50) zp[4]:21 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
|
Allocated (was zp[2]:61) zp[2]:25 [ 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 mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ]
|
|
Allocated (was zp[1]:68) zp[1]:27 [ frame_cnt ]
|
|
Allocated (was zp[2]:83) zp[2]:28 [ main::$28 main::$7 main::x#0 bitmap_plot::x#0 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
|
|
Allocated (was zp[2]:103) zp[2]:30 [ main::$29 main::$11 main::y#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 memset::num#2 memset::end#0 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ]
|
|
Allocated (was zp[1]:138) zp[1]:32 [ bitmap_init::$7 ]
|
|
Allocated (was zp[4]:142) zp[4]:33 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ]
|
|
Allocated (was zp[2]:160) zp[2]:37 [ sin16s_gen2::$8 mul16s::$9 mul16s::$12 bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ]
|
|
Allocated (was zp[4]:162) zp[4]:39 [ sin16s::$4 ]
|
|
Allocated (was zp[2]:168) zp[2]:43 [ 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 mul16s::$6 mul16s::$11 bitmap_plot::$0 ]
|
|
Allocated (was zp[2]:210) zp[2]:45 [ div32u16u::quotient_hi#0 sin16s::x1#0 ]
|
|
Interrupt procedure irq clobbers ACNZ
|
|
Removing interrupt register storage stx regx+1 in 441 entry interrupt(HARDWARE_CLOBBER)
|
|
Removing interrupt register storage sty regy+1 in 441 entry interrupt(HARDWARE_CLOBBER)
|
|
Removing interrupt register storage regx: in 450 [239] return - exit interrupt(HARDWARE_CLOBBER)
|
|
Removing interrupt register storage ldx #00 in 450 [239] return - exit interrupt(HARDWARE_CLOBBER)
|
|
Removing interrupt register storage regy: in 450 [239] return - exit interrupt(HARDWARE_CLOBBER)
|
|
Removing interrupt register storage ldy #00 in 450 [239] return - exit interrupt(HARDWARE_CLOBBER)
|
|
|
|
ASSEMBLER BEFORE OPTIMIZATION
|
|
// File Comments
|
|
// Tests the simple bitmap plotter - and counts plots per frame in an IRQ
|
|
// Plots a spiral
|
|
// Upstart
|
|
.pc = $801 "Basic"
|
|
:BasicUpstart(__bbegin)
|
|
.pc = $80d "Program"
|
|
// Global Constants & labels
|
|
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
|
.const CIA_INTERRUPT_CLEAR = $7f
|
|
.const VIC_BMM = $20
|
|
.const VIC_DEN = $10
|
|
.const VIC_RSEL = 8
|
|
// Bits for the VICII IRQ Status/Enable Registers
|
|
.const IRQ_RASTER = 1
|
|
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
|
.const PROCPORT_DDR_MEMORY_MASK = 7
|
|
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
|
.const PROCPORT_RAM_IO = 5
|
|
// The colors of the C64
|
|
.const BLACK = 0
|
|
.const WHITE = 1
|
|
// PI*2 in u[4.28] format
|
|
.const PI2_u4f28 = $6487ed51
|
|
// PI in u[4.28] format
|
|
.const PI_u4f28 = $3243f6a9
|
|
// PI/2 in u[4.28] format
|
|
.const PI_HALF_u4f28 = $1921fb54
|
|
.const SIZEOF_SIGNED_WORD = 2
|
|
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
|
.label RASTER = $d012
|
|
.label BORDER_COLOR = $d020
|
|
.label BG_COLOR = $d021
|
|
.label VIC_CONTROL = $d011
|
|
.label D011 = $d011
|
|
.label D018 = $d018
|
|
// VIC II IRQ Status Register
|
|
.label IRQ_STATUS = $d019
|
|
// VIC II IRQ Enable Register
|
|
.label IRQ_ENABLE = $d01a
|
|
// Processor port data direction register
|
|
.label PROCPORT_DDR = 0
|
|
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
|
.label PROCPORT = 1
|
|
// The CIA#1: keyboard matrix, joystick #1/#2
|
|
.label CIA1 = $dc00
|
|
// The vector used when the HARDWARE serves IRQ interrupts
|
|
.label HARDWARE_IRQ = $fffe
|
|
.label BITMAP = $2000
|
|
.label SCREEN = $400
|
|
.label frame_cnt = $1b
|
|
// Remainder after unsigned 16-bit division
|
|
.label rem16u = $19
|
|
// @begin
|
|
__bbegin:
|
|
jmp __b1
|
|
// @1
|
|
__b1:
|
|
// [1] (volatile byte) frame_cnt ← (byte) 1 -- vbuz1=vbuc1
|
|
// Counts frames - updated by the IRQ
|
|
lda #1
|
|
sta.z frame_cnt
|
|
// [2] phi from @1 to @2 [phi:@1->@2]
|
|
__b2_from___b1:
|
|
jmp __b2
|
|
// @2
|
|
__b2:
|
|
// [3] call main
|
|
// [5] phi from @2 to main [phi:@2->main]
|
|
main_from___b2:
|
|
jsr main
|
|
// [4] phi from @2 to @end [phi:@2->@end]
|
|
__bend_from___b2:
|
|
jmp __bend
|
|
// @end
|
|
__bend:
|
|
// main
|
|
main: {
|
|
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
|
|
.label __7 = $1c
|
|
.label __11 = $1e
|
|
.label __26 = 9
|
|
.label __27 = 9
|
|
.label __28 = $1c
|
|
.label __29 = $1e
|
|
.label cos_x = 9
|
|
.label xpos = $b
|
|
.label x = $1c
|
|
.label sin_y = 9
|
|
.label ypos = $b
|
|
.label y = $1e
|
|
.label idx_x = 2
|
|
.label idx_y = 6
|
|
.label r = 4
|
|
.label r_add = 8
|
|
.label __30 = 9
|
|
.label __31 = 9
|
|
// [6] call sin16s_gen2
|
|
// [138] phi from main to sin16s_gen2 [phi:main->sin16s_gen2]
|
|
sin16s_gen2_from_main:
|
|
jsr sin16s_gen2
|
|
// [7] phi from main to main::@9 [phi:main->main::@9]
|
|
__b9_from_main:
|
|
jmp __b9
|
|
// main::@9
|
|
__b9:
|
|
// [8] call bitmap_init
|
|
// [116] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init]
|
|
bitmap_init_from___b9:
|
|
jsr bitmap_init
|
|
// [9] phi from main::@9 to main::@10 [phi:main::@9->main::@10]
|
|
__b10_from___b9:
|
|
jmp __b10
|
|
// main::@10
|
|
__b10:
|
|
// [10] call bitmap_clear
|
|
// [102] phi from main::@10 to bitmap_clear [phi:main::@10->bitmap_clear]
|
|
bitmap_clear_from___b10:
|
|
jsr bitmap_clear
|
|
jmp __b11
|
|
// main::@11
|
|
__b11:
|
|
// [11] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2
|
|
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
|
|
sta D011
|
|
// [12] phi from main::@11 to main::toD0181 [phi:main::@11->main::toD0181]
|
|
toD0181_from___b11:
|
|
jmp toD0181
|
|
// main::toD0181
|
|
toD0181:
|
|
jmp __b8
|
|
// main::@8
|
|
__b8:
|
|
// [13] *((const nomodify byte*) D018) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2
|
|
lda #toD0181_return
|
|
sta D018
|
|
// [14] call init_irq
|
|
jsr init_irq
|
|
// [15] phi from main::@8 to main::@1 [phi:main::@8->main::@1]
|
|
__b1_from___b8:
|
|
// [15] phi (byte) main::r_add#10 = (byte) $20 [phi:main::@8->main::@1#0] -- vbuz1=vbuc1
|
|
lda #$20
|
|
sta.z r_add
|
|
// [15] phi (word) main::idx_y#3 = (word) $80 [phi:main::@8->main::@1#1] -- vwuz1=vwuc1
|
|
lda #<$80
|
|
sta.z idx_y
|
|
lda #>$80
|
|
sta.z idx_y+1
|
|
// [15] phi (signed word) main::r#10 = (signed word) 0 [phi:main::@8->main::@1#2] -- vwsz1=vwsc1
|
|
lda #<0
|
|
sta.z r
|
|
lda #>0
|
|
sta.z r+1
|
|
// [15] phi (word) main::idx_x#11 = (word) 0 [phi:main::@8->main::@1#3] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z idx_x
|
|
lda #>0
|
|
sta.z idx_x+1
|
|
jmp __b1
|
|
// main::@1
|
|
__b1:
|
|
jmp __b2
|
|
// main::@2
|
|
__b2:
|
|
// [16] (word~) main::$26 ← (word) main::idx_x#11 << (byte) 1 -- vwuz1=vwuz2_rol_1
|
|
lda.z idx_x
|
|
asl
|
|
sta.z __26
|
|
lda.z idx_x+1
|
|
rol
|
|
sta.z __26+1
|
|
// [17] (signed word*~) main::$30 ← (const signed word*) SINUS + (word~) main::$26 -- pwsz1=pwsc1_plus_vwuz1
|
|
clc
|
|
lda.z __30
|
|
adc #<SINUS
|
|
sta.z __30
|
|
lda.z __30+1
|
|
adc #>SINUS
|
|
sta.z __30+1
|
|
// [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$30) -- vwsz1=_deref_pwsz1
|
|
ldy #0
|
|
lda (cos_x),y
|
|
pha
|
|
iny
|
|
lda (cos_x),y
|
|
sta.z cos_x+1
|
|
pla
|
|
sta.z cos_x
|
|
// [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
|
|
// [63] phi from main::@2 to mul16s [phi:main::@2->mul16s]
|
|
mul16s_from___b2:
|
|
// [63] phi (signed word) mul16s::b#3 = (signed word) mul16s::b#1 [phi:main::@2->mul16s#0] -- register_copy
|
|
// [63] phi (signed word) mul16s::a#3 = (signed word) mul16s::a#1 [phi:main::@2->mul16s#1] -- register_copy
|
|
jsr mul16s
|
|
// [22] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0
|
|
jmp __b12
|
|
// main::@12
|
|
__b12:
|
|
// [23] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3
|
|
// [24] (word~) main::$28 ← > (signed dword) main::xpos#0 -- vwuz1=_hi_vdsz2
|
|
lda.z xpos+2
|
|
sta.z __28
|
|
lda.z xpos+3
|
|
sta.z __28+1
|
|
// [25] (signed word~) main::$7 ← (signed word)(word~) main::$28 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2
|
|
lda.z __7+1
|
|
cmp #$80
|
|
ror.z __7+1
|
|
ror.z __7
|
|
lda.z __7+1
|
|
cmp #$80
|
|
ror.z __7+1
|
|
ror.z __7
|
|
// [26] (signed word) main::x#0 ← (signed word) $a0 + (signed word~) main::$7 -- vwsz1=vwsc1_plus_vwsz1
|
|
clc
|
|
lda.z x
|
|
adc #<$a0
|
|
sta.z x
|
|
lda.z x+1
|
|
adc #>$a0
|
|
sta.z x+1
|
|
// [27] (word~) main::$27 ← (word) main::idx_y#3 << (byte) 1 -- vwuz1=vwuz2_rol_1
|
|
lda.z idx_y
|
|
asl
|
|
sta.z __27
|
|
lda.z idx_y+1
|
|
rol
|
|
sta.z __27+1
|
|
// [28] (signed word*~) main::$31 ← (const signed word*) SINUS + (word~) main::$27 -- pwsz1=pwsc1_plus_vwuz1
|
|
clc
|
|
lda.z __31
|
|
adc #<SINUS
|
|
sta.z __31
|
|
lda.z __31+1
|
|
adc #>SINUS
|
|
sta.z __31+1
|
|
// [29] (signed word) main::sin_y#0 ← *((signed word*~) main::$31) -- vwsz1=_deref_pwsz1
|
|
ldy #0
|
|
lda (sin_y),y
|
|
pha
|
|
iny
|
|
lda (sin_y),y
|
|
sta.z sin_y+1
|
|
pla
|
|
sta.z sin_y
|
|
// [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
|
|
// [63] phi from main::@12 to mul16s [phi:main::@12->mul16s]
|
|
mul16s_from___b12:
|
|
// [63] phi (signed word) mul16s::b#3 = (signed word) mul16s::b#2 [phi:main::@12->mul16s#0] -- register_copy
|
|
// [63] phi (signed word) mul16s::a#3 = (signed word) mul16s::a#2 [phi:main::@12->mul16s#1] -- register_copy
|
|
jsr mul16s
|
|
// [33] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0
|
|
jmp __b13
|
|
// main::@13
|
|
__b13:
|
|
// [34] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4
|
|
// [35] (word~) main::$29 ← > (signed dword) main::ypos#0 -- vwuz1=_hi_vdsz2
|
|
lda.z ypos+2
|
|
sta.z __29
|
|
lda.z ypos+3
|
|
sta.z __29+1
|
|
// [36] (signed word~) main::$11 ← (signed word)(word~) main::$29 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2
|
|
lda.z __11+1
|
|
cmp #$80
|
|
ror.z __11+1
|
|
ror.z __11
|
|
lda.z __11+1
|
|
cmp #$80
|
|
ror.z __11+1
|
|
ror.z __11
|
|
// [37] (signed word) main::y#0 ← (signed byte) $64 + (signed word~) main::$11 -- vwsz1=vbsc1_plus_vwsz1
|
|
lda.z y
|
|
clc
|
|
adc #<$64
|
|
sta.z y
|
|
lda.z y+1
|
|
adc #>$64
|
|
sta.z y+1
|
|
// [38] (word) bitmap_plot::x#0 ← (word)(signed word) main::x#0
|
|
// [39] (byte) bitmap_plot::y#0 ← (byte)(word)(signed word) main::y#0 -- vbuaa=_byte_vwuz1
|
|
lda.z y
|
|
// [40] call bitmap_plot
|
|
jsr bitmap_plot
|
|
jmp __b14
|
|
// main::@14
|
|
__b14:
|
|
// [41] *((const byte*) plots_per_frame + (volatile byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (volatile byte) frame_cnt) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
|
|
ldx.z frame_cnt
|
|
inc plots_per_frame,x
|
|
// [42] (word) main::idx_x#1 ← (word) main::idx_x#11 + (byte) main::r_add#10 -- vwuz1=vwuz1_plus_vbuz2
|
|
lda.z r_add
|
|
clc
|
|
adc.z idx_x
|
|
sta.z idx_x
|
|
bcc !+
|
|
inc.z idx_x+1
|
|
!:
|
|
// [43] if((word) main::idx_x#1<(word) $200) goto main::@16 -- vwuz1_lt_vwuc1_then_la1
|
|
lda.z idx_x+1
|
|
cmp #>$200
|
|
bcc __b16_from___b14
|
|
bne !+
|
|
lda.z idx_x
|
|
cmp #<$200
|
|
bcc __b16_from___b14
|
|
!:
|
|
// [45] phi from main::@14 to main::@3 [phi:main::@14->main::@3]
|
|
__b3_from___b14:
|
|
// [45] phi (word) main::idx_x#10 = (byte) 0 [phi:main::@14->main::@3#0] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z idx_x
|
|
lda #>0
|
|
sta.z idx_x+1
|
|
jmp __b3
|
|
// [44] phi from main::@14 to main::@16 [phi:main::@14->main::@16]
|
|
__b16_from___b14:
|
|
jmp __b16
|
|
// main::@16
|
|
__b16:
|
|
// [45] phi from main::@16 to main::@3 [phi:main::@16->main::@3]
|
|
__b3_from___b16:
|
|
// [45] phi (word) main::idx_x#10 = (word) main::idx_x#1 [phi:main::@16->main::@3#0] -- register_copy
|
|
jmp __b3
|
|
// main::@3
|
|
__b3:
|
|
// [46] (word) main::idx_y#1 ← (word) main::idx_y#3 + (byte) main::r_add#10 -- vwuz1=vwuz1_plus_vbuz2
|
|
lda.z r_add
|
|
clc
|
|
adc.z idx_y
|
|
sta.z idx_y
|
|
bcc !+
|
|
inc.z idx_y+1
|
|
!:
|
|
// [47] if((word) main::idx_y#1<(word) $200) goto main::@17 -- vwuz1_lt_vwuc1_then_la1
|
|
lda.z idx_y+1
|
|
cmp #>$200
|
|
bcc __b17_from___b3
|
|
bne !+
|
|
lda.z idx_y
|
|
cmp #<$200
|
|
bcc __b17_from___b3
|
|
!:
|
|
// [49] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
|
|
__b4_from___b3:
|
|
// [49] phi (word) main::idx_y#10 = (byte) 0 [phi:main::@3->main::@4#0] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z idx_y
|
|
lda #>0
|
|
sta.z idx_y+1
|
|
jmp __b4
|
|
// [48] phi from main::@3 to main::@17 [phi:main::@3->main::@17]
|
|
__b17_from___b3:
|
|
jmp __b17
|
|
// main::@17
|
|
__b17:
|
|
// [49] phi from main::@17 to main::@4 [phi:main::@17->main::@4]
|
|
__b4_from___b17:
|
|
// [49] phi (word) main::idx_y#10 = (word) main::idx_y#1 [phi:main::@17->main::@4#0] -- register_copy
|
|
jmp __b4
|
|
// main::@4
|
|
__b4:
|
|
// [50] (signed word) main::r#1 ← (signed word) main::r#10 + (byte) main::r_add#10 -- vwsz1=vwsz1_plus_vbuz2
|
|
clc
|
|
lda.z r
|
|
adc.z r_add
|
|
sta.z r
|
|
lda.z r+1
|
|
adc #0
|
|
sta.z r+1
|
|
// [51] if((word) main::idx_x#10!=(byte) 0) goto main::@5 -- vwuz1_neq_0_then_la1
|
|
lda.z idx_x
|
|
bne __b5_from___b4
|
|
lda.z idx_x+1
|
|
bne __b5_from___b4
|
|
jmp __b15
|
|
// main::@15
|
|
__b15:
|
|
// [52] if((byte) main::r_add#10==(byte) 1) goto main::@5 -- vbuz1_eq_vbuc1_then_la1
|
|
lda #1
|
|
cmp.z r_add
|
|
beq __b5_from___b15
|
|
jmp __b6
|
|
// main::@6
|
|
__b6:
|
|
// [53] (byte) main::r_add#1 ← (byte) main::r_add#10 >> (byte) 1 -- vbuz1=vbuz1_ror_1
|
|
lsr.z r_add
|
|
// [54] phi from main::@4 main::@6 to main::@5 [phi:main::@4/main::@6->main::@5]
|
|
__b5_from___b4:
|
|
__b5_from___b6:
|
|
// [54] phi (byte) main::r_add#12 = (byte) main::r_add#10 [phi:main::@4/main::@6->main::@5#0] -- register_copy
|
|
jmp __b5
|
|
// [54] phi from main::@15 to main::@5 [phi:main::@15->main::@5]
|
|
__b5_from___b15:
|
|
jmp __b5
|
|
// main::@5
|
|
__b5:
|
|
// [55] if((signed word) main::r#1>=(signed word)(number) $200*(number) $c+(number) $100) goto main::@7 -- vwsz1_ge_vwsc1_then_la1
|
|
lda.z r
|
|
cmp #<$200*$c+$100
|
|
lda.z r+1
|
|
sbc #>$200*$c+$100
|
|
bvc !+
|
|
eor #$80
|
|
!:
|
|
bpl __b7
|
|
// [15] phi from main::@5 to main::@1 [phi:main::@5->main::@1]
|
|
__b1_from___b5:
|
|
// [15] phi (byte) main::r_add#10 = (byte) main::r_add#12 [phi:main::@5->main::@1#0] -- register_copy
|
|
// [15] phi (word) main::idx_y#3 = (word) main::idx_y#10 [phi:main::@5->main::@1#1] -- register_copy
|
|
// [15] phi (signed word) main::r#10 = (signed word) main::r#1 [phi:main::@5->main::@1#2] -- register_copy
|
|
// [15] phi (word) main::idx_x#11 = (word) main::idx_x#10 [phi:main::@5->main::@1#3] -- register_copy
|
|
jmp __b1
|
|
// main::@7
|
|
__b7:
|
|
// [56] *((const nomodify byte*) BORDER_COLOR) ← ++ *((const nomodify byte*) BORDER_COLOR) -- _deref_pbuc1=_inc__deref_pbuc1
|
|
inc BORDER_COLOR
|
|
jmp __b7
|
|
}
|
|
// bitmap_plot
|
|
// Plot a single dot in the bitmap
|
|
// bitmap_plot(word zp($1c) x, byte register(A) y)
|
|
bitmap_plot: {
|
|
.label __0 = $2b
|
|
.label plotter = $25
|
|
.label x = $1c
|
|
// [57] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa
|
|
tay
|
|
lda bitmap_plot_yhi,y
|
|
sta.z plotter+1
|
|
lda bitmap_plot_ylo,y
|
|
sta.z plotter
|
|
// [58] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1
|
|
lda.z x
|
|
and #<$fff8
|
|
sta.z __0
|
|
lda.z x+1
|
|
and #>$fff8
|
|
sta.z __0+1
|
|
// [59] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2
|
|
lda.z plotter
|
|
clc
|
|
adc.z __0
|
|
sta.z plotter
|
|
lda.z plotter+1
|
|
adc.z __0+1
|
|
sta.z plotter+1
|
|
// [60] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#0 -- vbuxx=_lo_vwuz1
|
|
ldx.z x
|
|
// [61] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
|
|
lda bitmap_plot_bit,x
|
|
ldy #0
|
|
ora (plotter),y
|
|
ldy #0
|
|
sta (plotter),y
|
|
jmp __breturn
|
|
// bitmap_plot::@return
|
|
__breturn:
|
|
// [62] return
|
|
rts
|
|
}
|
|
// mul16s
|
|
// Multiply of two signed ints to a signed long
|
|
// Fixes offsets introduced by using unsigned multiplication
|
|
// mul16s(signed word zp(4) a, signed word zp(9) b)
|
|
mul16s: {
|
|
.label __6 = $2b
|
|
.label __9 = $25
|
|
.label __11 = $2b
|
|
.label __12 = $25
|
|
.label m = $b
|
|
.label return = $b
|
|
.label a = 4
|
|
.label b = 9
|
|
// [64] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3 -- vwuz1=vwuz2
|
|
lda.z a
|
|
sta.z mul16u.a
|
|
lda.z a+1
|
|
sta.z mul16u.a+1
|
|
// [65] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3 -- vwuz1=vwuz2
|
|
lda.z b
|
|
sta.z mul16u.b
|
|
lda.z b+1
|
|
sta.z mul16u.b+1
|
|
// [66] call mul16u
|
|
// [81] phi from mul16s to mul16u [phi:mul16s->mul16u]
|
|
mul16u_from_mul16s:
|
|
// [81] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy
|
|
// [81] phi (word) mul16u::b#2 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- register_copy
|
|
jsr mul16u
|
|
// [67] (dword) mul16u::return#2 ← (dword) mul16u::res#2
|
|
jmp __b5
|
|
// mul16s::@5
|
|
__b5:
|
|
// [68] (dword) mul16s::m#0 ← (dword) mul16u::return#2
|
|
// [69] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1
|
|
lda.z a+1
|
|
bpl __b1_from___b5
|
|
jmp __b3
|
|
// mul16s::@3
|
|
__b3:
|
|
// [70] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2
|
|
lda.z m+2
|
|
sta.z __6
|
|
lda.z m+3
|
|
sta.z __6+1
|
|
// [71] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#3 -- vwuz1=vwuz1_minus_vwuz2
|
|
lda.z __11
|
|
sec
|
|
sbc.z b
|
|
sta.z __11
|
|
lda.z __11+1
|
|
sbc.z b+1
|
|
sta.z __11+1
|
|
// [72] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 -- vduz1=vduz1_sethi_vwuz2
|
|
lda.z __11
|
|
sta.z m+2
|
|
lda.z __11+1
|
|
sta.z m+3
|
|
// [73] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1]
|
|
__b1_from___b3:
|
|
__b1_from___b5:
|
|
// [73] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy
|
|
jmp __b1
|
|
// mul16s::@1
|
|
__b1:
|
|
// [74] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1
|
|
lda.z b+1
|
|
bpl __b2_from___b1
|
|
jmp __b4
|
|
// mul16s::@4
|
|
__b4:
|
|
// [75] (word~) mul16s::$9 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2
|
|
lda.z m+2
|
|
sta.z __9
|
|
lda.z m+3
|
|
sta.z __9+1
|
|
// [76] (word~) mul16s::$12 ← (word~) mul16s::$9 - (word)(signed word) mul16s::a#3 -- vwuz1=vwuz1_minus_vwuz2
|
|
lda.z __12
|
|
sec
|
|
sbc.z a
|
|
sta.z __12
|
|
lda.z __12+1
|
|
sbc.z a+1
|
|
sta.z __12+1
|
|
// [77] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$12 -- vduz1=vduz1_sethi_vwuz2
|
|
lda.z __12
|
|
sta.z m+2
|
|
lda.z __12+1
|
|
sta.z m+3
|
|
// [78] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2]
|
|
__b2_from___b1:
|
|
__b2_from___b4:
|
|
// [78] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy
|
|
jmp __b2
|
|
// mul16s::@2
|
|
__b2:
|
|
// [79] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4
|
|
jmp __breturn
|
|
// mul16s::@return
|
|
__breturn:
|
|
// [80] return
|
|
rts
|
|
}
|
|
// mul16u
|
|
// Perform binary multiplication of two unsigned 16-bit unsigned ints into a 32-bit unsigned long
|
|
// mul16u(word zp($25) a, word zp($1e) b)
|
|
mul16u: {
|
|
.label mb = $15
|
|
.label a = $25
|
|
.label res = $b
|
|
.label b = $1e
|
|
.label return = $b
|
|
// [82] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 -- vduz1=_dword_vwuz2
|
|
lda.z b
|
|
sta.z mb
|
|
lda.z b+1
|
|
sta.z mb+1
|
|
lda #0
|
|
sta.z mb+2
|
|
sta.z mb+3
|
|
// [83] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1]
|
|
__b1_from_mul16u:
|
|
// [83] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy
|
|
// [83] phi (dword) mul16u::res#2 = (dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vduc1
|
|
lda #<0
|
|
sta.z res
|
|
lda #>0
|
|
sta.z res+1
|
|
lda #<0>>$10
|
|
sta.z res+2
|
|
lda #>0>>$10
|
|
sta.z res+3
|
|
// [83] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy
|
|
jmp __b1
|
|
// mul16u::@1
|
|
__b1:
|
|
// [84] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1
|
|
lda.z a
|
|
bne __b2
|
|
lda.z a+1
|
|
bne __b2
|
|
jmp __breturn
|
|
// mul16u::@return
|
|
__breturn:
|
|
// [85] return
|
|
rts
|
|
// mul16u::@2
|
|
__b2:
|
|
// [86] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1
|
|
lda #1
|
|
and.z a
|
|
// [87] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1
|
|
cmp #0
|
|
beq __b3_from___b2
|
|
jmp __b4
|
|
// mul16u::@4
|
|
__b4:
|
|
// [88] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2
|
|
lda.z res
|
|
clc
|
|
adc.z mb
|
|
sta.z res
|
|
lda.z res+1
|
|
adc.z mb+1
|
|
sta.z res+1
|
|
lda.z res+2
|
|
adc.z mb+2
|
|
sta.z res+2
|
|
lda.z res+3
|
|
adc.z mb+3
|
|
sta.z res+3
|
|
// [89] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3]
|
|
__b3_from___b2:
|
|
__b3_from___b4:
|
|
// [89] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy
|
|
jmp __b3
|
|
// mul16u::@3
|
|
__b3:
|
|
// [90] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1
|
|
lsr.z a+1
|
|
ror.z a
|
|
// [91] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1
|
|
asl.z mb
|
|
rol.z mb+1
|
|
rol.z mb+2
|
|
rol.z mb+3
|
|
// [83] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1]
|
|
__b1_from___b3:
|
|
// [83] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy
|
|
// [83] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy
|
|
// [83] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// init_irq
|
|
// Setup the IRQ
|
|
init_irq: {
|
|
// asm { sei }
|
|
sei
|
|
// [93] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK -- _deref_pbuc1=vbuc2
|
|
// Disable kernal & basic
|
|
lda #PROCPORT_DDR_MEMORY_MASK
|
|
sta PROCPORT_DDR
|
|
// [94] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_IO
|
|
sta PROCPORT
|
|
// [95] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
|
|
// Disable CIA 1 Timer IRQ
|
|
lda #CIA_INTERRUPT_CLEAR
|
|
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
|
|
// [96] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) | (byte) $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
|
// Set raster line to $100
|
|
lda #$80
|
|
ora VIC_CONTROL
|
|
sta VIC_CONTROL
|
|
// [97] *((const nomodify byte*) RASTER) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta RASTER
|
|
// [98] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER -- _deref_pbuc1=vbuc2
|
|
// Enable Raster Interrupt
|
|
lda #IRQ_RASTER
|
|
sta IRQ_ENABLE
|
|
// [99] *((const nomodify void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2
|
|
// Set the IRQ routine
|
|
lda #<irq
|
|
sta HARDWARE_IRQ
|
|
lda #>irq
|
|
sta HARDWARE_IRQ+1
|
|
// asm { cli }
|
|
cli
|
|
jmp __breturn
|
|
// init_irq::@return
|
|
__breturn:
|
|
// [101] return
|
|
rts
|
|
}
|
|
// bitmap_clear
|
|
// Clear all graphics on the bitmap
|
|
// bgcol - the background color to fill the screen with
|
|
// fgcol - the foreground color to fill the screen with
|
|
bitmap_clear: {
|
|
.const col = WHITE*$10
|
|
// [103] call memset
|
|
// [107] phi from bitmap_clear to memset [phi:bitmap_clear->memset]
|
|
memset_from_bitmap_clear:
|
|
// [107] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1
|
|
ldx #col
|
|
// [107] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1
|
|
lda #<SCREEN
|
|
sta.z memset.str
|
|
lda #>SCREEN
|
|
sta.z memset.str+1
|
|
// [107] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1
|
|
lda #<$3e8
|
|
sta.z memset.num
|
|
lda #>$3e8
|
|
sta.z memset.num+1
|
|
jsr memset
|
|
// [104] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1]
|
|
__b1_from_bitmap_clear:
|
|
jmp __b1
|
|
// bitmap_clear::@1
|
|
__b1:
|
|
// [105] call memset
|
|
// [107] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset]
|
|
memset_from___b1:
|
|
// [107] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [107] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1
|
|
lda #<BITMAP
|
|
sta.z memset.str
|
|
lda #>BITMAP
|
|
sta.z memset.str+1
|
|
// [107] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1
|
|
lda #<$1f40
|
|
sta.z memset.num
|
|
lda #>$1f40
|
|
sta.z memset.num+1
|
|
jsr memset
|
|
jmp __breturn
|
|
// bitmap_clear::@return
|
|
__breturn:
|
|
// [106] return
|
|
rts
|
|
}
|
|
// memset
|
|
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
|
// memset(void* zp($25) str, byte register(X) c, word zp($1e) num)
|
|
memset: {
|
|
.label end = $1e
|
|
.label dst = $25
|
|
.label num = $1e
|
|
.label str = $25
|
|
// [108] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1
|
|
lda.z num
|
|
bne !+
|
|
lda.z num+1
|
|
beq __breturn
|
|
!:
|
|
jmp __b1
|
|
// memset::@1
|
|
__b1:
|
|
// [109] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1
|
|
lda.z end
|
|
clc
|
|
adc.z str
|
|
sta.z end
|
|
lda.z end+1
|
|
adc.z str+1
|
|
sta.z end+1
|
|
// [110] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
|
|
// [111] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
|
|
__b2_from___b1:
|
|
__b2_from___b3:
|
|
// [111] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy
|
|
jmp __b2
|
|
// memset::@2
|
|
__b2:
|
|
// [112] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1
|
|
lda.z dst+1
|
|
cmp.z end+1
|
|
bne __b3
|
|
lda.z dst
|
|
cmp.z end
|
|
bne __b3
|
|
jmp __breturn
|
|
// memset::@return
|
|
__breturn:
|
|
// [113] return
|
|
rts
|
|
// memset::@3
|
|
__b3:
|
|
// [114] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuxx
|
|
txa
|
|
ldy #0
|
|
sta (dst),y
|
|
// [115] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1
|
|
inc.z dst
|
|
bne !+
|
|
inc.z dst+1
|
|
!:
|
|
jmp __b2_from___b3
|
|
}
|
|
// bitmap_init
|
|
// Initialize bitmap plotting tables
|
|
bitmap_init: {
|
|
.label __7 = $20
|
|
.label yoffs = $f
|
|
// [117] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
|
__b1_from_bitmap_init:
|
|
// [117] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [117] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1
|
|
lda #$80
|
|
jmp __b1
|
|
// [117] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1]
|
|
__b1_from___b2:
|
|
// [117] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy
|
|
// [117] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy
|
|
jmp __b1
|
|
// bitmap_init::@1
|
|
__b1:
|
|
// [118] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa
|
|
sta bitmap_plot_bit,x
|
|
// [119] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1
|
|
lsr
|
|
// [120] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1
|
|
cmp #0
|
|
bne __b6_from___b1
|
|
// [122] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2]
|
|
__b2_from___b1:
|
|
// [122] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1
|
|
lda #$80
|
|
jmp __b2
|
|
// [121] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6]
|
|
__b6_from___b1:
|
|
jmp __b6
|
|
// bitmap_init::@6
|
|
__b6:
|
|
// [122] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2]
|
|
__b2_from___b6:
|
|
// [122] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy
|
|
jmp __b2
|
|
// bitmap_init::@2
|
|
__b2:
|
|
// [123] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [124] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1
|
|
cpx #0
|
|
bne __b1_from___b2
|
|
// [125] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3]
|
|
__b3_from___b2:
|
|
// [125] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1
|
|
lda #<BITMAP
|
|
sta.z yoffs
|
|
lda #>BITMAP
|
|
sta.z yoffs+1
|
|
// [125] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp __b3
|
|
// [125] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3]
|
|
__b3_from___b4:
|
|
// [125] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy
|
|
// [125] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy
|
|
jmp __b3
|
|
// bitmap_init::@3
|
|
__b3:
|
|
// [126] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1
|
|
lda #7
|
|
sax.z __7
|
|
// [127] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1
|
|
lda.z yoffs
|
|
// [128] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa
|
|
ora.z __7
|
|
// [129] *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa
|
|
sta bitmap_plot_ylo,x
|
|
// [130] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1
|
|
lda.z yoffs+1
|
|
// [131] *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa
|
|
sta bitmap_plot_yhi,x
|
|
// [132] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #7
|
|
cmp.z __7
|
|
bne __b4_from___b3
|
|
jmp __b5
|
|
// bitmap_init::@5
|
|
__b5:
|
|
// [133] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1
|
|
clc
|
|
lda.z yoffs
|
|
adc #<$28*8
|
|
sta.z yoffs
|
|
lda.z yoffs+1
|
|
adc #>$28*8
|
|
sta.z yoffs+1
|
|
// [134] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4]
|
|
__b4_from___b3:
|
|
__b4_from___b5:
|
|
// [134] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy
|
|
jmp __b4
|
|
// bitmap_init::@4
|
|
__b4:
|
|
// [135] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [136] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1
|
|
cpx #0
|
|
bne __b3_from___b4
|
|
jmp __breturn
|
|
// bitmap_init::@return
|
|
__breturn:
|
|
// [137] return
|
|
rts
|
|
}
|
|
// sin16s_gen2
|
|
// Generate signed int 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* zp($1c) sintab)
|
|
sin16s_gen2: {
|
|
.const min = -$1001
|
|
.const max = $1001
|
|
.const ampl = max-min
|
|
.label wavelength = $200
|
|
.label __6 = $b
|
|
.label __8 = $25
|
|
.label step = $21
|
|
.label sintab = $1c
|
|
// u[4.28]
|
|
// Iterate over the table
|
|
.label x = $11
|
|
.label i = $f
|
|
// [139] call div32u16u
|
|
// [206] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u]
|
|
div32u16u_from_sin16s_gen2:
|
|
jsr div32u16u
|
|
// [140] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
|
|
jmp __b3
|
|
// sin16s_gen2::@3
|
|
__b3:
|
|
// [141] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2
|
|
// [142] phi from sin16s_gen2::@3 to sin16s_gen2::@1 [phi:sin16s_gen2::@3->sin16s_gen2::@1]
|
|
__b1_from___b3:
|
|
// [142] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word*) SINUS [phi:sin16s_gen2::@3->sin16s_gen2::@1#0] -- pwsz1=pwsc1
|
|
lda #<SINUS
|
|
sta.z sintab
|
|
lda #>SINUS
|
|
sta.z sintab+1
|
|
// [142] phi (dword) sin16s_gen2::x#2 = (dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#1] -- vduz1=vduc1
|
|
lda #<0
|
|
sta.z x
|
|
lda #>0
|
|
sta.z x+1
|
|
lda #<0>>$10
|
|
sta.z x+2
|
|
lda #>0>>$10
|
|
sta.z x+3
|
|
// [142] phi (word) sin16s_gen2::i#2 = (word) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#2] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z i
|
|
lda #>0
|
|
sta.z i+1
|
|
jmp __b1
|
|
// u[4.28]
|
|
// sin16s_gen2::@1
|
|
__b1:
|
|
// [143] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2 -- vwuz1_lt_vwuc1_then_la1
|
|
lda.z i+1
|
|
cmp #>wavelength
|
|
bcc __b2
|
|
bne !+
|
|
lda.z i
|
|
cmp #<wavelength
|
|
bcc __b2
|
|
!:
|
|
jmp __breturn
|
|
// sin16s_gen2::@return
|
|
__breturn:
|
|
// [144] return
|
|
rts
|
|
// sin16s_gen2::@2
|
|
__b2:
|
|
// [145] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2
|
|
lda.z x
|
|
sta.z sin16s.x
|
|
lda.z x+1
|
|
sta.z sin16s.x+1
|
|
lda.z x+2
|
|
sta.z sin16s.x+2
|
|
lda.z x+3
|
|
sta.z sin16s.x+3
|
|
// [146] call sin16s
|
|
jsr sin16s
|
|
// [147] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
|
|
jmp __b4
|
|
// sin16s_gen2::@4
|
|
__b4:
|
|
// [148] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0
|
|
// [149] call mul16s
|
|
// [63] phi from sin16s_gen2::@4 to mul16s [phi:sin16s_gen2::@4->mul16s]
|
|
mul16s_from___b4:
|
|
// [63] phi (signed word) mul16s::b#3 = (const signed word) sin16s_gen2::ampl#0 [phi:sin16s_gen2::@4->mul16s#0] -- vwsz1=vwsc1
|
|
lda #<ampl
|
|
sta.z mul16s.b
|
|
lda #>ampl
|
|
sta.z mul16s.b+1
|
|
// [63] phi (signed word) mul16s::a#3 = (signed word) mul16s::a#0 [phi:sin16s_gen2::@4->mul16s#1] -- register_copy
|
|
jsr mul16s
|
|
// [150] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
|
|
jmp __b5
|
|
// sin16s_gen2::@5
|
|
__b5:
|
|
// [151] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2
|
|
// [152] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$6 -- vwuz1=_hi_vdsz2
|
|
lda.z __6+2
|
|
sta.z __8
|
|
lda.z __6+3
|
|
sta.z __8+1
|
|
// [153] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2
|
|
ldy #0
|
|
lda.z __8
|
|
sta (sintab),y
|
|
iny
|
|
lda.z __8+1
|
|
sta (sintab),y
|
|
// [154] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1
|
|
lda #SIZEOF_SIGNED_WORD
|
|
clc
|
|
adc.z sintab
|
|
sta.z sintab
|
|
bcc !+
|
|
inc.z sintab+1
|
|
!:
|
|
// [155] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2
|
|
lda.z x
|
|
clc
|
|
adc.z step
|
|
sta.z x
|
|
lda.z x+1
|
|
adc.z step+1
|
|
sta.z x+1
|
|
lda.z x+2
|
|
adc.z step+2
|
|
sta.z x+2
|
|
lda.z x+3
|
|
adc.z step+3
|
|
sta.z x+3
|
|
// [156] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1
|
|
inc.z i
|
|
bne !+
|
|
inc.z i+1
|
|
!:
|
|
// [142] phi from sin16s_gen2::@5 to sin16s_gen2::@1 [phi:sin16s_gen2::@5->sin16s_gen2::@1]
|
|
__b1_from___b5:
|
|
// [142] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@5->sin16s_gen2::@1#0] -- register_copy
|
|
// [142] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#1] -- register_copy
|
|
// [142] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#2] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// sin16s
|
|
// Calculate signed int sinus sin(x)
|
|
// x: unsigned long input u[4.28] in the interval $00000000 - PI2_u4f28
|
|
// result: signed int sin(x) s[0.15] - using the full range -$7fff - $7fff
|
|
// sin16s(dword zp($15) x)
|
|
sin16s: {
|
|
.label __4 = $27
|
|
.label x = $15
|
|
.label return = 4
|
|
.label x1 = $2d
|
|
.label x2 = $19
|
|
.label x3 = $19
|
|
.label x3_6 = $2b
|
|
.label usinx = 4
|
|
.label x4 = $19
|
|
.label x5 = $2b
|
|
.label x5_128 = $2b
|
|
.label sinx = 4
|
|
// [157] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1
|
|
lda.z x+3
|
|
cmp #>PI_u4f28>>$10
|
|
bcc __b1_from_sin16s
|
|
bne !+
|
|
lda.z x+2
|
|
cmp #<PI_u4f28>>$10
|
|
bcc __b1_from_sin16s
|
|
bne !+
|
|
lda.z x+1
|
|
cmp #>PI_u4f28
|
|
bcc __b1_from_sin16s
|
|
bne !+
|
|
lda.z x
|
|
cmp #<PI_u4f28
|
|
bcc __b1_from_sin16s
|
|
!:
|
|
jmp __b4
|
|
// sin16s::@4
|
|
__b4:
|
|
// [158] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 -- vduz1=vduz1_minus_vduc1
|
|
lda.z x
|
|
sec
|
|
sbc #<PI_u4f28
|
|
sta.z x
|
|
lda.z x+1
|
|
sbc #>PI_u4f28
|
|
sta.z x+1
|
|
lda.z x+2
|
|
sbc #<PI_u4f28>>$10
|
|
sta.z x+2
|
|
lda.z x+3
|
|
sbc #>PI_u4f28>>$10
|
|
sta.z x+3
|
|
// [159] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1]
|
|
__b1_from___b4:
|
|
// [159] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuyy=vbuc1
|
|
ldy #1
|
|
// [159] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy
|
|
jmp __b1
|
|
// [159] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1]
|
|
__b1_from_sin16s:
|
|
// [159] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuyy=vbuc1
|
|
ldy #0
|
|
// [159] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy
|
|
jmp __b1
|
|
// sin16s::@1
|
|
__b1:
|
|
// [160] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1
|
|
lda.z x+3
|
|
cmp #>PI_HALF_u4f28>>$10
|
|
bcc __b2_from___b1
|
|
bne !+
|
|
lda.z x+2
|
|
cmp #<PI_HALF_u4f28>>$10
|
|
bcc __b2_from___b1
|
|
bne !+
|
|
lda.z x+1
|
|
cmp #>PI_HALF_u4f28
|
|
bcc __b2_from___b1
|
|
bne !+
|
|
lda.z x
|
|
cmp #<PI_HALF_u4f28
|
|
bcc __b2_from___b1
|
|
!:
|
|
jmp __b5
|
|
// sin16s::@5
|
|
__b5:
|
|
// [161] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1
|
|
lda #<PI_u4f28
|
|
sec
|
|
sbc.z x
|
|
sta.z x
|
|
lda #>PI_u4f28
|
|
sbc.z x+1
|
|
sta.z x+1
|
|
lda #<PI_u4f28>>$10
|
|
sbc.z x+2
|
|
sta.z x+2
|
|
lda #>PI_u4f28>>$10
|
|
sbc.z x+3
|
|
sta.z x+3
|
|
// [162] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2]
|
|
__b2_from___b1:
|
|
__b2_from___b5:
|
|
// [162] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy
|
|
jmp __b2
|
|
// sin16s::@2
|
|
__b2:
|
|
// [163] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz2_rol_3
|
|
lda.z x
|
|
asl
|
|
sta.z __4
|
|
lda.z x+1
|
|
rol
|
|
sta.z __4+1
|
|
lda.z x+2
|
|
rol
|
|
sta.z __4+2
|
|
lda.z x+3
|
|
rol
|
|
sta.z __4+3
|
|
asl.z __4
|
|
rol.z __4+1
|
|
rol.z __4+2
|
|
rol.z __4+3
|
|
asl.z __4
|
|
rol.z __4+1
|
|
rol.z __4+2
|
|
rol.z __4+3
|
|
// [164] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2
|
|
lda.z __4+2
|
|
sta.z x1
|
|
lda.z __4+3
|
|
sta.z x1+1
|
|
// [165] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2
|
|
lda.z x1
|
|
sta.z mulu16_sel.v1
|
|
lda.z x1+1
|
|
sta.z mulu16_sel.v1+1
|
|
// [166] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2
|
|
lda.z x1
|
|
sta.z mulu16_sel.v2
|
|
lda.z x1+1
|
|
sta.z mulu16_sel.v2+1
|
|
// [167] call mulu16_sel
|
|
// [197] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel]
|
|
mulu16_sel_from___b2:
|
|
// [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy
|
|
// [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy
|
|
jsr mulu16_sel
|
|
// [168] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
|
jmp __b7
|
|
// sin16s::@7
|
|
__b7:
|
|
// [169] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return
|
|
sta.z x2
|
|
lda.z mulu16_sel.return+1
|
|
sta.z x2+1
|
|
// [170] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
|
// [171] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2
|
|
lda.z x1
|
|
sta.z mulu16_sel.v2
|
|
lda.z x1+1
|
|
sta.z mulu16_sel.v2+1
|
|
// [172] call mulu16_sel
|
|
// [197] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel]
|
|
mulu16_sel_from___b7:
|
|
// [197] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1
|
|
ldx #1
|
|
// [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy
|
|
// [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy
|
|
jsr mulu16_sel
|
|
// [173] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return
|
|
sta.z mulu16_sel.return_1
|
|
lda.z mulu16_sel.return+1
|
|
sta.z mulu16_sel.return_1+1
|
|
jmp __b8
|
|
// sin16s::@8
|
|
__b8:
|
|
// [174] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
|
// [175] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
|
// [176] call mulu16_sel
|
|
// [197] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel]
|
|
mulu16_sel_from___b8:
|
|
// [197] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1
|
|
ldx #1
|
|
// [197] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1
|
|
lda #<$10000/6
|
|
sta.z mulu16_sel.v2
|
|
lda #>$10000/6
|
|
sta.z mulu16_sel.v2+1
|
|
// [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy
|
|
jsr mulu16_sel
|
|
// [177] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
|
jmp __b9
|
|
// sin16s::@9
|
|
__b9:
|
|
// [178] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
|
// [179] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3
|
|
lda.z x1
|
|
sec
|
|
sbc.z x3_6
|
|
sta.z usinx
|
|
lda.z x1+1
|
|
sbc.z x3_6+1
|
|
sta.z usinx+1
|
|
// [180] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
|
// [181] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2
|
|
lda.z x1
|
|
sta.z mulu16_sel.v2
|
|
lda.z x1+1
|
|
sta.z mulu16_sel.v2+1
|
|
// [182] call mulu16_sel
|
|
// [197] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel]
|
|
mulu16_sel_from___b9:
|
|
// [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy
|
|
// [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy
|
|
jsr mulu16_sel
|
|
// [183] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return
|
|
sta.z mulu16_sel.return_1
|
|
lda.z mulu16_sel.return+1
|
|
sta.z mulu16_sel.return_1+1
|
|
jmp __b10
|
|
// sin16s::@10
|
|
__b10:
|
|
// [184] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
|
// [185] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
|
// [186] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2
|
|
lda.z x1
|
|
sta.z mulu16_sel.v2
|
|
lda.z x1+1
|
|
sta.z mulu16_sel.v2+1
|
|
// [187] call mulu16_sel
|
|
// [197] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel]
|
|
mulu16_sel_from___b10:
|
|
// [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy
|
|
// [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy
|
|
jsr mulu16_sel
|
|
// [188] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
|
jmp __b11
|
|
// sin16s::@11
|
|
__b11:
|
|
// [189] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
|
// [190] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4
|
|
lsr.z x5_128+1
|
|
ror.z x5_128
|
|
lsr.z x5_128+1
|
|
ror.z x5_128
|
|
lsr.z x5_128+1
|
|
ror.z x5_128
|
|
lsr.z x5_128+1
|
|
ror.z x5_128
|
|
// [191] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2
|
|
lda.z usinx
|
|
clc
|
|
adc.z x5_128
|
|
sta.z usinx
|
|
lda.z usinx+1
|
|
adc.z x5_128+1
|
|
sta.z usinx+1
|
|
// [192] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuyy_eq_0_then_la1
|
|
cpy #0
|
|
beq __b12
|
|
jmp __b6
|
|
// sin16s::@6
|
|
__b6:
|
|
// [193] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1
|
|
sec
|
|
lda #0
|
|
sbc.z sinx
|
|
sta.z sinx
|
|
lda #0
|
|
sbc.z sinx+1
|
|
sta.z sinx+1
|
|
// [194] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3]
|
|
__b3_from___b12:
|
|
__b3_from___b6:
|
|
// [194] phi (signed word) sin16s::return#1 = (signed word) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy
|
|
jmp __b3
|
|
// sin16s::@3
|
|
__b3:
|
|
jmp __breturn
|
|
// sin16s::@return
|
|
__breturn:
|
|
// [195] return
|
|
rts
|
|
// sin16s::@12
|
|
__b12:
|
|
// [196] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
|
jmp __b3_from___b12
|
|
}
|
|
// mulu16_sel
|
|
// Calculate val*val for two unsigned int 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 zp($19) v1, word zp($1e) v2, byte register(X) select)
|
|
mulu16_sel: {
|
|
.label __0 = $b
|
|
.label __1 = $b
|
|
.label v1 = $19
|
|
.label v2 = $1e
|
|
.label return = $2b
|
|
.label return_1 = $19
|
|
// [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2
|
|
lda.z v1
|
|
sta.z mul16u.a
|
|
lda.z v1+1
|
|
sta.z mul16u.a+1
|
|
// [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
|
// [200] call mul16u
|
|
// [81] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u]
|
|
mul16u_from_mulu16_sel:
|
|
// [81] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy
|
|
// [81] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy
|
|
jsr mul16u
|
|
// [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
|
jmp __b1
|
|
// mulu16_sel::@1
|
|
__b1:
|
|
// [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
|
// [203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx
|
|
cpx #0
|
|
beq !e+
|
|
!:
|
|
asl.z __1
|
|
rol.z __1+1
|
|
rol.z __1+2
|
|
rol.z __1+3
|
|
dex
|
|
bne !-
|
|
!e:
|
|
// [204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2
|
|
lda.z __1+2
|
|
sta.z return
|
|
lda.z __1+3
|
|
sta.z return+1
|
|
jmp __breturn
|
|
// mulu16_sel::@return
|
|
__breturn:
|
|
// [205] return
|
|
rts
|
|
}
|
|
// div32u16u
|
|
// Divide unsigned 32-bit unsigned long dividend with a 16-bit unsigned int divisor
|
|
// The 16-bit unsigned int remainder can be found in rem16u after the division
|
|
div32u16u: {
|
|
.label quotient_hi = $2d
|
|
.label quotient_lo = $25
|
|
.label return = $21
|
|
// [207] call divr16u
|
|
// [216] phi from div32u16u to divr16u [phi:div32u16u->divr16u]
|
|
divr16u_from_div32u16u:
|
|
// [216] phi (word) divr16u::dividend#5 = >(const nomodify dword) PI2_u4f28 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1
|
|
lda #<PI2_u4f28>>$10
|
|
sta.z divr16u.dividend
|
|
lda #>PI2_u4f28>>$10
|
|
sta.z divr16u.dividend+1
|
|
// [216] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z divr16u.rem
|
|
lda #>0
|
|
sta.z divr16u.rem+1
|
|
jsr divr16u
|
|
// [208] (word) divr16u::return#2 ← (word) divr16u::return#0
|
|
jmp __b1
|
|
// div32u16u::@1
|
|
__b1:
|
|
// [209] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2
|
|
lda.z divr16u.return
|
|
sta.z quotient_hi
|
|
lda.z divr16u.return+1
|
|
sta.z quotient_hi+1
|
|
// [210] (word) divr16u::rem#4 ← (word) rem16u#1
|
|
// [211] call divr16u
|
|
// [216] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u]
|
|
divr16u_from___b1:
|
|
// [216] phi (word) divr16u::dividend#5 = <(const nomodify dword) PI2_u4f28 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1
|
|
lda #<PI2_u4f28&$ffff
|
|
sta.z divr16u.dividend
|
|
lda #>PI2_u4f28&$ffff
|
|
sta.z divr16u.dividend+1
|
|
// [216] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy
|
|
jsr divr16u
|
|
// [212] (word) divr16u::return#3 ← (word) divr16u::return#0
|
|
jmp __b2
|
|
// div32u16u::@2
|
|
__b2:
|
|
// [213] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
|
// [214] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3
|
|
lda.z quotient_hi
|
|
sta.z return+2
|
|
lda.z quotient_hi+1
|
|
sta.z return+3
|
|
lda.z quotient_lo
|
|
sta.z return
|
|
lda.z quotient_lo+1
|
|
sta.z return+1
|
|
jmp __breturn
|
|
// div32u16u::@return
|
|
__breturn:
|
|
// [215] return
|
|
rts
|
|
}
|
|
// divr16u
|
|
// Performs division on two 16 bit unsigned ints and an initial remainder
|
|
// Returns the quotient dividend/divisor.
|
|
// The final remainder will be set into the global variable rem16u
|
|
// Implemented using simple binary division
|
|
// divr16u(word zp($1e) dividend, word zp($19) rem)
|
|
divr16u: {
|
|
.label rem = $19
|
|
.label dividend = $1e
|
|
.label quotient = $25
|
|
.label return = $25
|
|
// [217] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
|
|
__b1_from_divr16u:
|
|
// [217] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [217] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z quotient
|
|
lda #>0
|
|
sta.z quotient+1
|
|
// [217] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy
|
|
// [217] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy
|
|
jmp __b1
|
|
// [217] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
|
|
__b1_from___b3:
|
|
// [217] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy
|
|
// [217] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy
|
|
// [217] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy
|
|
// [217] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy
|
|
jmp __b1
|
|
// divr16u::@1
|
|
__b1:
|
|
// [218] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z rem
|
|
rol.z rem+1
|
|
// [219] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1
|
|
lda.z dividend+1
|
|
// [220] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1
|
|
and #$80
|
|
// [221] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1
|
|
cmp #0
|
|
beq __b2_from___b1
|
|
jmp __b4
|
|
// divr16u::@4
|
|
__b4:
|
|
// [222] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1
|
|
lda #1
|
|
ora.z rem
|
|
sta.z rem
|
|
// [223] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
|
|
__b2_from___b1:
|
|
__b2_from___b4:
|
|
// [223] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy
|
|
jmp __b2
|
|
// divr16u::@2
|
|
__b2:
|
|
// [224] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z dividend
|
|
rol.z dividend+1
|
|
// [225] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z quotient
|
|
rol.z quotient+1
|
|
// [226] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1
|
|
lda.z rem+1
|
|
cmp #>sin16s_gen2.wavelength
|
|
bcc __b3_from___b2
|
|
bne !+
|
|
lda.z rem
|
|
cmp #<sin16s_gen2.wavelength
|
|
bcc __b3_from___b2
|
|
!:
|
|
jmp __b5
|
|
// divr16u::@5
|
|
__b5:
|
|
// [227] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1
|
|
inc.z quotient
|
|
bne !+
|
|
inc.z quotient+1
|
|
!:
|
|
// [228] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1
|
|
lda.z rem
|
|
sec
|
|
sbc #<sin16s_gen2.wavelength
|
|
sta.z rem
|
|
lda.z rem+1
|
|
sbc #>sin16s_gen2.wavelength
|
|
sta.z rem+1
|
|
// [229] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
|
|
__b3_from___b2:
|
|
__b3_from___b5:
|
|
// [229] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy
|
|
// [229] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy
|
|
jmp __b3
|
|
// divr16u::@3
|
|
__b3:
|
|
// [230] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [231] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #$10
|
|
bne __b1_from___b3
|
|
jmp __b6
|
|
// divr16u::@6
|
|
__b6:
|
|
// [232] (word) rem16u#1 ← (word) divr16u::rem#11
|
|
jmp __breturn
|
|
// divr16u::@return
|
|
__breturn:
|
|
// [233] return
|
|
rts
|
|
}
|
|
// irq
|
|
// Interrupt Routine counting frames
|
|
irq: {
|
|
// entry interrupt(HARDWARE_CLOBBER)
|
|
sta rega+1
|
|
// [234] *((const nomodify byte*) BG_COLOR) ← (const nomodify byte) WHITE -- _deref_pbuc1=vbuc2
|
|
lda #WHITE
|
|
sta BG_COLOR
|
|
// [235] if((byte) 0==(volatile byte) frame_cnt) goto irq::@1 -- vbuc1_eq_vbuz1_then_la1
|
|
lda #0
|
|
cmp.z frame_cnt
|
|
beq __b1
|
|
jmp __b2
|
|
// irq::@2
|
|
__b2:
|
|
// [236] (volatile byte) frame_cnt ← ++ (volatile byte) frame_cnt -- vbuz1=_inc_vbuz1
|
|
inc.z frame_cnt
|
|
jmp __b1
|
|
// irq::@1
|
|
__b1:
|
|
// [237] *((const nomodify byte*) BG_COLOR) ← (const nomodify byte) BLACK -- _deref_pbuc1=vbuc2
|
|
lda #BLACK
|
|
sta BG_COLOR
|
|
// [238] *((const nomodify byte*) IRQ_STATUS) ← (const nomodify byte) IRQ_RASTER -- _deref_pbuc1=vbuc2
|
|
// Acknowledge the IRQ
|
|
lda #IRQ_RASTER
|
|
sta IRQ_STATUS
|
|
jmp __breturn
|
|
// irq::@return
|
|
__breturn:
|
|
// [239] return - exit interrupt(HARDWARE_CLOBBER)
|
|
rega:
|
|
lda #00
|
|
rti
|
|
}
|
|
// File Data
|
|
// Tables for the plotter - initialized by calling bitmap_init();
|
|
bitmap_plot_ylo: .fill $100, 0
|
|
bitmap_plot_yhi: .fill $100, 0
|
|
bitmap_plot_bit: .fill $100, 0
|
|
plots_per_frame: .fill $100, 0
|
|
.align $100
|
|
SINUS: .fill 2*$200, 0
|
|
|
|
ASSEMBLER OPTIMIZATIONS
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __bend
|
|
Removing instruction jmp __b9
|
|
Removing instruction jmp __b10
|
|
Removing instruction jmp __b11
|
|
Removing instruction jmp toD0181
|
|
Removing instruction jmp __b8
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b12
|
|
Removing instruction jmp __b13
|
|
Removing instruction jmp __b14
|
|
Removing instruction jmp __b16
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b17
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b15
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b7
|
|
Removing instruction jmp __b8
|
|
Removing instruction jmp __b9
|
|
Removing instruction jmp __b10
|
|
Removing instruction jmp __b11
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Removing instruction lda #>0
|
|
Removing instruction lda #<0
|
|
Removing instruction lda #>0
|
|
Removing instruction lda #>0
|
|
Removing instruction lda #>0
|
|
Removing instruction ldy #0
|
|
Removing instruction lda #>0
|
|
Removing instruction lda #>0
|
|
Removing instruction lda #>0
|
|
Removing instruction lda #>0
|
|
Replacing instruction lda #<0 with TXA
|
|
Removing instruction lda #>0
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
Replacing label __b16_from___b14 with __b3
|
|
Replacing label __b16_from___b14 with __b3
|
|
Replacing label __b17_from___b3 with __b4
|
|
Replacing label __b17_from___b3 with __b4
|
|
Replacing label __b5_from___b4 with __b5_from___b6
|
|
Replacing label __b5_from___b4 with __b5_from___b6
|
|
Replacing label __b5_from___b15 with __b5
|
|
Replacing label __b1 with __b2
|
|
Replacing label __b1_from___b5 with __b1
|
|
Replacing label __b2_from___b1 with __b2
|
|
Replacing label __b3_from___b2 with __b3
|
|
Replacing label __b2_from___b3 with __b2
|
|
Replacing label __b6_from___b1 with __b2
|
|
Replacing label __b1_from___b2 with __b1
|
|
Replacing label __b4_from___b3 with __b4
|
|
Replacing label __b3_from___b4 with __b3
|
|
Replacing label __b2_from___b1 with __b2
|
|
Replacing label __b2_from___b1 with __b2
|
|
Replacing label __b2_from___b1 with __b2
|
|
Replacing label __b2_from___b1 with __b2
|
|
Replacing label __b3_from___b12 with __b3
|
|
Replacing label __b2_from___b1 with __b2
|
|
Replacing label __b3_from___b2 with __b3
|
|
Replacing label __b3_from___b2 with __b3
|
|
Replacing label __b1_from___b3 with __b1
|
|
Removing instruction __b1:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction main_from___b2:
|
|
Removing instruction __bend_from___b2:
|
|
Removing instruction __b9_from_main:
|
|
Removing instruction bitmap_init_from___b9:
|
|
Removing instruction __b10_from___b9:
|
|
Removing instruction bitmap_clear_from___b10:
|
|
Removing instruction toD0181_from___b11:
|
|
Removing instruction toD0181:
|
|
Removing instruction __b1:
|
|
Removing instruction __b16_from___b14:
|
|
Removing instruction __b16:
|
|
Removing instruction __b3_from___b16:
|
|
Removing instruction __b17_from___b3:
|
|
Removing instruction __b17:
|
|
Removing instruction __b4_from___b17:
|
|
Removing instruction __b5_from___b4:
|
|
Removing instruction __b5_from___b15:
|
|
Removing instruction __b1_from___b3:
|
|
Removing instruction __b1_from___b5:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction __b2_from___b4:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b3_from___b2:
|
|
Removing instruction __b3_from___b4:
|
|
Removing instruction __b1_from_bitmap_clear:
|
|
Removing instruction memset_from___b1:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction __b2_from___b3:
|
|
Removing instruction __b1_from___b2:
|
|
Removing instruction __b6_from___b1:
|
|
Removing instruction __b6:
|
|
Removing instruction __b2_from___b6:
|
|
Removing instruction __b3_from___b4:
|
|
Removing instruction __b4_from___b3:
|
|
Removing instruction __b4_from___b5:
|
|
Removing instruction __b1_from___b3:
|
|
Removing instruction mul16s_from___b4:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction __b2_from___b5:
|
|
Removing instruction mulu16_sel_from___b8:
|
|
Removing instruction __b3_from___b12:
|
|
Removing instruction __b3_from___b6:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from___b3:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction __b2_from___b4:
|
|
Removing instruction __b3_from___b2:
|
|
Removing instruction __b3_from___b5:
|
|
Removing instruction __breturn:
|
|
Removing instruction __breturn:
|
|
Succesful ASM optimization Pass5RedundantLabelElimination
|
|
Removing instruction __b2:
|
|
Removing instruction __bend:
|
|
Removing instruction sin16s_gen2_from_main:
|
|
Removing instruction __b9:
|
|
Removing instruction __b10:
|
|
Removing instruction __b11:
|
|
Removing instruction __b8:
|
|
Removing instruction __b1_from___b8:
|
|
Removing instruction mul16s_from___b2:
|
|
Removing instruction __b12:
|
|
Removing instruction mul16s_from___b12:
|
|
Removing instruction __b13:
|
|
Removing instruction __b14:
|
|
Removing instruction __b3_from___b14:
|
|
Removing instruction __b4_from___b3:
|
|
Removing instruction __b15:
|
|
Removing instruction __b6:
|
|
Removing instruction __b1_from___b5:
|
|
Removing instruction __breturn:
|
|
Removing instruction mul16u_from_mul16s:
|
|
Removing instruction __b5:
|
|
Removing instruction __b3:
|
|
Removing instruction __b4:
|
|
Removing instruction __b1_from_mul16u:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b4:
|
|
Removing instruction __b1_from___b3:
|
|
Removing instruction __breturn:
|
|
Removing instruction memset_from_bitmap_clear:
|
|
Removing instruction __b1:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1:
|
|
Removing instruction __b1_from_bitmap_init:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction __b3_from___b2:
|
|
Removing instruction __b5:
|
|
Removing instruction __breturn:
|
|
Removing instruction div32u16u_from_sin16s_gen2:
|
|
Removing instruction __b3:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b4:
|
|
Removing instruction __b5:
|
|
Removing instruction __b1_from___b5:
|
|
Removing instruction __b4:
|
|
Removing instruction __b1_from___b4:
|
|
Removing instruction __b5:
|
|
Removing instruction mulu16_sel_from___b2:
|
|
Removing instruction __b7:
|
|
Removing instruction mulu16_sel_from___b7:
|
|
Removing instruction __b8:
|
|
Removing instruction __b9:
|
|
Removing instruction mulu16_sel_from___b9:
|
|
Removing instruction __b10:
|
|
Removing instruction mulu16_sel_from___b10:
|
|
Removing instruction __b11:
|
|
Removing instruction __b6:
|
|
Removing instruction mul16u_from_mulu16_sel:
|
|
Removing instruction __b1:
|
|
Removing instruction __breturn:
|
|
Removing instruction divr16u_from_div32u16u:
|
|
Removing instruction __b1:
|
|
Removing instruction divr16u_from___b1:
|
|
Removing instruction __b2:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from_divr16u:
|
|
Removing instruction __b4:
|
|
Removing instruction __b5:
|
|
Removing instruction __b6:
|
|
Removing instruction __b2:
|
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
|
Skipping double jump to __b5 in bne __b5_from___b6
|
|
Skipping double jump to __b5 in bne __b5_from___b6
|
|
Skipping double jump to __b3 in beq __b12
|
|
Replacing jump to rts with rts in jmp __b3
|
|
Succesful ASM optimization Pass5DoubleJumpElimination
|
|
Relabelling long label __b5_from___b6 to __b1
|
|
Relabelling long label __b1_from_sin16s to __b4
|
|
Succesful ASM optimization Pass5RelabelLongLabels
|
|
Adding RTS to root block
|
|
Succesful ASM optimization Pass5AddMainRts
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b1
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Removing instruction lda #<0
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
Removing instruction __b1:
|
|
Succesful ASM optimization Pass5RedundantLabelElimination
|
|
Removing instruction __b12:
|
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
|
Removing unreachable instruction rts
|
|
Succesful ASM optimization Pass5UnreachableCodeElimination
|
|
|
|
FINAL SYMBOL TABLE
|
|
(label) @1
|
|
(label) @2
|
|
(label) @begin
|
|
(label) @end
|
|
(const nomodify byte*) BG_COLOR = (byte*) 53281
|
|
(const byte*) BITMAP = (byte*) 8192
|
|
(const nomodify byte) BLACK = (byte) 0
|
|
(const nomodify byte*) BORDER_COLOR = (byte*) 53280
|
|
(const nomodify struct MOS6526_CIA*) CIA1 = (struct MOS6526_CIA*) 56320
|
|
(const nomodify byte) CIA_INTERRUPT_CLEAR = (byte) $7f
|
|
(const nomodify byte*) D011 = (byte*) 53265
|
|
(const nomodify byte*) D018 = (byte*) 53272
|
|
(const nomodify void()**) HARDWARE_IRQ = (void()**) 65534
|
|
(const nomodify byte*) IRQ_ENABLE = (byte*) 53274
|
|
(const nomodify byte) IRQ_RASTER = (byte) 1
|
|
(const nomodify byte*) IRQ_STATUS = (byte*) 53273
|
|
(byte) MOS6526_CIA::INTERRUPT
|
|
(byte) MOS6526_CIA::PORT_A
|
|
(byte) MOS6526_CIA::PORT_A_DDR
|
|
(byte) MOS6526_CIA::PORT_B
|
|
(byte) MOS6526_CIA::PORT_B_DDR
|
|
(byte) MOS6526_CIA::SERIAL_DATA
|
|
(word) MOS6526_CIA::TIMER_A
|
|
(byte) MOS6526_CIA::TIMER_A_CONTROL
|
|
(word) MOS6526_CIA::TIMER_B
|
|
(byte) MOS6526_CIA::TIMER_B_CONTROL
|
|
(byte) MOS6526_CIA::TOD_10THS
|
|
(byte) MOS6526_CIA::TOD_HOURS
|
|
(byte) MOS6526_CIA::TOD_MIN
|
|
(byte) MOS6526_CIA::TOD_SEC
|
|
(byte) MOS6569_VICII::BG_COLOR
|
|
(byte) MOS6569_VICII::BG_COLOR1
|
|
(byte) MOS6569_VICII::BG_COLOR2
|
|
(byte) MOS6569_VICII::BG_COLOR3
|
|
(byte) MOS6569_VICII::BORDER_COLOR
|
|
(byte) MOS6569_VICII::CONTROL1
|
|
(byte) MOS6569_VICII::CONTROL2
|
|
(byte) MOS6569_VICII::IRQ_ENABLE
|
|
(byte) MOS6569_VICII::IRQ_STATUS
|
|
(byte) MOS6569_VICII::LIGHTPEN_X
|
|
(byte) MOS6569_VICII::LIGHTPEN_Y
|
|
(byte) MOS6569_VICII::MEMORY
|
|
(byte) MOS6569_VICII::RASTER
|
|
(byte) MOS6569_VICII::SPRITE0_COLOR
|
|
(byte) MOS6569_VICII::SPRITE0_X
|
|
(byte) MOS6569_VICII::SPRITE0_Y
|
|
(byte) MOS6569_VICII::SPRITE1_COLOR
|
|
(byte) MOS6569_VICII::SPRITE1_X
|
|
(byte) MOS6569_VICII::SPRITE1_Y
|
|
(byte) MOS6569_VICII::SPRITE2_COLOR
|
|
(byte) MOS6569_VICII::SPRITE2_X
|
|
(byte) MOS6569_VICII::SPRITE2_Y
|
|
(byte) MOS6569_VICII::SPRITE3_COLOR
|
|
(byte) MOS6569_VICII::SPRITE3_X
|
|
(byte) MOS6569_VICII::SPRITE3_Y
|
|
(byte) MOS6569_VICII::SPRITE4_COLOR
|
|
(byte) MOS6569_VICII::SPRITE4_X
|
|
(byte) MOS6569_VICII::SPRITE4_Y
|
|
(byte) MOS6569_VICII::SPRITE5_COLOR
|
|
(byte) MOS6569_VICII::SPRITE5_X
|
|
(byte) MOS6569_VICII::SPRITE5_Y
|
|
(byte) MOS6569_VICII::SPRITE6_COLOR
|
|
(byte) MOS6569_VICII::SPRITE6_X
|
|
(byte) MOS6569_VICII::SPRITE6_Y
|
|
(byte) MOS6569_VICII::SPRITE7_COLOR
|
|
(byte) MOS6569_VICII::SPRITE7_X
|
|
(byte) MOS6569_VICII::SPRITE7_Y
|
|
(byte) MOS6569_VICII::SPRITES_BG_COLLISION
|
|
(byte) MOS6569_VICII::SPRITES_COLLISION
|
|
(byte) MOS6569_VICII::SPRITES_ENABLE
|
|
(byte) MOS6569_VICII::SPRITES_EXPAND_X
|
|
(byte) MOS6569_VICII::SPRITES_EXPAND_Y
|
|
(byte) MOS6569_VICII::SPRITES_MC
|
|
(byte) MOS6569_VICII::SPRITES_MCOLOR1
|
|
(byte) MOS6569_VICII::SPRITES_MCOLOR2
|
|
(byte) MOS6569_VICII::SPRITES_PRIORITY
|
|
(byte) MOS6569_VICII::SPRITES_XMSB
|
|
(byte) MOS6581_SID::CH1_ATTACK_DECAY
|
|
(byte) MOS6581_SID::CH1_CONTROL
|
|
(word) MOS6581_SID::CH1_FREQ
|
|
(word) MOS6581_SID::CH1_PULSE_WIDTH
|
|
(byte) MOS6581_SID::CH1_SUSTAIN_RELEASE
|
|
(byte) MOS6581_SID::CH2_ATTACK_DECAY
|
|
(byte) MOS6581_SID::CH2_CONTROL
|
|
(word) MOS6581_SID::CH2_FREQ
|
|
(word) MOS6581_SID::CH2_PULSE_WIDTH
|
|
(byte) MOS6581_SID::CH2_SUSTAIN_RELEASE
|
|
(byte) MOS6581_SID::CH3_ATTACK_DECAY
|
|
(byte) MOS6581_SID::CH3_CONTROL
|
|
(byte) MOS6581_SID::CH3_ENV
|
|
(word) MOS6581_SID::CH3_FREQ
|
|
(byte) MOS6581_SID::CH3_OSC
|
|
(word) MOS6581_SID::CH3_PULSE_WIDTH
|
|
(byte) MOS6581_SID::CH3_SUSTAIN_RELEASE
|
|
(byte) MOS6581_SID::FILTER_CUTOFF_HIGH
|
|
(byte) MOS6581_SID::FILTER_CUTOFF_LOW
|
|
(byte) MOS6581_SID::FILTER_SETUP
|
|
(byte) MOS6581_SID::POT_X
|
|
(byte) MOS6581_SID::POT_Y
|
|
(byte) MOS6581_SID::VOLUME_FILTER_MODE
|
|
(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = (byte) $d
|
|
(const nomodify dword) PI2_u4f28 = (dword) $6487ed51
|
|
(const nomodify dword) PI_HALF_u4f28 = (dword) $1921fb54
|
|
(const nomodify dword) PI_u4f28 = (dword) $3243f6a9
|
|
(const nomodify byte*) PROCPORT = (byte*) 1
|
|
(const nomodify byte*) PROCPORT_DDR = (byte*) 0
|
|
(const nomodify byte) PROCPORT_DDR_MEMORY_MASK = (byte) 7
|
|
(const nomodify byte) PROCPORT_RAM_IO = (byte) 5
|
|
(const nomodify byte*) RASTER = (byte*) 53266
|
|
(const byte*) SCREEN = (byte*) 1024
|
|
(const signed word*) SINUS[(number) $200] = { fill( $200, 0) }
|
|
(const byte) SIZEOF_SIGNED_WORD = (byte) 2
|
|
(const nomodify byte) VIC_BMM = (byte) $20
|
|
(const nomodify byte*) VIC_CONTROL = (byte*) 53265
|
|
(const nomodify byte) VIC_DEN = (byte) $10
|
|
(const nomodify byte) VIC_RSEL = (byte) 8
|
|
(const nomodify byte) WHITE = (byte) 1
|
|
(void()) bitmap_clear((byte) bitmap_clear::bgcol , (byte) bitmap_clear::fgcol)
|
|
(label) bitmap_clear::@1
|
|
(label) bitmap_clear::@return
|
|
(byte) bitmap_clear::bgcol
|
|
(byte) bitmap_clear::col
|
|
(const byte) bitmap_clear::col#0 col = (const nomodify byte) WHITE*(byte) $10
|
|
(byte) bitmap_clear::fgcol
|
|
(byte*) bitmap_gfx
|
|
(void()) bitmap_init((byte*) bitmap_init::gfx , (byte*) bitmap_init::screen)
|
|
(byte~) bitmap_init::$4 reg byte a 2002.0
|
|
(byte~) bitmap_init::$5 reg byte a 2002.0
|
|
(byte~) bitmap_init::$6 reg byte a 2002.0
|
|
(byte~) bitmap_init::$7 zp[1]:32 500.5
|
|
(label) bitmap_init::@1
|
|
(label) bitmap_init::@2
|
|
(label) bitmap_init::@3
|
|
(label) bitmap_init::@4
|
|
(label) bitmap_init::@5
|
|
(label) bitmap_init::@6
|
|
(label) bitmap_init::@return
|
|
(byte) bitmap_init::bits
|
|
(byte) bitmap_init::bits#1 reg byte a 1001.0
|
|
(byte) bitmap_init::bits#3 reg byte a 1501.5
|
|
(byte) bitmap_init::bits#4 reg byte a 667.3333333333334
|
|
(byte*) bitmap_init::gfx
|
|
(byte*) bitmap_init::screen
|
|
(byte) bitmap_init::x
|
|
(byte) bitmap_init::x#1 reg byte x 1501.5
|
|
(byte) bitmap_init::x#2 reg byte x 500.5
|
|
(byte) bitmap_init::y
|
|
(byte) bitmap_init::y#1 reg byte x 1501.5
|
|
(byte) bitmap_init::y#2 reg byte x 500.5
|
|
(byte*) bitmap_init::yoffs
|
|
(byte*) bitmap_init::yoffs#1 yoffs zp[2]:15 2002.0
|
|
(byte*) bitmap_init::yoffs#2 yoffs zp[2]:15 625.625
|
|
(byte*) bitmap_init::yoffs#4 yoffs zp[2]:15 1001.0
|
|
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
|
(word~) bitmap_plot::$0 zp[2]:43 2002.0
|
|
(byte~) bitmap_plot::$1 reg byte x 2002.0
|
|
(label) bitmap_plot::@return
|
|
(byte*) bitmap_plot::plotter
|
|
(word) bitmap_plot::plotter#0 plotter zp[2]:37 500.5
|
|
(byte*) bitmap_plot::plotter#1 plotter zp[2]:37 1501.5
|
|
(word) bitmap_plot::x
|
|
(word) bitmap_plot::x#0 x zp[2]:28 420.59999999999997
|
|
(byte) bitmap_plot::y
|
|
(byte) bitmap_plot::y#0 reg byte a 2103.0
|
|
(const to_nomodify byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) }
|
|
(const to_nomodify byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) }
|
|
(const to_nomodify byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) }
|
|
(byte*) bitmap_screen
|
|
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
|
|
(label) div32u16u::@1
|
|
(label) div32u16u::@2
|
|
(label) div32u16u::@return
|
|
(dword) div32u16u::dividend
|
|
(word) div32u16u::divisor
|
|
(dword) div32u16u::quotient
|
|
(word) div32u16u::quotient_hi
|
|
(word) div32u16u::quotient_hi#0 quotient_hi zp[2]:45 400.4
|
|
(word) div32u16u::quotient_lo
|
|
(word) div32u16u::quotient_lo#0 quotient_lo zp[2]:37 2002.0
|
|
(dword) div32u16u::return
|
|
(dword) div32u16u::return#0 return zp[4]:33 367.33333333333337
|
|
(dword) div32u16u::return#2 return zp[4]:33 202.0
|
|
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
|
(byte~) divr16u::$1 reg byte a 200002.0
|
|
(byte~) divr16u::$2 reg byte a 200002.0
|
|
(label) divr16u::@1
|
|
(label) divr16u::@2
|
|
(label) divr16u::@3
|
|
(label) divr16u::@4
|
|
(label) divr16u::@5
|
|
(label) divr16u::@6
|
|
(label) divr16u::@return
|
|
(word) divr16u::dividend
|
|
(word) divr16u::dividend#0 dividend zp[2]:30 25000.25
|
|
(word) divr16u::dividend#3 dividend zp[2]:30 44286.28571428572
|
|
(word) divr16u::dividend#5 dividend zp[2]:30 10001.0
|
|
(word) divr16u::divisor
|
|
(byte) divr16u::i
|
|
(byte) divr16u::i#1 reg byte x 150001.5
|
|
(byte) divr16u::i#2 reg byte x 15384.76923076923
|
|
(word) divr16u::quotient
|
|
(word) divr16u::quotient#1 quotient zp[2]:37 150001.5
|
|
(word) divr16u::quotient#2 quotient zp[2]:37 100001.0
|
|
(word) divr16u::quotient#3 quotient zp[2]:37 25000.25
|
|
(word) divr16u::rem
|
|
(word) divr16u::rem#0 rem zp[2]:25 75000.75
|
|
(word) divr16u::rem#1 rem zp[2]:25 200002.0
|
|
(word) divr16u::rem#10 rem zp[2]:25 11002.0
|
|
(word) divr16u::rem#11 rem zp[2]:25 103334.66666666667
|
|
(word) divr16u::rem#2 rem zp[2]:25 200002.0
|
|
(word) divr16u::rem#4 rem zp[2]:25 2002.0
|
|
(word) divr16u::rem#5 rem zp[2]:25 210003.0
|
|
(word) divr16u::rem#6 rem zp[2]:25 100001.0
|
|
(word) divr16u::return
|
|
(word) divr16u::return#0 return zp[2]:37 43143.57142857143
|
|
(word) divr16u::return#2 return zp[2]:37 2002.0
|
|
(word) divr16u::return#3 return zp[2]:37 2002.0
|
|
(volatile byte) frame_cnt loadstore zp[1]:27 3.8181818181818175
|
|
(void()) init_irq()
|
|
(label) init_irq::@return
|
|
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
|
(label) irq::@1
|
|
(label) irq::@2
|
|
(label) irq::@return
|
|
(void()) main()
|
|
(signed word~) main::$11 zp[2]:30 202.0
|
|
(word~) main::$26 zp[2]:9 202.0
|
|
(word~) main::$27 zp[2]:9 202.0
|
|
(word~) main::$28 zp[2]:28 101.0
|
|
(word~) main::$29 zp[2]:30 101.0
|
|
(signed word*~) main::$30 zp[2]:9 202.0
|
|
(signed word*~) main::$31 zp[2]:9 202.0
|
|
(signed word~) main::$7 zp[2]:28 202.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
|
|
(label) main::@5
|
|
(label) main::@6
|
|
(label) main::@7
|
|
(label) main::@8
|
|
(label) main::@9
|
|
(signed word) main::cos_x
|
|
(signed word) main::cos_x#0 cos_x zp[2]:9 101.0
|
|
(word) main::idx_x
|
|
(word) main::idx_x#1 idx_x zp[2]:2 101.0
|
|
(word) main::idx_x#10 idx_x zp[2]:2 27.545454545454547
|
|
(word) main::idx_x#11 idx_x zp[2]:2 11.222222222222223
|
|
(word) main::idx_y
|
|
(word) main::idx_y#1 idx_y zp[2]:6 101.0
|
|
(word) main::idx_y#10 idx_y zp[2]:6 28.857142857142858
|
|
(word) main::idx_y#3 idx_y zp[2]:6 9.774193548387098
|
|
(signed word) main::r
|
|
(signed word) main::r#1 r zp[2]:4 50.5
|
|
(signed word) main::r#10 r zp[2]:4 11.542857142857143
|
|
(byte) main::r_add
|
|
(byte) main::r_add#1 r_add zp[1]:8 202.0
|
|
(byte) main::r_add#10 r_add zp[1]:8 18.60526315789474
|
|
(byte) main::r_add#12 r_add zp[1]:8 151.5
|
|
(signed word) main::sin_y
|
|
(signed word) main::sin_y#0 sin_y zp[2]:9 101.0
|
|
(label) main::toD0181
|
|
(byte*) main::toD0181_gfx
|
|
(byte) main::toD0181_return
|
|
(const byte) main::toD0181_return#0 toD0181_return = >(word)(const byte*) SCREEN&(word) $3fff*(byte) 4|>(word)(const byte*) BITMAP/(byte) 4&(byte) $f
|
|
(byte*) main::toD0181_screen
|
|
(word) main::x
|
|
(signed word) main::x#0 x zp[2]:28 8.416666666666666
|
|
(signed dword) main::xpos
|
|
(signed dword) main::xpos#0 xpos zp[4]:11 202.0
|
|
(word) main::y
|
|
(signed word) main::y#0 y zp[2]:30 50.5
|
|
(signed dword) main::ypos
|
|
(signed dword) main::ypos#0 ypos zp[4]:11 202.0
|
|
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
|
(label) memset::@1
|
|
(label) memset::@2
|
|
(label) memset::@3
|
|
(label) memset::@return
|
|
(byte) memset::c
|
|
(byte) memset::c#4 reg byte x 1250.125
|
|
(byte*) memset::dst
|
|
(byte*) memset::dst#1 dst zp[2]:37 20002.0
|
|
(byte*) memset::dst#2 dst zp[2]:37 13668.333333333332
|
|
(byte*) memset::dst#4 dst zp[2]:37 2002.0
|
|
(byte*) memset::end
|
|
(byte*) memset::end#0 end zp[2]:30 1833.6666666666665
|
|
(word) memset::num
|
|
(word) memset::num#2 num zp[2]:30 1001.0
|
|
(void*) memset::return
|
|
(void*) memset::str
|
|
(void*) memset::str#3 str zp[2]:37
|
|
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
|
(word~) mul16s::$11 zp[2]:43 20002.0
|
|
(word~) mul16s::$12 zp[2]:37 20002.0
|
|
(word~) mul16s::$6 zp[2]:43 20002.0
|
|
(word~) mul16s::$9 zp[2]:37 20002.0
|
|
(label) mul16s::@1
|
|
(label) mul16s::@2
|
|
(label) mul16s::@3
|
|
(label) mul16s::@4
|
|
(label) mul16s::@5
|
|
(label) mul16s::@return
|
|
(signed word) mul16s::a
|
|
(signed word) mul16s::a#0 a zp[2]:4 2002.0
|
|
(signed word) mul16s::a#1 a zp[2]:4 101.0
|
|
(signed word) mul16s::a#2 a zp[2]:4 101.0
|
|
(signed word) mul16s::a#3 a zp[2]:4 861.8461538461538
|
|
(signed word) mul16s::b
|
|
(signed word) mul16s::b#1 b zp[2]:9 202.0
|
|
(signed word) mul16s::b#2 b zp[2]:9 202.0
|
|
(signed word) mul16s::b#3 b zp[2]:9 927.5454545454545
|
|
(dword) mul16s::m
|
|
(dword) mul16s::m#0 m zp[4]:11 10001.0
|
|
(dword) mul16s::m#1 m zp[4]:11 20002.0
|
|
(dword) mul16s::m#2 m zp[4]:11 20002.0
|
|
(dword) mul16s::m#4 m zp[4]:11 20002.0
|
|
(dword) mul16s::m#5 m zp[4]:11 12501.25
|
|
(signed dword) mul16s::return
|
|
(signed dword) mul16s::return#0 return zp[4]:11 2240.8
|
|
(signed dword) mul16s::return#2 return zp[4]:11 2002.0
|
|
(signed dword) mul16s::return#3 return zp[4]:11 202.0
|
|
(signed dword) mul16s::return#4 return zp[4]:11 202.0
|
|
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
|
|
(byte~) mul16u::$1 reg byte a 2.00000002E8
|
|
(label) mul16u::@1
|
|
(label) mul16u::@2
|
|
(label) mul16u::@3
|
|
(label) mul16u::@4
|
|
(label) mul16u::@return
|
|
(word) mul16u::a
|
|
(word) mul16u::a#0 a zp[2]:37 1.00000001E8
|
|
(word) mul16u::a#1 a zp[2]:37 10001.0
|
|
(word) mul16u::a#2 a zp[2]:37 100001.0
|
|
(word) mul16u::a#3 a zp[2]:37 6.683333416666667E7
|
|
(word) mul16u::a#6 a zp[2]:37 555001.5
|
|
(word) mul16u::b
|
|
(word) mul16u::b#0 b zp[2]:30 20002.0
|
|
(word) mul16u::b#1 b zp[2]:30 200002.0
|
|
(word) mul16u::b#2 b zp[2]:30 110002.0
|
|
(dword) mul16u::mb
|
|
(dword) mul16u::mb#0 mb zp[4]:21 2000002.0
|
|
(dword) mul16u::mb#1 mb zp[4]:21 2.00000002E8
|
|
(dword) mul16u::mb#2 mb zp[4]:21 4.300000057142857E7
|
|
(dword) mul16u::res
|
|
(dword) mul16u::res#1 res zp[4]:11 2.00000002E8
|
|
(dword) mul16u::res#2 res zp[4]:11 4.287285785714286E7
|
|
(dword) mul16u::res#6 res zp[4]:11 1.00000001E8
|
|
(dword) mul16u::return
|
|
(dword) mul16u::return#2 return zp[4]:11 20002.0
|
|
(dword) mul16u::return#3 return zp[4]:11 200002.0
|
|
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
|
|
(dword~) mulu16_sel::$0 zp[4]:11 200002.0
|
|
(dword~) mulu16_sel::$1 zp[4]:11 200002.0
|
|
(label) mulu16_sel::@1
|
|
(label) mulu16_sel::@return
|
|
(word) mulu16_sel::return
|
|
(word) mulu16_sel::return#0 return zp[2]:43 20002.0
|
|
(word) mulu16_sel::return#1 return_1 zp[2]:25 20002.0
|
|
(word) mulu16_sel::return#10 return_1 zp[2]:25 20002.0
|
|
(word) mulu16_sel::return#11 return zp[2]:43 20002.0
|
|
(word) mulu16_sel::return#12 return zp[2]:43 21429.428571428572
|
|
(word) mulu16_sel::return#2 return zp[2]:43 20002.0
|
|
(byte) mulu16_sel::select
|
|
(byte) mulu16_sel::select#5 reg byte x 16666.833333333332
|
|
(word) mulu16_sel::v1
|
|
(word) mulu16_sel::v1#0 v1 zp[2]:25 10001.0
|
|
(word) mulu16_sel::v1#1 v1 zp[2]:25 10001.0
|
|
(word) mulu16_sel::v1#2 v1 zp[2]:25 20002.0
|
|
(word) mulu16_sel::v1#3 v1 zp[2]:25 10001.0
|
|
(word) mulu16_sel::v1#4 v1 zp[2]:25 10001.0
|
|
(word) mulu16_sel::v1#5 v1 zp[2]:25 150006.0
|
|
(word) mulu16_sel::v2
|
|
(word) mulu16_sel::v2#0 v2 zp[2]:30 20002.0
|
|
(word) mulu16_sel::v2#1 v2 zp[2]:30 20002.0
|
|
(word) mulu16_sel::v2#3 v2 zp[2]:30 20002.0
|
|
(word) mulu16_sel::v2#4 v2 zp[2]:30 20002.0
|
|
(word) mulu16_sel::v2#5 v2 zp[2]:30 70002.5
|
|
(const byte*) plots_per_frame[(number) $100] = { fill( $100, 0) }
|
|
(word) rem16u
|
|
(word) rem16u#1 rem16u zp[2]:25 2200.4
|
|
(signed word()) sin16s((dword) sin16s::x)
|
|
(dword~) sin16s::$4 zp[4]:39 20002.0
|
|
(label) sin16s::@1
|
|
(label) sin16s::@10
|
|
(label) sin16s::@11
|
|
(label) sin16s::@12
|
|
(label) sin16s::@2
|
|
(label) sin16s::@3
|
|
(label) sin16s::@4
|
|
(label) sin16s::@5
|
|
(label) sin16s::@6
|
|
(label) sin16s::@7
|
|
(label) sin16s::@8
|
|
(label) sin16s::@9
|
|
(label) sin16s::@return
|
|
(byte) sin16s::isUpper
|
|
(byte) sin16s::isUpper#2 reg byte y 303.06060606060606
|
|
(signed word) sin16s::return
|
|
(signed word) sin16s::return#0 return zp[2]:4 2002.0
|
|
(signed word) sin16s::return#1 return zp[2]:4 7001.0
|
|
(signed word) sin16s::return#5 return zp[2]:4 20002.0
|
|
(signed word) sin16s::sinx
|
|
(signed word) sin16s::sinx#1 sinx zp[2]:4 20002.0
|
|
(word) sin16s::usinx
|
|
(word) sin16s::usinx#0 usinx zp[2]:4 1666.8333333333333
|
|
(word) sin16s::usinx#1 usinx zp[2]:4 5000.5
|
|
(dword) sin16s::x
|
|
(dword) sin16s::x#0 x zp[4]:21 15502.0
|
|
(dword) sin16s::x#1 x zp[4]:21 20002.0
|
|
(dword) sin16s::x#2 x zp[4]:21 20002.0
|
|
(dword) sin16s::x#4 x zp[4]:21 25002.5
|
|
(dword) sin16s::x#6 x zp[4]:21 30003.0
|
|
(word) sin16s::x1
|
|
(word) sin16s::x1#0 x1 zp[2]:45 3182.1363636363635
|
|
(word) sin16s::x2
|
|
(word) sin16s::x2#0 x2 zp[2]:25 20002.0
|
|
(word) sin16s::x3
|
|
(word) sin16s::x3#0 x3 zp[2]:25 5000.5
|
|
(word) sin16s::x3_6
|
|
(word) sin16s::x3_6#0 x3_6 zp[2]:43 20002.0
|
|
(word) sin16s::x4
|
|
(word) sin16s::x4#0 x4 zp[2]:25 20002.0
|
|
(word) sin16s::x5
|
|
(word) sin16s::x5#0 x5 zp[2]:43 20002.0
|
|
(word) sin16s::x5_128
|
|
(word) sin16s::x5_128#0 x5_128 zp[2]:43 20002.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::$6 zp[4]:11 2002.0
|
|
(word~) sin16s_gen2::$8 zp[2]:37 1001.0
|
|
(label) sin16s_gen2::@1
|
|
(label) sin16s_gen2::@2
|
|
(label) sin16s_gen2::@3
|
|
(label) sin16s_gen2::@4
|
|
(label) sin16s_gen2::@5
|
|
(label) sin16s_gen2::@return
|
|
(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[2]:15 2002.0
|
|
(word) sin16s_gen2::i#2 i zp[2]:15 231.0
|
|
(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[2]:28 667.3333333333334
|
|
(signed word*) sin16s_gen2::sintab#2 sintab zp[2]:28 273.0
|
|
(dword) sin16s_gen2::step
|
|
(dword) sin16s_gen2::step#0 step zp[4]:33 73.46666666666667
|
|
(word) sin16s_gen2::wavelength
|
|
(const word) sin16s_gen2::wavelength#0 wavelength = (word) $200
|
|
(dword) sin16s_gen2::x
|
|
(dword) sin16s_gen2::x#1 x zp[4]:17 1001.0
|
|
(dword) sin16s_gen2::x#2 x zp[4]:17 250.25
|
|
|
|
zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ]
|
|
zp[2]:4 [ main::r#10 main::r#1 mul16s::a#3 mul16s::a#2 mul16s::a#1 mul16s::a#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s::usinx#0 ]
|
|
zp[2]:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ]
|
|
zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ]
|
|
zp[2]:9 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 main::cos_x#0 main::sin_y#0 main::$26 main::$30 main::$27 main::$31 ]
|
|
zp[4]: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::$6 mulu16_sel::$0 mulu16_sel::$1 ]
|
|
reg byte x [ memset::c#4 ]
|
|
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[2]:15 [ sin16s_gen2::i#2 sin16s_gen2::i#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
|
zp[4]:17 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
|
|
reg byte y [ sin16s::isUpper#2 ]
|
|
zp[4]:21 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
|
reg byte x [ mulu16_sel::select#5 ]
|
|
zp[2]:25 [ 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 mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ]
|
|
reg byte x [ divr16u::i#2 divr16u::i#1 ]
|
|
zp[1]:27 [ frame_cnt ]
|
|
zp[2]:28 [ main::$28 main::$7 main::x#0 bitmap_plot::x#0 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ]
|
|
zp[2]:30 [ main::$29 main::$11 main::y#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 memset::num#2 memset::end#0 mul16u::b#2 mul16u::b#0 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ]
|
|
reg byte a [ bitmap_plot::y#0 ]
|
|
reg byte x [ bitmap_plot::$1 ]
|
|
reg byte a [ mul16u::$1 ]
|
|
zp[1]:32 [ bitmap_init::$7 ]
|
|
reg byte a [ bitmap_init::$4 ]
|
|
reg byte a [ bitmap_init::$5 ]
|
|
reg byte a [ bitmap_init::$6 ]
|
|
zp[4]:33 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ]
|
|
zp[2]:37 [ sin16s_gen2::$8 mul16s::$9 mul16s::$12 bitmap_plot::plotter#0 bitmap_plot::plotter#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 mul16u::a#3 mul16u::a#6 mul16u::a#1 mul16u::a#2 mul16u::a#0 ]
|
|
zp[4]:39 [ sin16s::$4 ]
|
|
zp[2]:43 [ 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 mul16s::$6 mul16s::$11 bitmap_plot::$0 ]
|
|
zp[2]:45 [ div32u16u::quotient_hi#0 sin16s::x1#0 ]
|
|
reg byte a [ divr16u::$1 ]
|
|
reg byte a [ divr16u::$2 ]
|
|
|
|
|
|
FINAL ASSEMBLER
|
|
Score: 20833
|
|
|
|
// File Comments
|
|
// Tests the simple bitmap plotter - and counts plots per frame in an IRQ
|
|
// Plots a spiral
|
|
// Upstart
|
|
.pc = $801 "Basic"
|
|
:BasicUpstart(__bbegin)
|
|
.pc = $80d "Program"
|
|
// Global Constants & labels
|
|
// Value that disables all CIA interrupts when stored to the CIA Interrupt registers
|
|
.const CIA_INTERRUPT_CLEAR = $7f
|
|
.const VIC_BMM = $20
|
|
.const VIC_DEN = $10
|
|
.const VIC_RSEL = 8
|
|
// Bits for the VICII IRQ Status/Enable Registers
|
|
.const IRQ_RASTER = 1
|
|
// Mask for PROCESSOR_PORT_DDR which allows only memory configuration to be written
|
|
.const PROCPORT_DDR_MEMORY_MASK = 7
|
|
// RAM in 0xA000, 0xE000 I/O in 0xD000
|
|
.const PROCPORT_RAM_IO = 5
|
|
// The colors of the C64
|
|
.const BLACK = 0
|
|
.const WHITE = 1
|
|
// PI*2 in u[4.28] format
|
|
.const PI2_u4f28 = $6487ed51
|
|
// PI in u[4.28] format
|
|
.const PI_u4f28 = $3243f6a9
|
|
// PI/2 in u[4.28] format
|
|
.const PI_HALF_u4f28 = $1921fb54
|
|
.const SIZEOF_SIGNED_WORD = 2
|
|
.const OFFSET_STRUCT_MOS6526_CIA_INTERRUPT = $d
|
|
.label RASTER = $d012
|
|
.label BORDER_COLOR = $d020
|
|
.label BG_COLOR = $d021
|
|
.label VIC_CONTROL = $d011
|
|
.label D011 = $d011
|
|
.label D018 = $d018
|
|
// VIC II IRQ Status Register
|
|
.label IRQ_STATUS = $d019
|
|
// VIC II IRQ Enable Register
|
|
.label IRQ_ENABLE = $d01a
|
|
// Processor port data direction register
|
|
.label PROCPORT_DDR = 0
|
|
// Processor Port Register controlling RAM/ROM configuration and the datasette
|
|
.label PROCPORT = 1
|
|
// The CIA#1: keyboard matrix, joystick #1/#2
|
|
.label CIA1 = $dc00
|
|
// The vector used when the HARDWARE serves IRQ interrupts
|
|
.label HARDWARE_IRQ = $fffe
|
|
.label BITMAP = $2000
|
|
.label SCREEN = $400
|
|
.label frame_cnt = $1b
|
|
// Remainder after unsigned 16-bit division
|
|
.label rem16u = $19
|
|
// @begin
|
|
__bbegin:
|
|
// @1
|
|
// frame_cnt = 1
|
|
// [1] (volatile byte) frame_cnt ← (byte) 1 -- vbuz1=vbuc1
|
|
// Counts frames - updated by the IRQ
|
|
lda #1
|
|
sta.z frame_cnt
|
|
// [2] phi from @1 to @2 [phi:@1->@2]
|
|
// @2
|
|
// [3] call main
|
|
// [5] phi from @2 to main [phi:@2->main]
|
|
jsr main
|
|
rts
|
|
// [4] phi from @2 to @end [phi:@2->@end]
|
|
// @end
|
|
// main
|
|
main: {
|
|
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
|
|
.label __7 = $1c
|
|
.label __11 = $1e
|
|
.label __26 = 9
|
|
.label __27 = 9
|
|
.label __28 = $1c
|
|
.label __29 = $1e
|
|
.label cos_x = 9
|
|
.label xpos = $b
|
|
.label x = $1c
|
|
.label sin_y = 9
|
|
.label ypos = $b
|
|
.label y = $1e
|
|
.label idx_x = 2
|
|
.label idx_y = 6
|
|
.label r = 4
|
|
.label r_add = 8
|
|
.label __30 = 9
|
|
.label __31 = 9
|
|
// sin16s_gen2(SINUS, 512, -0x1001, 0x1001)
|
|
// [6] call sin16s_gen2
|
|
// [138] phi from main to sin16s_gen2 [phi:main->sin16s_gen2]
|
|
jsr sin16s_gen2
|
|
// [7] phi from main to main::@9 [phi:main->main::@9]
|
|
// main::@9
|
|
// bitmap_init(BITMAP, SCREEN)
|
|
// [8] call bitmap_init
|
|
// [116] phi from main::@9 to bitmap_init [phi:main::@9->bitmap_init]
|
|
jsr bitmap_init
|
|
// [9] phi from main::@9 to main::@10 [phi:main::@9->main::@10]
|
|
// main::@10
|
|
// bitmap_clear(BLACK, WHITE)
|
|
// [10] call bitmap_clear
|
|
// [102] phi from main::@10 to bitmap_clear [phi:main::@10->bitmap_clear]
|
|
jsr bitmap_clear
|
|
// main::@11
|
|
// *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3
|
|
// [11] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2
|
|
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
|
|
sta D011
|
|
// [12] phi from main::@11 to main::toD0181 [phi:main::@11->main::toD0181]
|
|
// main::toD0181
|
|
// main::@8
|
|
// *D018 = toD018(SCREEN, BITMAP)
|
|
// [13] *((const nomodify byte*) D018) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2
|
|
lda #toD0181_return
|
|
sta D018
|
|
// init_irq()
|
|
// [14] call init_irq
|
|
jsr init_irq
|
|
// [15] phi from main::@8 to main::@1 [phi:main::@8->main::@1]
|
|
// [15] phi (byte) main::r_add#10 = (byte) $20 [phi:main::@8->main::@1#0] -- vbuz1=vbuc1
|
|
lda #$20
|
|
sta.z r_add
|
|
// [15] phi (word) main::idx_y#3 = (word) $80 [phi:main::@8->main::@1#1] -- vwuz1=vwuc1
|
|
lda #<$80
|
|
sta.z idx_y
|
|
lda #>$80
|
|
sta.z idx_y+1
|
|
// [15] phi (signed word) main::r#10 = (signed word) 0 [phi:main::@8->main::@1#2] -- vwsz1=vwsc1
|
|
lda #<0
|
|
sta.z r
|
|
sta.z r+1
|
|
// [15] phi (word) main::idx_x#11 = (word) 0 [phi:main::@8->main::@1#3] -- vwuz1=vwuc1
|
|
sta.z idx_x
|
|
sta.z idx_x+1
|
|
// main::@1
|
|
// main::@2
|
|
__b2:
|
|
// cos_x = SINUS[idx_x]
|
|
// [16] (word~) main::$26 ← (word) main::idx_x#11 << (byte) 1 -- vwuz1=vwuz2_rol_1
|
|
lda.z idx_x
|
|
asl
|
|
sta.z __26
|
|
lda.z idx_x+1
|
|
rol
|
|
sta.z __26+1
|
|
// [17] (signed word*~) main::$30 ← (const signed word*) SINUS + (word~) main::$26 -- pwsz1=pwsc1_plus_vwuz1
|
|
clc
|
|
lda.z __30
|
|
adc #<SINUS
|
|
sta.z __30
|
|
lda.z __30+1
|
|
adc #>SINUS
|
|
sta.z __30+1
|
|
// [18] (signed word) main::cos_x#0 ← *((signed word*~) main::$30) -- vwsz1=_deref_pwsz1
|
|
ldy #0
|
|
lda (cos_x),y
|
|
pha
|
|
iny
|
|
lda (cos_x),y
|
|
sta.z cos_x+1
|
|
pla
|
|
sta.z cos_x
|
|
// mul16s(r, cos_x)
|
|
// [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
|
|
// [63] phi from main::@2 to mul16s [phi:main::@2->mul16s]
|
|
// [63] phi (signed word) mul16s::b#3 = (signed word) mul16s::b#1 [phi:main::@2->mul16s#0] -- register_copy
|
|
// [63] phi (signed word) mul16s::a#3 = (signed word) mul16s::a#1 [phi:main::@2->mul16s#1] -- register_copy
|
|
jsr mul16s
|
|
// mul16s(r, cos_x)
|
|
// [22] (signed dword) mul16s::return#3 ← (signed dword) mul16s::return#0
|
|
// main::@12
|
|
// xpos = mul16s(r, cos_x)
|
|
// [23] (signed dword) main::xpos#0 ← (signed dword) mul16s::return#3
|
|
// >xpos
|
|
// [24] (word~) main::$28 ← > (signed dword) main::xpos#0 -- vwuz1=_hi_vdsz2
|
|
lda.z xpos+2
|
|
sta.z __28
|
|
lda.z xpos+3
|
|
sta.z __28+1
|
|
// ((signed word)>xpos)>>2
|
|
// [25] (signed word~) main::$7 ← (signed word)(word~) main::$28 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2
|
|
lda.z __7+1
|
|
cmp #$80
|
|
ror.z __7+1
|
|
ror.z __7
|
|
lda.z __7+1
|
|
cmp #$80
|
|
ror.z __7+1
|
|
ror.z __7
|
|
// 160 + ((signed word)>xpos)>>2
|
|
// [26] (signed word) main::x#0 ← (signed word) $a0 + (signed word~) main::$7 -- vwsz1=vwsc1_plus_vwsz1
|
|
clc
|
|
lda.z x
|
|
adc #<$a0
|
|
sta.z x
|
|
lda.z x+1
|
|
adc #>$a0
|
|
sta.z x+1
|
|
// sin_y = SINUS[idx_y]
|
|
// [27] (word~) main::$27 ← (word) main::idx_y#3 << (byte) 1 -- vwuz1=vwuz2_rol_1
|
|
lda.z idx_y
|
|
asl
|
|
sta.z __27
|
|
lda.z idx_y+1
|
|
rol
|
|
sta.z __27+1
|
|
// [28] (signed word*~) main::$31 ← (const signed word*) SINUS + (word~) main::$27 -- pwsz1=pwsc1_plus_vwuz1
|
|
clc
|
|
lda.z __31
|
|
adc #<SINUS
|
|
sta.z __31
|
|
lda.z __31+1
|
|
adc #>SINUS
|
|
sta.z __31+1
|
|
// [29] (signed word) main::sin_y#0 ← *((signed word*~) main::$31) -- vwsz1=_deref_pwsz1
|
|
ldy #0
|
|
lda (sin_y),y
|
|
pha
|
|
iny
|
|
lda (sin_y),y
|
|
sta.z sin_y+1
|
|
pla
|
|
sta.z sin_y
|
|
// mul16s(r, sin_y)
|
|
// [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
|
|
// [63] phi from main::@12 to mul16s [phi:main::@12->mul16s]
|
|
// [63] phi (signed word) mul16s::b#3 = (signed word) mul16s::b#2 [phi:main::@12->mul16s#0] -- register_copy
|
|
// [63] phi (signed word) mul16s::a#3 = (signed word) mul16s::a#2 [phi:main::@12->mul16s#1] -- register_copy
|
|
jsr mul16s
|
|
// mul16s(r, sin_y)
|
|
// [33] (signed dword) mul16s::return#4 ← (signed dword) mul16s::return#0
|
|
// main::@13
|
|
// ypos = mul16s(r, sin_y)
|
|
// [34] (signed dword) main::ypos#0 ← (signed dword) mul16s::return#4
|
|
// >ypos
|
|
// [35] (word~) main::$29 ← > (signed dword) main::ypos#0 -- vwuz1=_hi_vdsz2
|
|
lda.z ypos+2
|
|
sta.z __29
|
|
lda.z ypos+3
|
|
sta.z __29+1
|
|
// ((signed word)>ypos)>>2
|
|
// [36] (signed word~) main::$11 ← (signed word)(word~) main::$29 >> (signed byte) 2 -- vwsz1=vwsz1_ror_2
|
|
lda.z __11+1
|
|
cmp #$80
|
|
ror.z __11+1
|
|
ror.z __11
|
|
lda.z __11+1
|
|
cmp #$80
|
|
ror.z __11+1
|
|
ror.z __11
|
|
// 100 + ((signed word)>ypos)>>2
|
|
// [37] (signed word) main::y#0 ← (signed byte) $64 + (signed word~) main::$11 -- vwsz1=vbsc1_plus_vwsz1
|
|
lda.z y
|
|
clc
|
|
adc #<$64
|
|
sta.z y
|
|
lda.z y+1
|
|
adc #>$64
|
|
sta.z y+1
|
|
// bitmap_plot(x, (byte)y)
|
|
// [38] (word) bitmap_plot::x#0 ← (word)(signed word) main::x#0
|
|
// [39] (byte) bitmap_plot::y#0 ← (byte)(word)(signed word) main::y#0 -- vbuaa=_byte_vwuz1
|
|
lda.z y
|
|
// [40] call bitmap_plot
|
|
jsr bitmap_plot
|
|
// main::@14
|
|
// plots_per_frame[frame_cnt]++;
|
|
// [41] *((const byte*) plots_per_frame + (volatile byte) frame_cnt) ← ++ *((const byte*) plots_per_frame + (volatile byte) frame_cnt) -- pbuc1_derefidx_vbuz1=_inc_pbuc1_derefidx_vbuz1
|
|
ldx.z frame_cnt
|
|
inc plots_per_frame,x
|
|
// idx_x += r_add
|
|
// [42] (word) main::idx_x#1 ← (word) main::idx_x#11 + (byte) main::r_add#10 -- vwuz1=vwuz1_plus_vbuz2
|
|
lda.z r_add
|
|
clc
|
|
adc.z idx_x
|
|
sta.z idx_x
|
|
bcc !+
|
|
inc.z idx_x+1
|
|
!:
|
|
// if(idx_x>=512)
|
|
// [43] if((word) main::idx_x#1<(word) $200) goto main::@16 -- vwuz1_lt_vwuc1_then_la1
|
|
lda.z idx_x+1
|
|
cmp #>$200
|
|
bcc __b3
|
|
bne !+
|
|
lda.z idx_x
|
|
cmp #<$200
|
|
bcc __b3
|
|
!:
|
|
// [45] phi from main::@14 to main::@3 [phi:main::@14->main::@3]
|
|
// [45] phi (word) main::idx_x#10 = (byte) 0 [phi:main::@14->main::@3#0] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z idx_x
|
|
sta.z idx_x+1
|
|
// [44] phi from main::@14 to main::@16 [phi:main::@14->main::@16]
|
|
// main::@16
|
|
// [45] phi from main::@16 to main::@3 [phi:main::@16->main::@3]
|
|
// [45] phi (word) main::idx_x#10 = (word) main::idx_x#1 [phi:main::@16->main::@3#0] -- register_copy
|
|
// main::@3
|
|
__b3:
|
|
// idx_y += r_add
|
|
// [46] (word) main::idx_y#1 ← (word) main::idx_y#3 + (byte) main::r_add#10 -- vwuz1=vwuz1_plus_vbuz2
|
|
lda.z r_add
|
|
clc
|
|
adc.z idx_y
|
|
sta.z idx_y
|
|
bcc !+
|
|
inc.z idx_y+1
|
|
!:
|
|
// if(idx_y>=512)
|
|
// [47] if((word) main::idx_y#1<(word) $200) goto main::@17 -- vwuz1_lt_vwuc1_then_la1
|
|
lda.z idx_y+1
|
|
cmp #>$200
|
|
bcc __b4
|
|
bne !+
|
|
lda.z idx_y
|
|
cmp #<$200
|
|
bcc __b4
|
|
!:
|
|
// [49] phi from main::@3 to main::@4 [phi:main::@3->main::@4]
|
|
// [49] phi (word) main::idx_y#10 = (byte) 0 [phi:main::@3->main::@4#0] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z idx_y
|
|
sta.z idx_y+1
|
|
// [48] phi from main::@3 to main::@17 [phi:main::@3->main::@17]
|
|
// main::@17
|
|
// [49] phi from main::@17 to main::@4 [phi:main::@17->main::@4]
|
|
// [49] phi (word) main::idx_y#10 = (word) main::idx_y#1 [phi:main::@17->main::@4#0] -- register_copy
|
|
// main::@4
|
|
__b4:
|
|
// r += r_add
|
|
// [50] (signed word) main::r#1 ← (signed word) main::r#10 + (byte) main::r_add#10 -- vwsz1=vwsz1_plus_vbuz2
|
|
clc
|
|
lda.z r
|
|
adc.z r_add
|
|
sta.z r
|
|
lda.z r+1
|
|
adc #0
|
|
sta.z r+1
|
|
// if((idx_x==0) && (r_add!=1))
|
|
// [51] if((word) main::idx_x#10!=(byte) 0) goto main::@5 -- vwuz1_neq_0_then_la1
|
|
lda.z idx_x
|
|
bne __b5
|
|
lda.z idx_x+1
|
|
bne __b5
|
|
// main::@15
|
|
// [52] if((byte) main::r_add#10==(byte) 1) goto main::@5 -- vbuz1_eq_vbuc1_then_la1
|
|
lda #1
|
|
cmp.z r_add
|
|
beq __b5
|
|
// main::@6
|
|
// r_add /= 2
|
|
// [53] (byte) main::r_add#1 ← (byte) main::r_add#10 >> (byte) 1 -- vbuz1=vbuz1_ror_1
|
|
lsr.z r_add
|
|
// [54] phi from main::@4 main::@6 to main::@5 [phi:main::@4/main::@6->main::@5]
|
|
// [54] phi (byte) main::r_add#12 = (byte) main::r_add#10 [phi:main::@4/main::@6->main::@5#0] -- register_copy
|
|
// [54] phi from main::@15 to main::@5 [phi:main::@15->main::@5]
|
|
// main::@5
|
|
__b5:
|
|
// if(r>=512*12+256)
|
|
// [55] if((signed word) main::r#1>=(signed word)(number) $200*(number) $c+(number) $100) goto main::@7 -- vwsz1_ge_vwsc1_then_la1
|
|
lda.z r
|
|
cmp #<$200*$c+$100
|
|
lda.z r+1
|
|
sbc #>$200*$c+$100
|
|
bvc !+
|
|
eor #$80
|
|
!:
|
|
bpl __b7
|
|
// [15] phi from main::@5 to main::@1 [phi:main::@5->main::@1]
|
|
// [15] phi (byte) main::r_add#10 = (byte) main::r_add#12 [phi:main::@5->main::@1#0] -- register_copy
|
|
// [15] phi (word) main::idx_y#3 = (word) main::idx_y#10 [phi:main::@5->main::@1#1] -- register_copy
|
|
// [15] phi (signed word) main::r#10 = (signed word) main::r#1 [phi:main::@5->main::@1#2] -- register_copy
|
|
// [15] phi (word) main::idx_x#11 = (word) main::idx_x#10 [phi:main::@5->main::@1#3] -- register_copy
|
|
jmp __b2
|
|
// main::@7
|
|
__b7:
|
|
// (*BORDER_COLOR)++;
|
|
// [56] *((const nomodify byte*) BORDER_COLOR) ← ++ *((const nomodify byte*) BORDER_COLOR) -- _deref_pbuc1=_inc__deref_pbuc1
|
|
inc BORDER_COLOR
|
|
jmp __b7
|
|
}
|
|
// bitmap_plot
|
|
// Plot a single dot in the bitmap
|
|
// bitmap_plot(word zp($1c) x, byte register(A) y)
|
|
bitmap_plot: {
|
|
.label __0 = $2b
|
|
.label plotter = $25
|
|
.label x = $1c
|
|
// plotter = (char*) { bitmap_plot_yhi[y], bitmap_plot_ylo[y] }
|
|
// [57] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuaa_word_pbuc2_derefidx_vbuaa
|
|
tay
|
|
lda bitmap_plot_yhi,y
|
|
sta.z plotter+1
|
|
lda bitmap_plot_ylo,y
|
|
sta.z plotter
|
|
// x & $fff8
|
|
// [58] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#0 & (word) $fff8 -- vwuz1=vwuz2_band_vwuc1
|
|
lda.z x
|
|
and #<$fff8
|
|
sta.z __0
|
|
lda.z x+1
|
|
and #>$fff8
|
|
sta.z __0+1
|
|
// plotter += ( x & $fff8 )
|
|
// [59] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0 -- pbuz1=pbuz1_plus_vwuz2
|
|
lda.z plotter
|
|
clc
|
|
adc.z __0
|
|
sta.z plotter
|
|
lda.z plotter+1
|
|
adc.z __0+1
|
|
sta.z plotter+1
|
|
// <x
|
|
// [60] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#0 -- vbuxx=_lo_vwuz1
|
|
ldx.z x
|
|
// *plotter |= bitmap_plot_bit[<x]
|
|
// [61] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx
|
|
lda bitmap_plot_bit,x
|
|
ldy #0
|
|
ora (plotter),y
|
|
sta (plotter),y
|
|
// bitmap_plot::@return
|
|
// }
|
|
// [62] return
|
|
rts
|
|
}
|
|
// mul16s
|
|
// Multiply of two signed ints to a signed long
|
|
// Fixes offsets introduced by using unsigned multiplication
|
|
// mul16s(signed word zp(4) a, signed word zp(9) b)
|
|
mul16s: {
|
|
.label __6 = $2b
|
|
.label __9 = $25
|
|
.label __11 = $2b
|
|
.label __12 = $25
|
|
.label m = $b
|
|
.label return = $b
|
|
.label a = 4
|
|
.label b = 9
|
|
// mul16u((unsigned int)a, (unsigned int) b)
|
|
// [64] (word) mul16u::a#1 ← (word)(signed word) mul16s::a#3 -- vwuz1=vwuz2
|
|
lda.z a
|
|
sta.z mul16u.a
|
|
lda.z a+1
|
|
sta.z mul16u.a+1
|
|
// [65] (word) mul16u::b#0 ← (word)(signed word) mul16s::b#3 -- vwuz1=vwuz2
|
|
lda.z b
|
|
sta.z mul16u.b
|
|
lda.z b+1
|
|
sta.z mul16u.b+1
|
|
// [66] call mul16u
|
|
// [81] phi from mul16s to mul16u [phi:mul16s->mul16u]
|
|
// [81] phi (word) mul16u::a#6 = (word) mul16u::a#1 [phi:mul16s->mul16u#0] -- register_copy
|
|
// [81] phi (word) mul16u::b#2 = (word) mul16u::b#0 [phi:mul16s->mul16u#1] -- register_copy
|
|
jsr mul16u
|
|
// mul16u((unsigned int)a, (unsigned int) b)
|
|
// [67] (dword) mul16u::return#2 ← (dword) mul16u::res#2
|
|
// mul16s::@5
|
|
// m = mul16u((unsigned int)a, (unsigned int) b)
|
|
// [68] (dword) mul16s::m#0 ← (dword) mul16u::return#2
|
|
// if(a<0)
|
|
// [69] if((signed word) mul16s::a#3>=(signed byte) 0) goto mul16s::@1 -- vwsz1_ge_0_then_la1
|
|
lda.z a+1
|
|
bpl __b1
|
|
// mul16s::@3
|
|
// >m
|
|
// [70] (word~) mul16s::$6 ← > (dword) mul16s::m#0 -- vwuz1=_hi_vduz2
|
|
lda.z m+2
|
|
sta.z __6
|
|
lda.z m+3
|
|
sta.z __6+1
|
|
// >m = (>m)-(unsigned int)b
|
|
// [71] (word~) mul16s::$11 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#3 -- vwuz1=vwuz1_minus_vwuz2
|
|
lda.z __11
|
|
sec
|
|
sbc.z b
|
|
sta.z __11
|
|
lda.z __11+1
|
|
sbc.z b+1
|
|
sta.z __11+1
|
|
// [72] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$11 -- vduz1=vduz1_sethi_vwuz2
|
|
lda.z __11
|
|
sta.z m+2
|
|
lda.z __11+1
|
|
sta.z m+3
|
|
// [73] phi from mul16s::@3 mul16s::@5 to mul16s::@1 [phi:mul16s::@3/mul16s::@5->mul16s::@1]
|
|
// [73] phi (dword) mul16s::m#5 = (dword) mul16s::m#1 [phi:mul16s::@3/mul16s::@5->mul16s::@1#0] -- register_copy
|
|
// mul16s::@1
|
|
__b1:
|
|
// if(b<0)
|
|
// [74] if((signed word) mul16s::b#3>=(signed byte) 0) goto mul16s::@2 -- vwsz1_ge_0_then_la1
|
|
lda.z b+1
|
|
bpl __b2
|
|
// mul16s::@4
|
|
// >m
|
|
// [75] (word~) mul16s::$9 ← > (dword) mul16s::m#5 -- vwuz1=_hi_vduz2
|
|
lda.z m+2
|
|
sta.z __9
|
|
lda.z m+3
|
|
sta.z __9+1
|
|
// >m = (>m)-(unsigned int)a
|
|
// [76] (word~) mul16s::$12 ← (word~) mul16s::$9 - (word)(signed word) mul16s::a#3 -- vwuz1=vwuz1_minus_vwuz2
|
|
lda.z __12
|
|
sec
|
|
sbc.z a
|
|
sta.z __12
|
|
lda.z __12+1
|
|
sbc.z a+1
|
|
sta.z __12+1
|
|
// [77] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$12 -- vduz1=vduz1_sethi_vwuz2
|
|
lda.z __12
|
|
sta.z m+2
|
|
lda.z __12+1
|
|
sta.z m+3
|
|
// [78] phi from mul16s::@1 mul16s::@4 to mul16s::@2 [phi:mul16s::@1/mul16s::@4->mul16s::@2]
|
|
// [78] phi (dword) mul16s::m#4 = (dword) mul16s::m#5 [phi:mul16s::@1/mul16s::@4->mul16s::@2#0] -- register_copy
|
|
// mul16s::@2
|
|
__b2:
|
|
// return (signed long)m;
|
|
// [79] (signed dword) mul16s::return#0 ← (signed dword)(dword) mul16s::m#4
|
|
// mul16s::@return
|
|
// }
|
|
// [80] return
|
|
rts
|
|
}
|
|
// mul16u
|
|
// Perform binary multiplication of two unsigned 16-bit unsigned ints into a 32-bit unsigned long
|
|
// mul16u(word zp($25) a, word zp($1e) b)
|
|
mul16u: {
|
|
.label mb = $15
|
|
.label a = $25
|
|
.label res = $b
|
|
.label b = $1e
|
|
.label return = $b
|
|
// mb = b
|
|
// [82] (dword) mul16u::mb#0 ← (dword)(word) mul16u::b#2 -- vduz1=_dword_vwuz2
|
|
lda.z b
|
|
sta.z mb
|
|
lda.z b+1
|
|
sta.z mb+1
|
|
lda #0
|
|
sta.z mb+2
|
|
sta.z mb+3
|
|
// [83] phi from mul16u to mul16u::@1 [phi:mul16u->mul16u::@1]
|
|
// [83] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#0 [phi:mul16u->mul16u::@1#0] -- register_copy
|
|
// [83] phi (dword) mul16u::res#2 = (dword) 0 [phi:mul16u->mul16u::@1#1] -- vduz1=vduc1
|
|
sta.z res
|
|
sta.z res+1
|
|
lda #<0>>$10
|
|
sta.z res+2
|
|
lda #>0>>$10
|
|
sta.z res+3
|
|
// [83] phi (word) mul16u::a#3 = (word) mul16u::a#6 [phi:mul16u->mul16u::@1#2] -- register_copy
|
|
// mul16u::@1
|
|
__b1:
|
|
// while(a!=0)
|
|
// [84] if((word) mul16u::a#3!=(byte) 0) goto mul16u::@2 -- vwuz1_neq_0_then_la1
|
|
lda.z a
|
|
bne __b2
|
|
lda.z a+1
|
|
bne __b2
|
|
// mul16u::@return
|
|
// }
|
|
// [85] return
|
|
rts
|
|
// mul16u::@2
|
|
__b2:
|
|
// a&1
|
|
// [86] (byte~) mul16u::$1 ← (word) mul16u::a#3 & (byte) 1 -- vbuaa=vwuz1_band_vbuc1
|
|
lda #1
|
|
and.z a
|
|
// if( (a&1) != 0)
|
|
// [87] if((byte~) mul16u::$1==(byte) 0) goto mul16u::@3 -- vbuaa_eq_0_then_la1
|
|
cmp #0
|
|
beq __b3
|
|
// mul16u::@4
|
|
// res = res + mb
|
|
// [88] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 -- vduz1=vduz1_plus_vduz2
|
|
lda.z res
|
|
clc
|
|
adc.z mb
|
|
sta.z res
|
|
lda.z res+1
|
|
adc.z mb+1
|
|
sta.z res+1
|
|
lda.z res+2
|
|
adc.z mb+2
|
|
sta.z res+2
|
|
lda.z res+3
|
|
adc.z mb+3
|
|
sta.z res+3
|
|
// [89] phi from mul16u::@2 mul16u::@4 to mul16u::@3 [phi:mul16u::@2/mul16u::@4->mul16u::@3]
|
|
// [89] phi (dword) mul16u::res#6 = (dword) mul16u::res#2 [phi:mul16u::@2/mul16u::@4->mul16u::@3#0] -- register_copy
|
|
// mul16u::@3
|
|
__b3:
|
|
// a = a>>1
|
|
// [90] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte) 1 -- vwuz1=vwuz1_ror_1
|
|
lsr.z a+1
|
|
ror.z a
|
|
// mb = mb<<1
|
|
// [91] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte) 1 -- vduz1=vduz1_rol_1
|
|
asl.z mb
|
|
rol.z mb+1
|
|
rol.z mb+2
|
|
rol.z mb+3
|
|
// [83] phi from mul16u::@3 to mul16u::@1 [phi:mul16u::@3->mul16u::@1]
|
|
// [83] phi (dword) mul16u::mb#2 = (dword) mul16u::mb#1 [phi:mul16u::@3->mul16u::@1#0] -- register_copy
|
|
// [83] phi (dword) mul16u::res#2 = (dword) mul16u::res#6 [phi:mul16u::@3->mul16u::@1#1] -- register_copy
|
|
// [83] phi (word) mul16u::a#3 = (word) mul16u::a#0 [phi:mul16u::@3->mul16u::@1#2] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// init_irq
|
|
// Setup the IRQ
|
|
init_irq: {
|
|
// asm
|
|
// asm { sei }
|
|
sei
|
|
// *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK
|
|
// [93] *((const nomodify byte*) PROCPORT_DDR) ← (const nomodify byte) PROCPORT_DDR_MEMORY_MASK -- _deref_pbuc1=vbuc2
|
|
// Disable kernal & basic
|
|
lda #PROCPORT_DDR_MEMORY_MASK
|
|
sta PROCPORT_DDR
|
|
// *PROCPORT = PROCPORT_RAM_IO
|
|
// [94] *((const nomodify byte*) PROCPORT) ← (const nomodify byte) PROCPORT_RAM_IO -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_IO
|
|
sta PROCPORT
|
|
// CIA1->INTERRUPT = CIA_INTERRUPT_CLEAR
|
|
// [95] *((byte*)(const nomodify struct MOS6526_CIA*) CIA1+(const byte) OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) ← (const nomodify byte) CIA_INTERRUPT_CLEAR -- _deref_pbuc1=vbuc2
|
|
// Disable CIA 1 Timer IRQ
|
|
lda #CIA_INTERRUPT_CLEAR
|
|
sta CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT
|
|
// *VIC_CONTROL |=$80
|
|
// [96] *((const nomodify byte*) VIC_CONTROL) ← *((const nomodify byte*) VIC_CONTROL) | (byte) $80 -- _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
|
// Set raster line to $100
|
|
lda #$80
|
|
ora VIC_CONTROL
|
|
sta VIC_CONTROL
|
|
// *RASTER = $00
|
|
// [97] *((const nomodify byte*) RASTER) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta RASTER
|
|
// *IRQ_ENABLE = IRQ_RASTER
|
|
// [98] *((const nomodify byte*) IRQ_ENABLE) ← (const nomodify byte) IRQ_RASTER -- _deref_pbuc1=vbuc2
|
|
// Enable Raster Interrupt
|
|
lda #IRQ_RASTER
|
|
sta IRQ_ENABLE
|
|
// *HARDWARE_IRQ = &irq
|
|
// [99] *((const nomodify void()**) HARDWARE_IRQ) ← &interrupt(HARDWARE_CLOBBER)(void()) irq() -- _deref_pptc1=pprc2
|
|
// Set the IRQ routine
|
|
lda #<irq
|
|
sta HARDWARE_IRQ
|
|
lda #>irq
|
|
sta HARDWARE_IRQ+1
|
|
// asm
|
|
// asm { cli }
|
|
cli
|
|
// init_irq::@return
|
|
// }
|
|
// [101] return
|
|
rts
|
|
}
|
|
// bitmap_clear
|
|
// Clear all graphics on the bitmap
|
|
// bgcol - the background color to fill the screen with
|
|
// fgcol - the foreground color to fill the screen with
|
|
bitmap_clear: {
|
|
.const col = WHITE*$10
|
|
// memset(bitmap_screen, col, 1000uw)
|
|
// [103] call memset
|
|
// [107] phi from bitmap_clear to memset [phi:bitmap_clear->memset]
|
|
// [107] phi (byte) memset::c#4 = (const byte) bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1
|
|
ldx #col
|
|
// [107] phi (void*) memset::str#3 = (void*)(const byte*) SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1
|
|
lda #<SCREEN
|
|
sta.z memset.str
|
|
lda #>SCREEN
|
|
sta.z memset.str+1
|
|
// [107] phi (word) memset::num#2 = (word) $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1
|
|
lda #<$3e8
|
|
sta.z memset.num
|
|
lda #>$3e8
|
|
sta.z memset.num+1
|
|
jsr memset
|
|
// [104] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1]
|
|
// bitmap_clear::@1
|
|
// memset(bitmap_gfx, 0, 8000uw)
|
|
// [105] call memset
|
|
// [107] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset]
|
|
// [107] phi (byte) memset::c#4 = (byte) 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [107] phi (void*) memset::str#3 = (void*)(const byte*) BITMAP [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1
|
|
lda #<BITMAP
|
|
sta.z memset.str
|
|
lda #>BITMAP
|
|
sta.z memset.str+1
|
|
// [107] phi (word) memset::num#2 = (word) $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1
|
|
lda #<$1f40
|
|
sta.z memset.num
|
|
lda #>$1f40
|
|
sta.z memset.num+1
|
|
jsr memset
|
|
// bitmap_clear::@return
|
|
// }
|
|
// [106] return
|
|
rts
|
|
}
|
|
// memset
|
|
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
|
// memset(void* zp($25) str, byte register(X) c, word zp($1e) num)
|
|
memset: {
|
|
.label end = $1e
|
|
.label dst = $25
|
|
.label num = $1e
|
|
.label str = $25
|
|
// if(num>0)
|
|
// [108] if((word) memset::num#2<=(byte) 0) goto memset::@return -- vwuz1_le_0_then_la1
|
|
lda.z num
|
|
bne !+
|
|
lda.z num+1
|
|
beq __breturn
|
|
!:
|
|
// memset::@1
|
|
// end = (char*)str + num
|
|
// [109] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2 -- pbuz1=pbuz2_plus_vwuz1
|
|
lda.z end
|
|
clc
|
|
adc.z str
|
|
sta.z end
|
|
lda.z end+1
|
|
adc.z str+1
|
|
sta.z end+1
|
|
// [110] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
|
|
// [111] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2]
|
|
// [111] phi (byte*) memset::dst#2 = (byte*) memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy
|
|
// memset::@2
|
|
__b2:
|
|
// for(char* dst = str; dst!=end; dst++)
|
|
// [112] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1
|
|
lda.z dst+1
|
|
cmp.z end+1
|
|
bne __b3
|
|
lda.z dst
|
|
cmp.z end
|
|
bne __b3
|
|
// memset::@return
|
|
__breturn:
|
|
// }
|
|
// [113] return
|
|
rts
|
|
// memset::@3
|
|
__b3:
|
|
// *dst = c
|
|
// [114] *((byte*) memset::dst#2) ← (byte) memset::c#4 -- _deref_pbuz1=vbuxx
|
|
txa
|
|
ldy #0
|
|
sta (dst),y
|
|
// for(char* dst = str; dst!=end; dst++)
|
|
// [115] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2 -- pbuz1=_inc_pbuz1
|
|
inc.z dst
|
|
bne !+
|
|
inc.z dst+1
|
|
!:
|
|
jmp __b2
|
|
}
|
|
// bitmap_init
|
|
// Initialize bitmap plotting tables
|
|
bitmap_init: {
|
|
.label __7 = $20
|
|
.label yoffs = $f
|
|
// [117] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
|
// [117] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [117] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1
|
|
lda #$80
|
|
// [117] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1]
|
|
// [117] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy
|
|
// [117] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy
|
|
// bitmap_init::@1
|
|
__b1:
|
|
// bitmap_plot_bit[x] = bits
|
|
// [118] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa
|
|
sta bitmap_plot_bit,x
|
|
// bits >>= 1
|
|
// [119] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuaa=vbuaa_ror_1
|
|
lsr
|
|
// if(bits==0)
|
|
// [120] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1
|
|
cmp #0
|
|
bne __b2
|
|
// [122] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2]
|
|
// [122] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1
|
|
lda #$80
|
|
// [121] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6]
|
|
// bitmap_init::@6
|
|
// [122] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2]
|
|
// [122] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy
|
|
// bitmap_init::@2
|
|
__b2:
|
|
// for(char x : 0..255)
|
|
// [123] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [124] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1
|
|
cpx #0
|
|
bne __b1
|
|
// [125] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3]
|
|
// [125] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1
|
|
lda #<BITMAP
|
|
sta.z yoffs
|
|
lda #>BITMAP
|
|
sta.z yoffs+1
|
|
// [125] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [125] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3]
|
|
// [125] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy
|
|
// [125] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy
|
|
// bitmap_init::@3
|
|
__b3:
|
|
// y&$7
|
|
// [126] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1
|
|
lda #7
|
|
sax.z __7
|
|
// <yoffs
|
|
// [127] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1
|
|
lda.z yoffs
|
|
// y&$7 | <yoffs
|
|
// [128] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa
|
|
ora.z __7
|
|
// bitmap_plot_ylo[y] = y&$7 | <yoffs
|
|
// [129] *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa
|
|
sta bitmap_plot_ylo,x
|
|
// >yoffs
|
|
// [130] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1
|
|
lda.z yoffs+1
|
|
// bitmap_plot_yhi[y] = >yoffs
|
|
// [131] *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa
|
|
sta bitmap_plot_yhi,x
|
|
// if((y&$7)==7)
|
|
// [132] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1
|
|
lda #7
|
|
cmp.z __7
|
|
bne __b4
|
|
// bitmap_init::@5
|
|
// yoffs = yoffs + 40*8
|
|
// [133] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1
|
|
clc
|
|
lda.z yoffs
|
|
adc #<$28*8
|
|
sta.z yoffs
|
|
lda.z yoffs+1
|
|
adc #>$28*8
|
|
sta.z yoffs+1
|
|
// [134] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4]
|
|
// [134] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy
|
|
// bitmap_init::@4
|
|
__b4:
|
|
// for(char y : 0..255)
|
|
// [135] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [136] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1
|
|
cpx #0
|
|
bne __b3
|
|
// bitmap_init::@return
|
|
// }
|
|
// [137] return
|
|
rts
|
|
}
|
|
// sin16s_gen2
|
|
// Generate signed int 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* zp($1c) sintab)
|
|
sin16s_gen2: {
|
|
.const min = -$1001
|
|
.const max = $1001
|
|
.const ampl = max-min
|
|
.label wavelength = $200
|
|
.label __6 = $b
|
|
.label __8 = $25
|
|
.label step = $21
|
|
.label sintab = $1c
|
|
// u[4.28]
|
|
// Iterate over the table
|
|
.label x = $11
|
|
.label i = $f
|
|
// div32u16u(PI2_u4f28, wavelength)
|
|
// [139] call div32u16u
|
|
// [206] phi from sin16s_gen2 to div32u16u [phi:sin16s_gen2->div32u16u]
|
|
jsr div32u16u
|
|
// div32u16u(PI2_u4f28, wavelength)
|
|
// [140] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
|
|
// sin16s_gen2::@3
|
|
// step = div32u16u(PI2_u4f28, wavelength)
|
|
// [141] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2
|
|
// [142] phi from sin16s_gen2::@3 to sin16s_gen2::@1 [phi:sin16s_gen2::@3->sin16s_gen2::@1]
|
|
// [142] phi (signed word*) sin16s_gen2::sintab#2 = (const signed word*) SINUS [phi:sin16s_gen2::@3->sin16s_gen2::@1#0] -- pwsz1=pwsc1
|
|
lda #<SINUS
|
|
sta.z sintab
|
|
lda #>SINUS
|
|
sta.z sintab+1
|
|
// [142] phi (dword) sin16s_gen2::x#2 = (dword) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#1] -- vduz1=vduc1
|
|
lda #<0
|
|
sta.z x
|
|
sta.z x+1
|
|
lda #<0>>$10
|
|
sta.z x+2
|
|
lda #>0>>$10
|
|
sta.z x+3
|
|
// [142] phi (word) sin16s_gen2::i#2 = (word) 0 [phi:sin16s_gen2::@3->sin16s_gen2::@1#2] -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z i
|
|
sta.z i+1
|
|
// u[4.28]
|
|
// sin16s_gen2::@1
|
|
__b1:
|
|
// for( unsigned int i=0; i<wavelength; i++)
|
|
// [143] if((word) sin16s_gen2::i#2<(const word) sin16s_gen2::wavelength#0) goto sin16s_gen2::@2 -- vwuz1_lt_vwuc1_then_la1
|
|
lda.z i+1
|
|
cmp #>wavelength
|
|
bcc __b2
|
|
bne !+
|
|
lda.z i
|
|
cmp #<wavelength
|
|
bcc __b2
|
|
!:
|
|
// sin16s_gen2::@return
|
|
// }
|
|
// [144] return
|
|
rts
|
|
// sin16s_gen2::@2
|
|
__b2:
|
|
// sin16s(x)
|
|
// [145] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 -- vduz1=vduz2
|
|
lda.z x
|
|
sta.z sin16s.x
|
|
lda.z x+1
|
|
sta.z sin16s.x+1
|
|
lda.z x+2
|
|
sta.z sin16s.x+2
|
|
lda.z x+3
|
|
sta.z sin16s.x+3
|
|
// [146] call sin16s
|
|
jsr sin16s
|
|
// [147] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
|
|
// sin16s_gen2::@4
|
|
// mul16s(sin16s(x), ampl)
|
|
// [148] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0
|
|
// [149] call mul16s
|
|
// [63] phi from sin16s_gen2::@4 to mul16s [phi:sin16s_gen2::@4->mul16s]
|
|
// [63] phi (signed word) mul16s::b#3 = (const signed word) sin16s_gen2::ampl#0 [phi:sin16s_gen2::@4->mul16s#0] -- vwsz1=vwsc1
|
|
lda #<ampl
|
|
sta.z mul16s.b
|
|
lda #>ampl
|
|
sta.z mul16s.b+1
|
|
// [63] phi (signed word) mul16s::a#3 = (signed word) mul16s::a#0 [phi:sin16s_gen2::@4->mul16s#1] -- register_copy
|
|
jsr mul16s
|
|
// mul16s(sin16s(x), ampl)
|
|
// [150] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
|
|
// sin16s_gen2::@5
|
|
// [151] (signed dword~) sin16s_gen2::$6 ← (signed dword) mul16s::return#2
|
|
// >mul16s(sin16s(x), ampl)
|
|
// [152] (word~) sin16s_gen2::$8 ← > (signed dword~) sin16s_gen2::$6 -- vwuz1=_hi_vdsz2
|
|
lda.z __6+2
|
|
sta.z __8
|
|
lda.z __6+3
|
|
sta.z __8+1
|
|
// *sintab++ = offs + (signed int)>mul16s(sin16s(x), ampl)
|
|
// [153] *((signed word*) sin16s_gen2::sintab#2) ← (signed word)(word~) sin16s_gen2::$8 -- _deref_pwsz1=vwsz2
|
|
ldy #0
|
|
lda.z __8
|
|
sta (sintab),y
|
|
iny
|
|
lda.z __8+1
|
|
sta (sintab),y
|
|
// *sintab++ = offs + (signed int)>mul16s(sin16s(x), ampl);
|
|
// [154] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1
|
|
lda #SIZEOF_SIGNED_WORD
|
|
clc
|
|
adc.z sintab
|
|
sta.z sintab
|
|
bcc !+
|
|
inc.z sintab+1
|
|
!:
|
|
// x = x + step
|
|
// [155] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 -- vduz1=vduz1_plus_vduz2
|
|
lda.z x
|
|
clc
|
|
adc.z step
|
|
sta.z x
|
|
lda.z x+1
|
|
adc.z step+1
|
|
sta.z x+1
|
|
lda.z x+2
|
|
adc.z step+2
|
|
sta.z x+2
|
|
lda.z x+3
|
|
adc.z step+3
|
|
sta.z x+3
|
|
// for( unsigned int i=0; i<wavelength; i++)
|
|
// [156] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 -- vwuz1=_inc_vwuz1
|
|
inc.z i
|
|
bne !+
|
|
inc.z i+1
|
|
!:
|
|
// [142] phi from sin16s_gen2::@5 to sin16s_gen2::@1 [phi:sin16s_gen2::@5->sin16s_gen2::@1]
|
|
// [142] phi (signed word*) sin16s_gen2::sintab#2 = (signed word*) sin16s_gen2::sintab#0 [phi:sin16s_gen2::@5->sin16s_gen2::@1#0] -- register_copy
|
|
// [142] phi (dword) sin16s_gen2::x#2 = (dword) sin16s_gen2::x#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#1] -- register_copy
|
|
// [142] phi (word) sin16s_gen2::i#2 = (word) sin16s_gen2::i#1 [phi:sin16s_gen2::@5->sin16s_gen2::@1#2] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// sin16s
|
|
// Calculate signed int sinus sin(x)
|
|
// x: unsigned long input u[4.28] in the interval $00000000 - PI2_u4f28
|
|
// result: signed int sin(x) s[0.15] - using the full range -$7fff - $7fff
|
|
// sin16s(dword zp($15) x)
|
|
sin16s: {
|
|
.label __4 = $27
|
|
.label x = $15
|
|
.label return = 4
|
|
.label x1 = $2d
|
|
.label x2 = $19
|
|
.label x3 = $19
|
|
.label x3_6 = $2b
|
|
.label usinx = 4
|
|
.label x4 = $19
|
|
.label x5 = $2b
|
|
.label x5_128 = $2b
|
|
.label sinx = 4
|
|
// if(x >= PI_u4f28 )
|
|
// [157] if((dword) sin16s::x#0<(const nomodify dword) PI_u4f28) goto sin16s::@1 -- vduz1_lt_vduc1_then_la1
|
|
lda.z x+3
|
|
cmp #>PI_u4f28>>$10
|
|
bcc __b4
|
|
bne !+
|
|
lda.z x+2
|
|
cmp #<PI_u4f28>>$10
|
|
bcc __b4
|
|
bne !+
|
|
lda.z x+1
|
|
cmp #>PI_u4f28
|
|
bcc __b4
|
|
bne !+
|
|
lda.z x
|
|
cmp #<PI_u4f28
|
|
bcc __b4
|
|
!:
|
|
// sin16s::@4
|
|
// x = x - PI_u4f28
|
|
// [158] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const nomodify dword) PI_u4f28 -- vduz1=vduz1_minus_vduc1
|
|
lda.z x
|
|
sec
|
|
sbc #<PI_u4f28
|
|
sta.z x
|
|
lda.z x+1
|
|
sbc #>PI_u4f28
|
|
sta.z x+1
|
|
lda.z x+2
|
|
sbc #<PI_u4f28>>$10
|
|
sta.z x+2
|
|
lda.z x+3
|
|
sbc #>PI_u4f28>>$10
|
|
sta.z x+3
|
|
// [159] phi from sin16s::@4 to sin16s::@1 [phi:sin16s::@4->sin16s::@1]
|
|
// [159] phi (byte) sin16s::isUpper#2 = (byte) 1 [phi:sin16s::@4->sin16s::@1#0] -- vbuyy=vbuc1
|
|
ldy #1
|
|
// [159] phi (dword) sin16s::x#4 = (dword) sin16s::x#1 [phi:sin16s::@4->sin16s::@1#1] -- register_copy
|
|
jmp __b1
|
|
// [159] phi from sin16s to sin16s::@1 [phi:sin16s->sin16s::@1]
|
|
__b4:
|
|
// [159] phi (byte) sin16s::isUpper#2 = (byte) 0 [phi:sin16s->sin16s::@1#0] -- vbuyy=vbuc1
|
|
ldy #0
|
|
// [159] phi (dword) sin16s::x#4 = (dword) sin16s::x#0 [phi:sin16s->sin16s::@1#1] -- register_copy
|
|
// sin16s::@1
|
|
__b1:
|
|
// if(x >= PI_HALF_u4f28 )
|
|
// [160] if((dword) sin16s::x#4<(const nomodify dword) PI_HALF_u4f28) goto sin16s::@2 -- vduz1_lt_vduc1_then_la1
|
|
lda.z x+3
|
|
cmp #>PI_HALF_u4f28>>$10
|
|
bcc __b2
|
|
bne !+
|
|
lda.z x+2
|
|
cmp #<PI_HALF_u4f28>>$10
|
|
bcc __b2
|
|
bne !+
|
|
lda.z x+1
|
|
cmp #>PI_HALF_u4f28
|
|
bcc __b2
|
|
bne !+
|
|
lda.z x
|
|
cmp #<PI_HALF_u4f28
|
|
bcc __b2
|
|
!:
|
|
// sin16s::@5
|
|
// x = PI_u4f28 - x
|
|
// [161] (dword) sin16s::x#2 ← (const nomodify dword) PI_u4f28 - (dword) sin16s::x#4 -- vduz1=vduc1_minus_vduz1
|
|
lda #<PI_u4f28
|
|
sec
|
|
sbc.z x
|
|
sta.z x
|
|
lda #>PI_u4f28
|
|
sbc.z x+1
|
|
sta.z x+1
|
|
lda #<PI_u4f28>>$10
|
|
sbc.z x+2
|
|
sta.z x+2
|
|
lda #>PI_u4f28>>$10
|
|
sbc.z x+3
|
|
sta.z x+3
|
|
// [162] phi from sin16s::@1 sin16s::@5 to sin16s::@2 [phi:sin16s::@1/sin16s::@5->sin16s::@2]
|
|
// [162] phi (dword) sin16s::x#6 = (dword) sin16s::x#4 [phi:sin16s::@1/sin16s::@5->sin16s::@2#0] -- register_copy
|
|
// sin16s::@2
|
|
__b2:
|
|
// x<<3
|
|
// [163] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte) 3 -- vduz1=vduz2_rol_3
|
|
lda.z x
|
|
asl
|
|
sta.z __4
|
|
lda.z x+1
|
|
rol
|
|
sta.z __4+1
|
|
lda.z x+2
|
|
rol
|
|
sta.z __4+2
|
|
lda.z x+3
|
|
rol
|
|
sta.z __4+3
|
|
asl.z __4
|
|
rol.z __4+1
|
|
rol.z __4+2
|
|
rol.z __4+3
|
|
asl.z __4
|
|
rol.z __4+1
|
|
rol.z __4+2
|
|
rol.z __4+3
|
|
// x1 = >x<<3
|
|
// [164] (word) sin16s::x1#0 ← > (dword~) sin16s::$4 -- vwuz1=_hi_vduz2
|
|
lda.z __4+2
|
|
sta.z x1
|
|
lda.z __4+3
|
|
sta.z x1+1
|
|
// mulu16_sel(x1, x1, 0)
|
|
// [165] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2
|
|
lda.z x1
|
|
sta.z mulu16_sel.v1
|
|
lda.z x1+1
|
|
sta.z mulu16_sel.v1+1
|
|
// [166] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 -- vwuz1=vwuz2
|
|
lda.z x1
|
|
sta.z mulu16_sel.v2
|
|
lda.z x1+1
|
|
sta.z mulu16_sel.v2+1
|
|
// [167] call mulu16_sel
|
|
// [197] phi from sin16s::@2 to mulu16_sel [phi:sin16s::@2->mulu16_sel]
|
|
// [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@2->mulu16_sel#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#0 [phi:sin16s::@2->mulu16_sel#1] -- register_copy
|
|
// [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#0 [phi:sin16s::@2->mulu16_sel#2] -- register_copy
|
|
jsr mulu16_sel
|
|
// mulu16_sel(x1, x1, 0)
|
|
// [168] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
|
// sin16s::@7
|
|
// x2 = mulu16_sel(x1, x1, 0)
|
|
// [169] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return
|
|
sta.z x2
|
|
lda.z mulu16_sel.return+1
|
|
sta.z x2+1
|
|
// mulu16_sel(x2, x1, 1)
|
|
// [170] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
|
// [171] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 -- vwuz1=vwuz2
|
|
lda.z x1
|
|
sta.z mulu16_sel.v2
|
|
lda.z x1+1
|
|
sta.z mulu16_sel.v2+1
|
|
// [172] call mulu16_sel
|
|
// [197] phi from sin16s::@7 to mulu16_sel [phi:sin16s::@7->mulu16_sel]
|
|
// [197] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@7->mulu16_sel#0] -- vbuxx=vbuc1
|
|
ldx #1
|
|
// [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#1 [phi:sin16s::@7->mulu16_sel#1] -- register_copy
|
|
// [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#1 [phi:sin16s::@7->mulu16_sel#2] -- register_copy
|
|
jsr mulu16_sel
|
|
// mulu16_sel(x2, x1, 1)
|
|
// [173] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return
|
|
sta.z mulu16_sel.return_1
|
|
lda.z mulu16_sel.return+1
|
|
sta.z mulu16_sel.return_1+1
|
|
// sin16s::@8
|
|
// x3 = mulu16_sel(x2, x1, 1)
|
|
// [174] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
|
// mulu16_sel(x3, $10000/6, 1)
|
|
// [175] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
|
// [176] call mulu16_sel
|
|
// [197] phi from sin16s::@8 to mulu16_sel [phi:sin16s::@8->mulu16_sel]
|
|
// [197] phi (byte) mulu16_sel::select#5 = (byte) 1 [phi:sin16s::@8->mulu16_sel#0] -- vbuxx=vbuc1
|
|
ldx #1
|
|
// [197] phi (word) mulu16_sel::v2#5 = (word)(number) $10000/(number) 6 [phi:sin16s::@8->mulu16_sel#1] -- vwuz1=vwuc1
|
|
lda #<$10000/6
|
|
sta.z mulu16_sel.v2
|
|
lda #>$10000/6
|
|
sta.z mulu16_sel.v2+1
|
|
// [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#2 [phi:sin16s::@8->mulu16_sel#2] -- register_copy
|
|
jsr mulu16_sel
|
|
// mulu16_sel(x3, $10000/6, 1)
|
|
// [177] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
|
// sin16s::@9
|
|
// x3_6 = mulu16_sel(x3, $10000/6, 1)
|
|
// [178] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
|
// usinx = x1 - x3_6
|
|
// [179] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 -- vwuz1=vwuz2_minus_vwuz3
|
|
lda.z x1
|
|
sec
|
|
sbc.z x3_6
|
|
sta.z usinx
|
|
lda.z x1+1
|
|
sbc.z x3_6+1
|
|
sta.z usinx+1
|
|
// mulu16_sel(x3, x1, 0)
|
|
// [180] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
|
// [181] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 -- vwuz1=vwuz2
|
|
lda.z x1
|
|
sta.z mulu16_sel.v2
|
|
lda.z x1+1
|
|
sta.z mulu16_sel.v2+1
|
|
// [182] call mulu16_sel
|
|
// [197] phi from sin16s::@9 to mulu16_sel [phi:sin16s::@9->mulu16_sel]
|
|
// [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@9->mulu16_sel#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#3 [phi:sin16s::@9->mulu16_sel#1] -- register_copy
|
|
// [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#3 [phi:sin16s::@9->mulu16_sel#2] -- register_copy
|
|
jsr mulu16_sel
|
|
// mulu16_sel(x3, x1, 0)
|
|
// [183] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 -- vwuz1=vwuz2
|
|
lda.z mulu16_sel.return
|
|
sta.z mulu16_sel.return_1
|
|
lda.z mulu16_sel.return+1
|
|
sta.z mulu16_sel.return_1+1
|
|
// sin16s::@10
|
|
// x4 = mulu16_sel(x3, x1, 0)
|
|
// [184] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
|
// mulu16_sel(x4, x1, 0)
|
|
// [185] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
|
// [186] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 -- vwuz1=vwuz2
|
|
lda.z x1
|
|
sta.z mulu16_sel.v2
|
|
lda.z x1+1
|
|
sta.z mulu16_sel.v2+1
|
|
// [187] call mulu16_sel
|
|
// [197] phi from sin16s::@10 to mulu16_sel [phi:sin16s::@10->mulu16_sel]
|
|
// [197] phi (byte) mulu16_sel::select#5 = (byte) 0 [phi:sin16s::@10->mulu16_sel#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [197] phi (word) mulu16_sel::v2#5 = (word) mulu16_sel::v2#4 [phi:sin16s::@10->mulu16_sel#1] -- register_copy
|
|
// [197] phi (word) mulu16_sel::v1#5 = (word) mulu16_sel::v1#4 [phi:sin16s::@10->mulu16_sel#2] -- register_copy
|
|
jsr mulu16_sel
|
|
// mulu16_sel(x4, x1, 0)
|
|
// [188] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
|
// sin16s::@11
|
|
// x5 = mulu16_sel(x4, x1, 0)
|
|
// [189] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
|
// x5_128 = x5>>4
|
|
// [190] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte) 4 -- vwuz1=vwuz1_ror_4
|
|
lsr.z x5_128+1
|
|
ror.z x5_128
|
|
lsr.z x5_128+1
|
|
ror.z x5_128
|
|
lsr.z x5_128+1
|
|
ror.z x5_128
|
|
lsr.z x5_128+1
|
|
ror.z x5_128
|
|
// usinx = usinx + x5_128
|
|
// [191] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 -- vwuz1=vwuz1_plus_vwuz2
|
|
lda.z usinx
|
|
clc
|
|
adc.z x5_128
|
|
sta.z usinx
|
|
lda.z usinx+1
|
|
adc.z x5_128+1
|
|
sta.z usinx+1
|
|
// if(isUpper!=0)
|
|
// [192] if((byte) sin16s::isUpper#2==(byte) 0) goto sin16s::@12 -- vbuyy_eq_0_then_la1
|
|
cpy #0
|
|
beq __b3
|
|
// sin16s::@6
|
|
// sinx = -(signed int)usinx
|
|
// [193] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 -- vwsz1=_neg_vwsz1
|
|
sec
|
|
lda #0
|
|
sbc.z sinx
|
|
sta.z sinx
|
|
lda #0
|
|
sbc.z sinx+1
|
|
sta.z sinx+1
|
|
// [194] phi from sin16s::@12 sin16s::@6 to sin16s::@3 [phi:sin16s::@12/sin16s::@6->sin16s::@3]
|
|
// [194] phi (signed word) sin16s::return#1 = (signed word) sin16s::return#5 [phi:sin16s::@12/sin16s::@6->sin16s::@3#0] -- register_copy
|
|
// sin16s::@3
|
|
__b3:
|
|
// sin16s::@return
|
|
// }
|
|
// [195] return
|
|
rts
|
|
// sin16s::@12
|
|
// [196] (signed word) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
|
}
|
|
// mulu16_sel
|
|
// Calculate val*val for two unsigned int 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 zp($19) v1, word zp($1e) v2, byte register(X) select)
|
|
mulu16_sel: {
|
|
.label __0 = $b
|
|
.label __1 = $b
|
|
.label v1 = $19
|
|
.label v2 = $1e
|
|
.label return = $2b
|
|
.label return_1 = $19
|
|
// mul16u(v1, v2)
|
|
// [198] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 -- vwuz1=vwuz2
|
|
lda.z v1
|
|
sta.z mul16u.a
|
|
lda.z v1+1
|
|
sta.z mul16u.a+1
|
|
// [199] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
|
// [200] call mul16u
|
|
// [81] phi from mulu16_sel to mul16u [phi:mulu16_sel->mul16u]
|
|
// [81] phi (word) mul16u::a#6 = (word) mul16u::a#2 [phi:mulu16_sel->mul16u#0] -- register_copy
|
|
// [81] phi (word) mul16u::b#2 = (word) mul16u::b#1 [phi:mulu16_sel->mul16u#1] -- register_copy
|
|
jsr mul16u
|
|
// mul16u(v1, v2)
|
|
// [201] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
|
// mulu16_sel::@1
|
|
// [202] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
|
// mul16u(v1, v2)<<select
|
|
// [203] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 -- vduz1=vduz1_rol_vbuxx
|
|
cpx #0
|
|
beq !e+
|
|
!:
|
|
asl.z __1
|
|
rol.z __1+1
|
|
rol.z __1+2
|
|
rol.z __1+3
|
|
dex
|
|
bne !-
|
|
!e:
|
|
// >mul16u(v1, v2)<<select
|
|
// [204] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 -- vwuz1=_hi_vduz2
|
|
lda.z __1+2
|
|
sta.z return
|
|
lda.z __1+3
|
|
sta.z return+1
|
|
// mulu16_sel::@return
|
|
// }
|
|
// [205] return
|
|
rts
|
|
}
|
|
// div32u16u
|
|
// Divide unsigned 32-bit unsigned long dividend with a 16-bit unsigned int divisor
|
|
// The 16-bit unsigned int remainder can be found in rem16u after the division
|
|
div32u16u: {
|
|
.label quotient_hi = $2d
|
|
.label quotient_lo = $25
|
|
.label return = $21
|
|
// divr16u(>dividend, divisor, 0)
|
|
// [207] call divr16u
|
|
// [216] phi from div32u16u to divr16u [phi:div32u16u->divr16u]
|
|
// [216] phi (word) divr16u::dividend#5 = >(const nomodify dword) PI2_u4f28 [phi:div32u16u->divr16u#0] -- vwuz1=vwuc1
|
|
lda #<PI2_u4f28>>$10
|
|
sta.z divr16u.dividend
|
|
lda #>PI2_u4f28>>$10
|
|
sta.z divr16u.dividend+1
|
|
// [216] phi (word) divr16u::rem#10 = (byte) 0 [phi:div32u16u->divr16u#1] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z divr16u.rem
|
|
sta.z divr16u.rem+1
|
|
jsr divr16u
|
|
// divr16u(>dividend, divisor, 0)
|
|
// [208] (word) divr16u::return#2 ← (word) divr16u::return#0
|
|
// div32u16u::@1
|
|
// quotient_hi = divr16u(>dividend, divisor, 0)
|
|
// [209] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2
|
|
lda.z divr16u.return
|
|
sta.z quotient_hi
|
|
lda.z divr16u.return+1
|
|
sta.z quotient_hi+1
|
|
// divr16u(<dividend, divisor, rem16u)
|
|
// [210] (word) divr16u::rem#4 ← (word) rem16u#1
|
|
// [211] call divr16u
|
|
// [216] phi from div32u16u::@1 to divr16u [phi:div32u16u::@1->divr16u]
|
|
// [216] phi (word) divr16u::dividend#5 = <(const nomodify dword) PI2_u4f28 [phi:div32u16u::@1->divr16u#0] -- vwuz1=vwuc1
|
|
lda #<PI2_u4f28&$ffff
|
|
sta.z divr16u.dividend
|
|
lda #>PI2_u4f28&$ffff
|
|
sta.z divr16u.dividend+1
|
|
// [216] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:div32u16u::@1->divr16u#1] -- register_copy
|
|
jsr divr16u
|
|
// divr16u(<dividend, divisor, rem16u)
|
|
// [212] (word) divr16u::return#3 ← (word) divr16u::return#0
|
|
// div32u16u::@2
|
|
// quotient_lo = divr16u(<dividend, divisor, rem16u)
|
|
// [213] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
|
// quotient = { quotient_hi, quotient_lo}
|
|
// [214] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 -- vduz1=vwuz2_dword_vwuz3
|
|
lda.z quotient_hi
|
|
sta.z return+2
|
|
lda.z quotient_hi+1
|
|
sta.z return+3
|
|
lda.z quotient_lo
|
|
sta.z return
|
|
lda.z quotient_lo+1
|
|
sta.z return+1
|
|
// div32u16u::@return
|
|
// }
|
|
// [215] return
|
|
rts
|
|
}
|
|
// divr16u
|
|
// Performs division on two 16 bit unsigned ints and an initial remainder
|
|
// Returns the quotient dividend/divisor.
|
|
// The final remainder will be set into the global variable rem16u
|
|
// Implemented using simple binary division
|
|
// divr16u(word zp($1e) dividend, word zp($19) rem)
|
|
divr16u: {
|
|
.label rem = $19
|
|
.label dividend = $1e
|
|
.label quotient = $25
|
|
.label return = $25
|
|
// [217] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
|
|
// [217] phi (byte) divr16u::i#2 = (byte) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// [217] phi (word) divr16u::quotient#3 = (word) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vwuc1
|
|
txa
|
|
sta.z quotient
|
|
sta.z quotient+1
|
|
// [217] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#5 [phi:divr16u->divr16u::@1#2] -- register_copy
|
|
// [217] phi (word) divr16u::rem#5 = (word) divr16u::rem#10 [phi:divr16u->divr16u::@1#3] -- register_copy
|
|
// [217] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
|
|
// [217] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy
|
|
// [217] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy
|
|
// [217] phi (word) divr16u::dividend#3 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy
|
|
// [217] phi (word) divr16u::rem#5 = (word) divr16u::rem#11 [phi:divr16u::@3->divr16u::@1#3] -- register_copy
|
|
// divr16u::@1
|
|
__b1:
|
|
// rem = rem << 1
|
|
// [218] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte) 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z rem
|
|
rol.z rem+1
|
|
// >dividend
|
|
// [219] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 -- vbuaa=_hi_vwuz1
|
|
lda.z dividend+1
|
|
// >dividend & $80
|
|
// [220] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80 -- vbuaa=vbuaa_band_vbuc1
|
|
and #$80
|
|
// if( (>dividend & $80) != 0 )
|
|
// [221] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1
|
|
cmp #0
|
|
beq __b2
|
|
// divr16u::@4
|
|
// rem = rem | 1
|
|
// [222] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 1 -- vwuz1=vwuz1_bor_vbuc1
|
|
lda #1
|
|
ora.z rem
|
|
sta.z rem
|
|
// [223] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
|
|
// [223] phi (word) divr16u::rem#6 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy
|
|
// divr16u::@2
|
|
__b2:
|
|
// dividend = dividend << 1
|
|
// [224] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte) 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z dividend
|
|
rol.z dividend+1
|
|
// quotient = quotient << 1
|
|
// [225] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 1 -- vwuz1=vwuz1_rol_1
|
|
asl.z quotient
|
|
rol.z quotient+1
|
|
// if(rem>=divisor)
|
|
// [226] if((word) divr16u::rem#6<(const word) sin16s_gen2::wavelength#0) goto divr16u::@3 -- vwuz1_lt_vwuc1_then_la1
|
|
lda.z rem+1
|
|
cmp #>sin16s_gen2.wavelength
|
|
bcc __b3
|
|
bne !+
|
|
lda.z rem
|
|
cmp #<sin16s_gen2.wavelength
|
|
bcc __b3
|
|
!:
|
|
// divr16u::@5
|
|
// quotient++;
|
|
// [227] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1
|
|
inc.z quotient
|
|
bne !+
|
|
inc.z quotient+1
|
|
!:
|
|
// rem = rem - divisor
|
|
// [228] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) sin16s_gen2::wavelength#0 -- vwuz1=vwuz1_minus_vwuc1
|
|
lda.z rem
|
|
sec
|
|
sbc #<sin16s_gen2.wavelength
|
|
sta.z rem
|
|
lda.z rem+1
|
|
sbc #>sin16s_gen2.wavelength
|
|
sta.z rem+1
|
|
// [229] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
|
|
// [229] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy
|
|
// [229] phi (word) divr16u::rem#11 = (word) divr16u::rem#6 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy
|
|
// divr16u::@3
|
|
__b3:
|
|
// for( char i : 0..15)
|
|
// [230] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [231] if((byte) divr16u::i#1!=(byte) $10) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #$10
|
|
bne __b1
|
|
// divr16u::@6
|
|
// rem16u = rem
|
|
// [232] (word) rem16u#1 ← (word) divr16u::rem#11
|
|
// divr16u::@return
|
|
// }
|
|
// [233] return
|
|
rts
|
|
}
|
|
// irq
|
|
// Interrupt Routine counting frames
|
|
irq: {
|
|
// entry interrupt(HARDWARE_CLOBBER)
|
|
sta rega+1
|
|
// *BG_COLOR = WHITE
|
|
// [234] *((const nomodify byte*) BG_COLOR) ← (const nomodify byte) WHITE -- _deref_pbuc1=vbuc2
|
|
lda #WHITE
|
|
sta BG_COLOR
|
|
// if(frame_cnt)
|
|
// [235] if((byte) 0==(volatile byte) frame_cnt) goto irq::@1 -- vbuc1_eq_vbuz1_then_la1
|
|
lda #0
|
|
cmp.z frame_cnt
|
|
beq __b1
|
|
// irq::@2
|
|
// frame_cnt++;
|
|
// [236] (volatile byte) frame_cnt ← ++ (volatile byte) frame_cnt -- vbuz1=_inc_vbuz1
|
|
inc.z frame_cnt
|
|
// irq::@1
|
|
__b1:
|
|
// *BG_COLOR = BLACK
|
|
// [237] *((const nomodify byte*) BG_COLOR) ← (const nomodify byte) BLACK -- _deref_pbuc1=vbuc2
|
|
lda #BLACK
|
|
sta BG_COLOR
|
|
// *IRQ_STATUS = IRQ_RASTER
|
|
// [238] *((const nomodify byte*) IRQ_STATUS) ← (const nomodify byte) IRQ_RASTER -- _deref_pbuc1=vbuc2
|
|
// Acknowledge the IRQ
|
|
lda #IRQ_RASTER
|
|
sta IRQ_STATUS
|
|
// irq::@return
|
|
// }
|
|
// [239] return - exit interrupt(HARDWARE_CLOBBER)
|
|
rega:
|
|
lda #00
|
|
rti
|
|
}
|
|
// File Data
|
|
// Tables for the plotter - initialized by calling bitmap_init();
|
|
bitmap_plot_ylo: .fill $100, 0
|
|
bitmap_plot_yhi: .fill $100, 0
|
|
bitmap_plot_bit: .fill $100, 0
|
|
plots_per_frame: .fill $100, 0
|
|
.align $100
|
|
SINUS: .fill 2*$200, 0
|
|
|