mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-08-07 22:25:13 +00:00
4741 lines
214 KiB
Plaintext
4741 lines
214 KiB
Plaintext
Resolved forward reference rand_seed to (word) rand_seed
|
|
Setting inferred volatile on symbol affected by address-of (word) last_time
|
|
Setting inferred volatile on symbol affected by address-of (word) rand_seed
|
|
Fixing pointer addition (word*~) bsearch16u::$7 ← (word*) bsearch16u::items + (byte~) bsearch16u::$6
|
|
Fixing pointer addition (word*~) bsearch16u::$15 ← (word*) bsearch16u::pivot + (number) 1
|
|
Fixing pointer addition (word*~) bsearch16u::$1 ← (word*) bsearch16u::items - (number) 1
|
|
Fixing pointer array-indexing *((word*) utoa::digit_values + (byte) utoa::digit)
|
|
Fixing pointer array-indexing *((dword*) ultoa::digit_values + (byte) ultoa::digit)
|
|
Warning! Adding boolean cast to non-boolean condition *((byte*) strcpy::src)
|
|
Warning! Adding boolean cast to non-boolean condition *((byte*) strlen::str)
|
|
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_lines::str)
|
|
Warning! Adding boolean cast to non-boolean condition (byte) print_str_lines::ch
|
|
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str::str)
|
|
Warning! Adding boolean cast to non-boolean condition *((byte*) print_str_at::str)
|
|
Warning! Adding boolean cast to non-boolean condition (word) main::count
|
|
Warning! Adding boolean cast to non-boolean sub-expression (byte) print_str_lines::ch
|
|
Identified constant variable (byte*) HEAP_TOP
|
|
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
|
Culled Empty Block (label) @1
|
|
Culled Empty Block (label) @2
|
|
Culled Empty Block (label) @3
|
|
Culled Empty Block (label) @4
|
|
Culled Empty Block (label) @5
|
|
Culled Empty Block (label) @6
|
|
Culled Empty Block (label) @7
|
|
Culled Empty Block (label) @8
|
|
Culled Empty Block (label) @9
|
|
Culled Empty Block (label) @10
|
|
Culled Empty Block (label) @11
|
|
Culled Empty Block (label) @12
|
|
Culled Empty Block (label) @14
|
|
Culled Empty Block (label) @15
|
|
Culled Empty Block (label) @16
|
|
Culled Empty Block (label) @17
|
|
Culled Empty Block (label) @18
|
|
Culled Empty Block (label) @19
|
|
Culled Empty Block (label) @20
|
|
Culled Empty Block (label) @21
|
|
Culled Empty Block (label) @22
|
|
Culled Empty Block (label) @23
|
|
Culled Empty Block (label) @24
|
|
Culled Empty Block (label) @25
|
|
Culled Empty Block (label) @26
|
|
Culled Empty Block (label) @27
|
|
Culled Empty Block (label) @28
|
|
Culled Empty Block (label) @29
|
|
Culled Empty Block (label) @30
|
|
Culled Empty Block (label) @31
|
|
Culled Empty Block (label) @32
|
|
Culled Empty Block (label) @33
|
|
Culled Empty Block (label) @34
|
|
Culled Empty Block (label) @35
|
|
Culled Empty Block (label) @36
|
|
Culled Empty Block (label) @37
|
|
Culled Empty Block (label) @38
|
|
Culled Empty Block (label) @39
|
|
Culled Empty Block (label) @40
|
|
Culled Empty Block (label) @41
|
|
Culled Empty Block (label) @42
|
|
Culled Empty Block (label) @44
|
|
Culled Empty Block (label) rand::@1
|
|
Culled Empty Block (label) @46
|
|
Culled Empty Block (label) doplasma::@4
|
|
Culled Empty Block (label) doplasma::@5
|
|
Culled Empty Block (label) doplasma::@6
|
|
Culled Empty Block (label) doplasma::@10
|
|
Culled Empty Block (label) doplasma::@11
|
|
Culled Empty Block (label) doplasma::@12
|
|
Culled Empty Block (label) doplasma::@23
|
|
Culled Empty Block (label) doplasma::@15
|
|
Culled Empty Block (label) doplasma::@24
|
|
Culled Empty Block (label) doplasma::@19
|
|
Culled Empty Block (label) doplasma::@20
|
|
Culled Empty Block (label) doplasma::@21
|
|
Culled Empty Block (label) doplasma::@22
|
|
Culled Empty Block (label) @47
|
|
Culled Empty Block (label) makechar::@19
|
|
Culled Empty Block (label) makechar::@3
|
|
Culled Empty Block (label) makechar::@20
|
|
Culled Empty Block (label) makechar::@16
|
|
Culled Empty Block (label) makechar::@17
|
|
Culled Empty Block (label) makechar::@11
|
|
Culled Empty Block (label) makechar::@12
|
|
Culled Empty Block (label) makechar::@14
|
|
Culled Empty Block (label) makechar::@15
|
|
Culled Empty Block (label) makechar::@18
|
|
Culled Empty Block (label) @48
|
|
Culled Empty Block (label) main::@4
|
|
Culled Empty Block (label) main::@5
|
|
Culled Empty Block (label) main::@6
|
|
Culled Empty Block (label) main::@7
|
|
|
|
CONTROL FLOW GRAPH SSA
|
|
@begin: scope:[] from
|
|
to:@13
|
|
@13: scope:[] from @begin
|
|
(byte*) print_screen#0 ← (byte*)(number) $400
|
|
(byte*) print_line_cursor#0 ← (byte*) print_screen#0
|
|
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
|
|
to:@43
|
|
|
|
(void()) print_ln()
|
|
print_ln: scope:[print_ln] from end::@2
|
|
(byte*) print_char_cursor#33 ← phi( end::@2/(byte*) print_char_cursor#11 )
|
|
(byte*) print_line_cursor#16 ← phi( end::@2/(byte*) print_line_cursor#17 )
|
|
to:print_ln::@1
|
|
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
|
|
(byte*) print_char_cursor#17 ← phi( print_ln/(byte*) print_char_cursor#33 print_ln::@1/(byte*) print_char_cursor#17 )
|
|
(byte*) print_line_cursor#8 ← phi( print_ln/(byte*) print_line_cursor#16 print_ln::@1/(byte*) print_line_cursor#1 )
|
|
(byte*~) print_ln::$0 ← (byte*) print_line_cursor#8 + (number) $28
|
|
(byte*) print_line_cursor#1 ← (byte*~) print_ln::$0
|
|
(bool~) print_ln::$1 ← (byte*) print_line_cursor#1 < (byte*) print_char_cursor#17
|
|
if((bool~) print_ln::$1) goto print_ln::@1
|
|
to:print_ln::@2
|
|
print_ln::@2: scope:[print_ln] from print_ln::@1
|
|
(byte*) print_line_cursor#9 ← phi( print_ln::@1/(byte*) print_line_cursor#1 )
|
|
(byte*) print_char_cursor#1 ← (byte*) print_line_cursor#9
|
|
to:print_ln::@return
|
|
print_ln::@return: scope:[print_ln] from print_ln::@2
|
|
(byte*) print_char_cursor#18 ← phi( print_ln::@2/(byte*) print_char_cursor#1 )
|
|
(byte*) print_line_cursor#10 ← phi( print_ln::@2/(byte*) print_line_cursor#9 )
|
|
(byte*) print_line_cursor#2 ← (byte*) print_line_cursor#10
|
|
(byte*) print_char_cursor#2 ← (byte*) print_char_cursor#18
|
|
return
|
|
to:@return
|
|
|
|
(void()) print_word((word) print_word::w)
|
|
print_word: scope:[print_word] from end::@1
|
|
(byte*) print_char_cursor#34 ← phi( end::@1/(byte*) print_char_cursor#36 )
|
|
(word) print_word::w#1 ← phi( end::@1/(word) print_word::w#0 )
|
|
(byte~) print_word::$0 ← > (word) print_word::w#1
|
|
(byte) print_byte::b#0 ← (byte~) print_word::$0
|
|
call print_byte
|
|
to:print_word::@1
|
|
print_word::@1: scope:[print_word] from print_word
|
|
(word) print_word::w#2 ← phi( print_word/(word) print_word::w#1 )
|
|
(byte*) print_char_cursor#19 ← phi( print_word/(byte*) print_char_cursor#8 )
|
|
(byte*) print_char_cursor#3 ← (byte*) print_char_cursor#19
|
|
(byte~) print_word::$2 ← < (word) print_word::w#2
|
|
(byte) print_byte::b#1 ← (byte~) print_word::$2
|
|
call print_byte
|
|
to:print_word::@2
|
|
print_word::@2: scope:[print_word] from print_word::@1
|
|
(byte*) print_char_cursor#20 ← phi( print_word::@1/(byte*) print_char_cursor#8 )
|
|
(byte*) print_char_cursor#4 ← (byte*) print_char_cursor#20
|
|
to:print_word::@return
|
|
print_word::@return: scope:[print_word] from print_word::@2
|
|
(byte*) print_char_cursor#21 ← phi( print_word::@2/(byte*) print_char_cursor#4 )
|
|
(byte*) print_char_cursor#5 ← (byte*) print_char_cursor#21
|
|
return
|
|
to:@return
|
|
|
|
(void()) print_byte((byte) print_byte::b)
|
|
print_byte: scope:[print_byte] from print_word print_word::@1
|
|
(byte*) print_char_cursor#35 ← phi( print_word/(byte*) print_char_cursor#34 print_word::@1/(byte*) print_char_cursor#3 )
|
|
(byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
|
|
(byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (number) 4
|
|
(byte) print_char::ch#0 ← *((const byte*) print_hextab + (byte~) print_byte::$0)
|
|
call print_char
|
|
to:print_byte::@1
|
|
print_byte::@1: scope:[print_byte] from print_byte
|
|
(byte) print_byte::b#3 ← phi( print_byte/(byte) print_byte::b#2 )
|
|
(byte*) print_char_cursor#22 ← phi( print_byte/(byte*) print_char_cursor#10 )
|
|
(byte*) print_char_cursor#6 ← (byte*) print_char_cursor#22
|
|
(number~) print_byte::$2 ← (byte) print_byte::b#3 & (number) $f
|
|
(byte) print_char::ch#1 ← *((const byte*) print_hextab + (number~) print_byte::$2)
|
|
call print_char
|
|
to:print_byte::@2
|
|
print_byte::@2: scope:[print_byte] from print_byte::@1
|
|
(byte*) print_char_cursor#23 ← phi( print_byte::@1/(byte*) print_char_cursor#10 )
|
|
(byte*) print_char_cursor#7 ← (byte*) print_char_cursor#23
|
|
to:print_byte::@return
|
|
print_byte::@return: scope:[print_byte] from print_byte::@2
|
|
(byte*) print_char_cursor#24 ← phi( print_byte::@2/(byte*) print_char_cursor#7 )
|
|
(byte*) print_char_cursor#8 ← (byte*) print_char_cursor#24
|
|
return
|
|
to:@return
|
|
|
|
(void()) print_char((byte) print_char::ch)
|
|
print_char: scope:[print_char] from print_byte print_byte::@1
|
|
(byte*) print_char_cursor#25 ← phi( print_byte/(byte*) print_char_cursor#35 print_byte::@1/(byte*) print_char_cursor#6 )
|
|
(byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 )
|
|
*((byte*) print_char_cursor#25) ← (byte) print_char::ch#2
|
|
(byte*) print_char_cursor#9 ← ++ (byte*) print_char_cursor#25
|
|
to:print_char::@return
|
|
print_char::@return: scope:[print_char] from print_char
|
|
(byte*) print_char_cursor#26 ← phi( print_char/(byte*) print_char_cursor#9 )
|
|
(byte*) print_char_cursor#10 ← (byte*) print_char_cursor#26
|
|
return
|
|
to:@return
|
|
@43: scope:[] from @13
|
|
(byte*) print_line_cursor#24 ← phi( @13/(byte*) print_line_cursor#0 )
|
|
(byte*) print_char_cursor#42 ← phi( @13/(byte*) print_char_cursor#0 )
|
|
(word) last_time ← (word) 0
|
|
(word) Ticks#0 ← (word) 0
|
|
to:@45
|
|
|
|
(void()) start()
|
|
start: scope:[start] from end main::@8
|
|
asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 }
|
|
(word) rand_seed ← (number) $194a
|
|
to:start::@return
|
|
start::@return: scope:[start] from start
|
|
return
|
|
to:@return
|
|
|
|
(void()) end()
|
|
end: scope:[end] from main::@3
|
|
(byte*) print_line_cursor#23 ← phi( main::@3/(byte*) print_line_cursor#18 )
|
|
(byte*) print_char_cursor#39 ← phi( main::@3/(byte*) print_char_cursor#37 )
|
|
(word) Ticks#1 ← (word) last_time
|
|
call start
|
|
to:end::@1
|
|
end::@1: scope:[end] from end
|
|
(byte*) print_line_cursor#20 ← phi( end/(byte*) print_line_cursor#23 )
|
|
(byte*) print_char_cursor#36 ← phi( end/(byte*) print_char_cursor#39 )
|
|
(word) Ticks#7 ← phi( end/(word) Ticks#1 )
|
|
(word) last_time ← (word) last_time - (word) Ticks#7
|
|
(word) Ticks#2 ← (word) last_time
|
|
(word) print_word::w#0 ← (word) Ticks#2
|
|
call print_word
|
|
to:end::@2
|
|
end::@2: scope:[end] from end::@1
|
|
(word) Ticks#15 ← phi( end::@1/(word) Ticks#2 )
|
|
(byte*) print_line_cursor#17 ← phi( end::@1/(byte*) print_line_cursor#20 )
|
|
(byte*) print_char_cursor#27 ← phi( end::@1/(byte*) print_char_cursor#5 )
|
|
(byte*) print_char_cursor#11 ← (byte*) print_char_cursor#27
|
|
call print_ln
|
|
to:end::@3
|
|
end::@3: scope:[end] from end::@2
|
|
(word) Ticks#12 ← phi( end::@2/(word) Ticks#15 )
|
|
(byte*) print_char_cursor#28 ← phi( end::@2/(byte*) print_char_cursor#2 )
|
|
(byte*) print_line_cursor#11 ← phi( end::@2/(byte*) print_line_cursor#2 )
|
|
(byte*) print_line_cursor#3 ← (byte*) print_line_cursor#11
|
|
(byte*) print_char_cursor#12 ← (byte*) print_char_cursor#28
|
|
to:end::@return
|
|
end::@return: scope:[end] from end::@3
|
|
(byte*) print_line_cursor#12 ← phi( end::@3/(byte*) print_line_cursor#3 )
|
|
(byte*) print_char_cursor#29 ← phi( end::@3/(byte*) print_char_cursor#12 )
|
|
(word) Ticks#8 ← phi( end::@3/(word) Ticks#12 )
|
|
(word) Ticks#3 ← (word) Ticks#8
|
|
(byte*) print_char_cursor#13 ← (byte*) print_char_cursor#29
|
|
(byte*) print_line_cursor#4 ← (byte*) print_line_cursor#12
|
|
return
|
|
to:@return
|
|
@45: scope:[] from @43
|
|
(byte*) print_line_cursor#22 ← phi( @43/(byte*) print_line_cursor#24 )
|
|
(byte*) print_char_cursor#41 ← phi( @43/(byte*) print_char_cursor#42 )
|
|
(word) Ticks#17 ← phi( @43/(word) Ticks#0 )
|
|
(word) rand_seed ← (word) 0
|
|
to:@49
|
|
|
|
(byte()) rand()
|
|
rand: scope:[rand] from makechar::@8
|
|
asm { ldx#8 ldaRAND_SEED+0 __rand_loop: asl rolRAND_SEED+1 bcc__no_eor eor#$2D __no_eor: dex bne__rand_loop staRAND_SEED+0 }
|
|
(byte~) rand::$0 ← ((byte)) (word) rand_seed
|
|
(byte) rand::return#0 ← (byte~) rand::$0
|
|
to:rand::@return
|
|
rand::@return: scope:[rand] from rand
|
|
(byte) rand::return#3 ← phi( rand/(byte) rand::return#0 )
|
|
(byte) rand::return#1 ← (byte) rand::return#3
|
|
return
|
|
to:@return
|
|
|
|
(void()) doplasma((byte*) doplasma::scrn)
|
|
doplasma: scope:[doplasma] from main::@10 main::@2
|
|
(byte*) doplasma::scrn#13 ← phi( main::@10/(byte*) doplasma::scrn#2 main::@2/(byte*) doplasma::scrn#1 )
|
|
(byte) doplasma::c1a#0 ← (byte) 0
|
|
(byte) doplasma::c1b#0 ← (byte) 0
|
|
(byte) doplasma::c2a#0 ← (byte) 0
|
|
(byte) doplasma::c2b#0 ← (byte) 0
|
|
(byte) doplasma::c1A#0 ← (byte) 0
|
|
(byte) doplasma::c1B#0 ← (byte) 0
|
|
(byte) doplasma::c2A#0 ← (byte) 0
|
|
(byte) doplasma::c2B#0 ← (byte) 0
|
|
(byte) doplasma::i#0 ← (byte) 0
|
|
(byte) doplasma::ii#0 ← (byte) 0
|
|
(byte) doplasma::j#0 ← (byte) 0
|
|
(byte) doplasma::jj#0 ← (byte) 0
|
|
(byte) doplasma::c1a#1 ← (byte) doplasma::c1A#0
|
|
(byte) doplasma::c1b#1 ← (byte) doplasma::c1B#0
|
|
(byte) doplasma::ii#1 ← (number) 0
|
|
to:doplasma::@1
|
|
doplasma::@1: scope:[doplasma] from doplasma doplasma::@2
|
|
(byte*) doplasma::scrn#12 ← phi( doplasma/(byte*) doplasma::scrn#13 doplasma::@2/(byte*) doplasma::scrn#14 )
|
|
(byte) doplasma::c2B#4 ← phi( doplasma/(byte) doplasma::c2B#0 doplasma::@2/(byte) doplasma::c2B#6 )
|
|
(byte) doplasma::c2A#4 ← phi( doplasma/(byte) doplasma::c2A#0 doplasma::@2/(byte) doplasma::c2A#6 )
|
|
(byte) doplasma::c1B#3 ← phi( doplasma/(byte) doplasma::c1B#0 doplasma::@2/(byte) doplasma::c1B#4 )
|
|
(byte) doplasma::c1A#3 ← phi( doplasma/(byte) doplasma::c1A#0 doplasma::@2/(byte) doplasma::c1A#4 )
|
|
(byte) doplasma::c1b#4 ← phi( doplasma/(byte) doplasma::c1b#1 doplasma::@2/(byte) doplasma::c1b#2 )
|
|
(byte) doplasma::c1a#4 ← phi( doplasma/(byte) doplasma::c1a#1 doplasma::@2/(byte) doplasma::c1a#2 )
|
|
(byte) doplasma::ii#3 ← phi( doplasma/(byte) doplasma::ii#1 doplasma::@2/(byte) doplasma::ii#2 )
|
|
(bool~) doplasma::$0 ← (byte) doplasma::ii#3 < (number) $19
|
|
if((bool~) doplasma::$0) goto doplasma::@2
|
|
to:doplasma::@3
|
|
doplasma::@2: scope:[doplasma] from doplasma::@1
|
|
(byte*) doplasma::scrn#14 ← phi( doplasma::@1/(byte*) doplasma::scrn#12 )
|
|
(byte) doplasma::c2B#6 ← phi( doplasma::@1/(byte) doplasma::c2B#4 )
|
|
(byte) doplasma::c2A#6 ← phi( doplasma::@1/(byte) doplasma::c2A#4 )
|
|
(byte) doplasma::c1B#4 ← phi( doplasma::@1/(byte) doplasma::c1B#3 )
|
|
(byte) doplasma::c1A#4 ← phi( doplasma::@1/(byte) doplasma::c1A#3 )
|
|
(byte) doplasma::ii#4 ← phi( doplasma::@1/(byte) doplasma::ii#3 )
|
|
(byte) doplasma::c1b#3 ← phi( doplasma::@1/(byte) doplasma::c1b#4 )
|
|
(byte) doplasma::c1a#3 ← phi( doplasma::@1/(byte) doplasma::c1a#4 )
|
|
(byte~) doplasma::$1 ← *((const byte*) sinustable + (byte) doplasma::c1a#3) + *((const byte*) sinustable + (byte) doplasma::c1b#3)
|
|
*((const byte*) ybuf + (byte) doplasma::ii#4) ← (byte~) doplasma::$1
|
|
(byte) doplasma::c1a#2 ← (byte) doplasma::c1a#3 + (number) 4
|
|
(byte) doplasma::c1b#2 ← (byte) doplasma::c1b#3 + (number) 9
|
|
(byte) doplasma::ii#2 ← ++ (byte) doplasma::ii#4
|
|
to:doplasma::@1
|
|
doplasma::@3: scope:[doplasma] from doplasma::@1
|
|
(byte*) doplasma::scrn#10 ← phi( doplasma::@1/(byte*) doplasma::scrn#12 )
|
|
(byte) doplasma::c2B#2 ← phi( doplasma::@1/(byte) doplasma::c2B#4 )
|
|
(byte) doplasma::c2A#2 ← phi( doplasma::@1/(byte) doplasma::c2A#4 )
|
|
(byte) doplasma::c1B#2 ← phi( doplasma::@1/(byte) doplasma::c1B#3 )
|
|
(byte) doplasma::c1A#2 ← phi( doplasma::@1/(byte) doplasma::c1A#3 )
|
|
(byte) doplasma::c1A#1 ← (byte) doplasma::c1A#2 + (number) 3
|
|
(byte) doplasma::c1B#1 ← (byte) doplasma::c1B#2 - (number) 5
|
|
(byte) doplasma::c2a#1 ← (byte) doplasma::c2A#2
|
|
(byte) doplasma::c2b#1 ← (byte) doplasma::c2B#2
|
|
(byte) doplasma::i#1 ← (number) 0
|
|
to:doplasma::@7
|
|
doplasma::@7: scope:[doplasma] from doplasma::@3 doplasma::@8
|
|
(byte*) doplasma::scrn#9 ← phi( doplasma::@3/(byte*) doplasma::scrn#10 doplasma::@8/(byte*) doplasma::scrn#11 )
|
|
(byte) doplasma::c2B#5 ← phi( doplasma::@3/(byte) doplasma::c2B#2 doplasma::@8/(byte) doplasma::c2B#7 )
|
|
(byte) doplasma::c2A#5 ← phi( doplasma::@3/(byte) doplasma::c2A#2 doplasma::@8/(byte) doplasma::c2A#7 )
|
|
(byte) doplasma::c2b#4 ← phi( doplasma::@3/(byte) doplasma::c2b#1 doplasma::@8/(byte) doplasma::c2b#2 )
|
|
(byte) doplasma::c2a#4 ← phi( doplasma::@3/(byte) doplasma::c2a#1 doplasma::@8/(byte) doplasma::c2a#2 )
|
|
(byte) doplasma::i#3 ← phi( doplasma::@3/(byte) doplasma::i#1 doplasma::@8/(byte) doplasma::i#2 )
|
|
(bool~) doplasma::$2 ← (byte) doplasma::i#3 < (number) $28
|
|
if((bool~) doplasma::$2) goto doplasma::@8
|
|
to:doplasma::@9
|
|
doplasma::@8: scope:[doplasma] from doplasma::@7
|
|
(byte*) doplasma::scrn#11 ← phi( doplasma::@7/(byte*) doplasma::scrn#9 )
|
|
(byte) doplasma::c2B#7 ← phi( doplasma::@7/(byte) doplasma::c2B#5 )
|
|
(byte) doplasma::c2A#7 ← phi( doplasma::@7/(byte) doplasma::c2A#5 )
|
|
(byte) doplasma::i#4 ← phi( doplasma::@7/(byte) doplasma::i#3 )
|
|
(byte) doplasma::c2b#3 ← phi( doplasma::@7/(byte) doplasma::c2b#4 )
|
|
(byte) doplasma::c2a#3 ← phi( doplasma::@7/(byte) doplasma::c2a#4 )
|
|
(byte~) doplasma::$3 ← *((const byte*) sinustable + (byte) doplasma::c2a#3) + *((const byte*) sinustable + (byte) doplasma::c2b#3)
|
|
*((const byte*) xbuf + (byte) doplasma::i#4) ← (byte~) doplasma::$3
|
|
(byte) doplasma::c2a#2 ← (byte) doplasma::c2a#3 + (number) 3
|
|
(byte) doplasma::c2b#2 ← (byte) doplasma::c2b#3 + (number) 7
|
|
(byte) doplasma::i#2 ← ++ (byte) doplasma::i#4
|
|
to:doplasma::@7
|
|
doplasma::@9: scope:[doplasma] from doplasma::@7
|
|
(byte*) doplasma::scrn#8 ← phi( doplasma::@7/(byte*) doplasma::scrn#9 )
|
|
(byte) doplasma::c2B#3 ← phi( doplasma::@7/(byte) doplasma::c2B#5 )
|
|
(byte) doplasma::c2A#3 ← phi( doplasma::@7/(byte) doplasma::c2A#5 )
|
|
(byte) doplasma::c2A#1 ← (byte) doplasma::c2A#3 + (number) 2
|
|
(byte) doplasma::c2B#1 ← (byte) doplasma::c2B#3 - (number) 3
|
|
(byte) doplasma::jj#1 ← (number) 0
|
|
to:doplasma::@13
|
|
doplasma::@13: scope:[doplasma] from doplasma::@18 doplasma::@9
|
|
(byte*) doplasma::scrn#7 ← phi( doplasma::@18/(byte*) doplasma::scrn#0 doplasma::@9/(byte*) doplasma::scrn#8 )
|
|
(byte) doplasma::jj#3 ← phi( doplasma::@18/(byte) doplasma::jj#2 doplasma::@9/(byte) doplasma::jj#1 )
|
|
(bool~) doplasma::$4 ← (byte) doplasma::jj#3 < (number) $19
|
|
if((bool~) doplasma::$4) goto doplasma::@14
|
|
to:doplasma::@return
|
|
doplasma::@14: scope:[doplasma] from doplasma::@13
|
|
(byte*) doplasma::scrn#6 ← phi( doplasma::@13/(byte*) doplasma::scrn#7 )
|
|
(byte) doplasma::jj#7 ← phi( doplasma::@13/(byte) doplasma::jj#3 )
|
|
(byte) doplasma::j#1 ← (number) 0
|
|
to:doplasma::@16
|
|
doplasma::@16: scope:[doplasma] from doplasma::@14 doplasma::@17
|
|
(byte*) doplasma::scrn#5 ← phi( doplasma::@14/(byte*) doplasma::scrn#6 doplasma::@17/(byte*) doplasma::scrn#3 )
|
|
(byte) doplasma::jj#6 ← phi( doplasma::@14/(byte) doplasma::jj#7 doplasma::@17/(byte) doplasma::jj#4 )
|
|
(byte) doplasma::j#3 ← phi( doplasma::@14/(byte) doplasma::j#1 doplasma::@17/(byte) doplasma::j#2 )
|
|
(bool~) doplasma::$5 ← (byte) doplasma::j#3 < (number) $28
|
|
if((bool~) doplasma::$5) goto doplasma::@17
|
|
to:doplasma::@18
|
|
doplasma::@17: scope:[doplasma] from doplasma::@16
|
|
(byte*) doplasma::scrn#3 ← phi( doplasma::@16/(byte*) doplasma::scrn#5 )
|
|
(byte) doplasma::jj#4 ← phi( doplasma::@16/(byte) doplasma::jj#6 )
|
|
(byte) doplasma::j#4 ← phi( doplasma::@16/(byte) doplasma::j#3 )
|
|
(byte~) doplasma::$6 ← *((const byte*) xbuf + (byte) doplasma::j#4) + *((const byte*) ybuf + (byte) doplasma::jj#4)
|
|
*((byte*) doplasma::scrn#3 + (byte) doplasma::j#4) ← (byte~) doplasma::$6
|
|
(byte) doplasma::j#2 ← ++ (byte) doplasma::j#4
|
|
to:doplasma::@16
|
|
doplasma::@18: scope:[doplasma] from doplasma::@16
|
|
(byte) doplasma::jj#5 ← phi( doplasma::@16/(byte) doplasma::jj#6 )
|
|
(byte*) doplasma::scrn#4 ← phi( doplasma::@16/(byte*) doplasma::scrn#5 )
|
|
(byte*) doplasma::scrn#0 ← (byte*) doplasma::scrn#4 + (number) $28
|
|
(byte) doplasma::jj#2 ← ++ (byte) doplasma::jj#5
|
|
to:doplasma::@13
|
|
doplasma::@return: scope:[doplasma] from doplasma::@13
|
|
return
|
|
to:@return
|
|
|
|
(void()) makechar()
|
|
makechar: scope:[makechar] from main
|
|
(byte) makechar::i#0 ← (byte) 0
|
|
(byte) makechar::ii#0 ← (byte) 0
|
|
(byte) makechar::b#0 ← (byte) 0
|
|
(byte) makechar::s#0 ← (byte) 0
|
|
(word) makechar::c#0 ← (word) 0
|
|
(word) makechar::c#1 ← (number) 0
|
|
to:makechar::@1
|
|
makechar::@1: scope:[makechar] from makechar makechar::@6
|
|
(word) makechar::c#3 ← phi( makechar/(word) makechar::c#1 makechar::@6/(word) makechar::c#2 )
|
|
(bool~) makechar::$0 ← (word) makechar::c#3 < (number) $100
|
|
if((bool~) makechar::$0) goto makechar::@2
|
|
to:makechar::@return
|
|
makechar::@2: scope:[makechar] from makechar::@1
|
|
(word) makechar::c#4 ← phi( makechar::@1/(word) makechar::c#3 )
|
|
(byte~) makechar::$1 ← ((byte)) (word) makechar::c#4
|
|
(byte) makechar::s#1 ← *((const byte*) sinustable + (byte~) makechar::$1)
|
|
(byte) makechar::i#1 ← (number) 0
|
|
to:makechar::@4
|
|
makechar::@4: scope:[makechar] from makechar::@2 makechar::@9
|
|
(byte) makechar::s#7 ← phi( makechar::@2/(byte) makechar::s#1 makechar::@9/(byte) makechar::s#9 )
|
|
(word) makechar::c#7 ← phi( makechar::@2/(word) makechar::c#4 makechar::@9/(word) makechar::c#6 )
|
|
(byte) makechar::i#3 ← phi( makechar::@2/(byte) makechar::i#1 makechar::@9/(byte) makechar::i#2 )
|
|
(bool~) makechar::$2 ← (byte) makechar::i#3 < (number) 8
|
|
if((bool~) makechar::$2) goto makechar::@5
|
|
to:makechar::@6
|
|
makechar::@5: scope:[makechar] from makechar::@4
|
|
(byte) makechar::s#6 ← phi( makechar::@4/(byte) makechar::s#7 )
|
|
(byte) makechar::i#7 ← phi( makechar::@4/(byte) makechar::i#3 )
|
|
(word) makechar::c#10 ← phi( makechar::@4/(word) makechar::c#7 )
|
|
(byte) makechar::b#1 ← (number) 0
|
|
(byte) makechar::ii#1 ← (number) 0
|
|
to:makechar::@7
|
|
makechar::@6: scope:[makechar] from makechar::@4
|
|
(word) makechar::c#5 ← phi( makechar::@4/(word) makechar::c#7 )
|
|
(word) makechar::c#2 ← ++ (word) makechar::c#5
|
|
to:makechar::@1
|
|
makechar::@7: scope:[makechar] from makechar::@10 makechar::@5
|
|
(byte) makechar::s#4 ← phi( makechar::@10/(byte) makechar::s#5 makechar::@5/(byte) makechar::s#6 )
|
|
(byte) makechar::b#5 ← phi( makechar::@10/(byte) makechar::b#7 makechar::@5/(byte) makechar::b#1 )
|
|
(byte) makechar::i#5 ← phi( makechar::@10/(byte) makechar::i#6 makechar::@5/(byte) makechar::i#7 )
|
|
(word) makechar::c#8 ← phi( makechar::@10/(word) makechar::c#9 makechar::@5/(word) makechar::c#10 )
|
|
(byte) makechar::ii#3 ← phi( makechar::@10/(byte) makechar::ii#2 makechar::@5/(byte) makechar::ii#1 )
|
|
(bool~) makechar::$3 ← (byte) makechar::ii#3 < (number) 8
|
|
if((bool~) makechar::$3) goto makechar::@8
|
|
to:makechar::@9
|
|
makechar::@8: scope:[makechar] from makechar::@7
|
|
(byte) makechar::i#10 ← phi( makechar::@7/(byte) makechar::i#5 )
|
|
(word) makechar::c#13 ← phi( makechar::@7/(word) makechar::c#8 )
|
|
(byte) makechar::b#8 ← phi( makechar::@7/(byte) makechar::b#5 )
|
|
(byte) makechar::ii#7 ← phi( makechar::@7/(byte) makechar::ii#3 )
|
|
(byte) makechar::s#3 ← phi( makechar::@7/(byte) makechar::s#4 )
|
|
call rand
|
|
(byte) rand::return#2 ← (byte) rand::return#1
|
|
to:makechar::@21
|
|
makechar::@21: scope:[makechar] from makechar::@8
|
|
(byte) makechar::i#9 ← phi( makechar::@8/(byte) makechar::i#10 )
|
|
(word) makechar::c#12 ← phi( makechar::@8/(word) makechar::c#13 )
|
|
(byte) makechar::b#6 ← phi( makechar::@8/(byte) makechar::b#8 )
|
|
(byte) makechar::ii#6 ← phi( makechar::@8/(byte) makechar::ii#7 )
|
|
(byte) makechar::s#2 ← phi( makechar::@8/(byte) makechar::s#3 )
|
|
(byte) rand::return#4 ← phi( makechar::@8/(byte) rand::return#2 )
|
|
(byte~) makechar::$4 ← (byte) rand::return#4
|
|
(number~) makechar::$5 ← (byte~) makechar::$4 & (number) $ff
|
|
(bool~) makechar::$6 ← (number~) makechar::$5 > (byte) makechar::s#2
|
|
(bool~) makechar::$7 ← ! (bool~) makechar::$6
|
|
if((bool~) makechar::$7) goto makechar::@10
|
|
to:makechar::@13
|
|
makechar::@9: scope:[makechar] from makechar::@7
|
|
(byte) makechar::s#9 ← phi( makechar::@7/(byte) makechar::s#4 )
|
|
(byte) makechar::b#3 ← phi( makechar::@7/(byte) makechar::b#5 )
|
|
(byte) makechar::i#4 ← phi( makechar::@7/(byte) makechar::i#5 )
|
|
(word) makechar::c#6 ← phi( makechar::@7/(word) makechar::c#8 )
|
|
(word~) makechar::$8 ← (word) makechar::c#6 << (number) 3
|
|
(word~) makechar::$9 ← (word~) makechar::$8 + (byte) makechar::i#4
|
|
*((byte*)(const byte*) CHARSET + (word~) makechar::$9) ← (byte) makechar::b#3
|
|
(byte) makechar::i#2 ← ++ (byte) makechar::i#4
|
|
to:makechar::@4
|
|
makechar::@10: scope:[makechar] from makechar::@13 makechar::@21
|
|
(byte) makechar::s#5 ← phi( makechar::@13/(byte) makechar::s#8 makechar::@21/(byte) makechar::s#2 )
|
|
(byte) makechar::b#7 ← phi( makechar::@13/(byte) makechar::b#2 makechar::@21/(byte) makechar::b#6 )
|
|
(byte) makechar::i#6 ← phi( makechar::@13/(byte) makechar::i#8 makechar::@21/(byte) makechar::i#9 )
|
|
(word) makechar::c#9 ← phi( makechar::@13/(word) makechar::c#11 makechar::@21/(word) makechar::c#12 )
|
|
(byte) makechar::ii#4 ← phi( makechar::@13/(byte) makechar::ii#5 makechar::@21/(byte) makechar::ii#6 )
|
|
(byte) makechar::ii#2 ← ++ (byte) makechar::ii#4
|
|
to:makechar::@7
|
|
makechar::@13: scope:[makechar] from makechar::@21
|
|
(byte) makechar::s#8 ← phi( makechar::@21/(byte) makechar::s#2 )
|
|
(byte) makechar::i#8 ← phi( makechar::@21/(byte) makechar::i#9 )
|
|
(word) makechar::c#11 ← phi( makechar::@21/(word) makechar::c#12 )
|
|
(byte) makechar::ii#5 ← phi( makechar::@21/(byte) makechar::ii#6 )
|
|
(byte) makechar::b#4 ← phi( makechar::@21/(byte) makechar::b#6 )
|
|
(byte) makechar::b#2 ← (byte) makechar::b#4 | *((const byte*) bittab + (byte) makechar::ii#5)
|
|
to:makechar::@10
|
|
makechar::@return: scope:[makechar] from makechar::@1
|
|
return
|
|
to:@return
|
|
|
|
(signed word()) main()
|
|
main: scope:[main] from @49
|
|
(byte*) print_line_cursor#29 ← phi( @49/(byte*) print_line_cursor#19 )
|
|
(byte*) print_char_cursor#47 ← phi( @49/(byte*) print_char_cursor#38 )
|
|
(word) Ticks#22 ← phi( @49/(word) Ticks#14 )
|
|
(byte) main::v#0 ← (byte) 0
|
|
(byte) main::block#0 ← (byte) 0
|
|
(word) main::count#0 ← (word) $1f4
|
|
(word) rand_seed ← (number) $194a
|
|
call makechar
|
|
to:main::@8
|
|
main::@8: scope:[main] from main
|
|
(byte*) print_line_cursor#27 ← phi( main/(byte*) print_line_cursor#29 )
|
|
(byte*) print_char_cursor#45 ← phi( main/(byte*) print_char_cursor#47 )
|
|
(word) Ticks#20 ← phi( main/(word) Ticks#22 )
|
|
(word) main::count#6 ← phi( main/(word) main::count#0 )
|
|
call start
|
|
to:main::@9
|
|
main::@9: scope:[main] from main::@8
|
|
(byte*) print_line_cursor#26 ← phi( main::@8/(byte*) print_line_cursor#27 )
|
|
(byte*) print_char_cursor#44 ← phi( main::@8/(byte*) print_char_cursor#45 )
|
|
(word) Ticks#19 ← phi( main::@8/(word) Ticks#20 )
|
|
(word) main::count#4 ← phi( main::@8/(word) main::count#6 )
|
|
(byte) main::block#1 ← *((const byte*) CIA2_PORT_A)
|
|
(byte) main::tmp#0 ← (byte) 0
|
|
(number~) main::$2 ← (byte) main::block#1 & (number) $fc
|
|
(byte) main::tmp#1 ← (number~) main::$2
|
|
(byte) main::tmp#2 ← (byte) main::tmp#1 | (byte)(word)(const byte*) SCREEN1>>(number) $e^(number) 3
|
|
*((const byte*) CIA2_PORT_A) ← (byte) main::tmp#2
|
|
(byte) main::v#1 ← *((const byte*) VIC_MEMORY)
|
|
to:main::@1
|
|
main::@1: scope:[main] from main::@11 main::@9
|
|
(byte*) print_line_cursor#21 ← phi( main::@11/(byte*) print_line_cursor#25 main::@9/(byte*) print_line_cursor#26 )
|
|
(byte*) print_char_cursor#40 ← phi( main::@11/(byte*) print_char_cursor#43 main::@9/(byte*) print_char_cursor#44 )
|
|
(word) Ticks#16 ← phi( main::@11/(word) Ticks#18 main::@9/(word) Ticks#19 )
|
|
(byte) main::block#3 ← phi( main::@11/(byte) main::block#4 main::@9/(byte) main::block#1 )
|
|
(byte) main::v#3 ← phi( main::@11/(byte) main::v#4 main::@9/(byte) main::v#1 )
|
|
(word) main::count#2 ← phi( main::@11/(word) main::count#1 main::@9/(word) main::count#4 )
|
|
(bool~) main::$6 ← (number) 0 != (word) main::count#2
|
|
if((bool~) main::$6) goto main::@2
|
|
to:main::@3
|
|
main::@2: scope:[main] from main::@1
|
|
(byte*) print_line_cursor#30 ← phi( main::@1/(byte*) print_line_cursor#21 )
|
|
(byte*) print_char_cursor#48 ← phi( main::@1/(byte*) print_char_cursor#40 )
|
|
(word) Ticks#23 ← phi( main::@1/(word) Ticks#16 )
|
|
(byte) main::block#6 ← phi( main::@1/(byte) main::block#3 )
|
|
(byte) main::v#6 ← phi( main::@1/(byte) main::v#3 )
|
|
(word) main::count#7 ← phi( main::@1/(word) main::count#2 )
|
|
(byte*) doplasma::scrn#1 ← (byte*)(const byte*) SCREEN1
|
|
call doplasma
|
|
to:main::@10
|
|
main::@10: scope:[main] from main::@2
|
|
(byte*) print_line_cursor#28 ← phi( main::@2/(byte*) print_line_cursor#30 )
|
|
(byte*) print_char_cursor#46 ← phi( main::@2/(byte*) print_char_cursor#48 )
|
|
(word) Ticks#21 ← phi( main::@2/(word) Ticks#23 )
|
|
(byte) main::block#5 ← phi( main::@2/(byte) main::block#6 )
|
|
(byte) main::v#5 ← phi( main::@2/(byte) main::v#6 )
|
|
(word) main::count#5 ← phi( main::@2/(word) main::count#7 )
|
|
*((const byte*) VIC_MEMORY) ← (const byte) PAGE1
|
|
(byte*) doplasma::scrn#2 ← (byte*)(const byte*) SCREEN2
|
|
call doplasma
|
|
to:main::@11
|
|
main::@11: scope:[main] from main::@10
|
|
(byte*) print_line_cursor#25 ← phi( main::@10/(byte*) print_line_cursor#28 )
|
|
(byte*) print_char_cursor#43 ← phi( main::@10/(byte*) print_char_cursor#46 )
|
|
(word) Ticks#18 ← phi( main::@10/(word) Ticks#21 )
|
|
(byte) main::block#4 ← phi( main::@10/(byte) main::block#5 )
|
|
(byte) main::v#4 ← phi( main::@10/(byte) main::v#5 )
|
|
(word) main::count#3 ← phi( main::@10/(word) main::count#5 )
|
|
*((const byte*) VIC_MEMORY) ← (const byte) PAGE2
|
|
(word) main::count#1 ← -- (word) main::count#3
|
|
to:main::@1
|
|
main::@3: scope:[main] from main::@1
|
|
(byte*) print_line_cursor#18 ← phi( main::@1/(byte*) print_line_cursor#21 )
|
|
(byte*) print_char_cursor#37 ← phi( main::@1/(byte*) print_char_cursor#40 )
|
|
(word) Ticks#13 ← phi( main::@1/(word) Ticks#16 )
|
|
(byte) main::block#2 ← phi( main::@1/(byte) main::block#3 )
|
|
(byte) main::v#2 ← phi( main::@1/(byte) main::v#3 )
|
|
*((const byte*) VIC_MEMORY) ← (byte) main::v#2
|
|
*((const byte*) CIA2_PORT_A) ← (byte) main::block#2
|
|
call end
|
|
to:main::@12
|
|
main::@12: scope:[main] from main::@3
|
|
(byte*) print_line_cursor#13 ← phi( main::@3/(byte*) print_line_cursor#4 )
|
|
(byte*) print_char_cursor#30 ← phi( main::@3/(byte*) print_char_cursor#13 )
|
|
(word) Ticks#9 ← phi( main::@3/(word) Ticks#3 )
|
|
(word) Ticks#4 ← (word) Ticks#9
|
|
(byte*) print_char_cursor#14 ← (byte*) print_char_cursor#30
|
|
(byte*) print_line_cursor#5 ← (byte*) print_line_cursor#13
|
|
(signed word) main::return#0 ← (number) 0
|
|
to:main::@return
|
|
main::@return: scope:[main] from main::@12
|
|
(byte*) print_line_cursor#14 ← phi( main::@12/(byte*) print_line_cursor#5 )
|
|
(byte*) print_char_cursor#31 ← phi( main::@12/(byte*) print_char_cursor#14 )
|
|
(word) Ticks#10 ← phi( main::@12/(word) Ticks#4 )
|
|
(signed word) main::return#3 ← phi( main::@12/(signed word) main::return#0 )
|
|
(signed word) main::return#1 ← (signed word) main::return#3
|
|
(word) Ticks#5 ← (word) Ticks#10
|
|
(byte*) print_char_cursor#15 ← (byte*) print_char_cursor#31
|
|
(byte*) print_line_cursor#6 ← (byte*) print_line_cursor#14
|
|
return
|
|
to:@return
|
|
@49: scope:[] from @45
|
|
(byte*) print_line_cursor#19 ← phi( @45/(byte*) print_line_cursor#22 )
|
|
(byte*) print_char_cursor#38 ← phi( @45/(byte*) print_char_cursor#41 )
|
|
(word) Ticks#14 ← phi( @45/(word) Ticks#17 )
|
|
call main
|
|
(signed word) main::return#2 ← (signed word) main::return#1
|
|
to:@50
|
|
@50: scope:[] from @49
|
|
(byte*) print_line_cursor#15 ← phi( @49/(byte*) print_line_cursor#6 )
|
|
(byte*) print_char_cursor#32 ← phi( @49/(byte*) print_char_cursor#15 )
|
|
(word) Ticks#11 ← phi( @49/(word) Ticks#5 )
|
|
(word) Ticks#6 ← (word) Ticks#11
|
|
(byte*) print_char_cursor#16 ← (byte*) print_char_cursor#32
|
|
(byte*) print_line_cursor#7 ← (byte*) print_line_cursor#15
|
|
to:@end
|
|
@end: scope:[] from @50
|
|
|
|
SYMBOL TABLE SSA
|
|
(label) @13
|
|
(label) @43
|
|
(label) @45
|
|
(label) @49
|
|
(label) @50
|
|
(label) @begin
|
|
(label) @end
|
|
(const byte*) CHARSET = (byte*)(number) $e800
|
|
(const byte*) CIA2_PORT_A = (byte*)(number) $dd00
|
|
(const byte) PAGE1 = (byte)(word)(const byte*) SCREEN1>>(number) 6&(number) $f0|(word)(const byte*) CHARSET>>(number) $a&(number) $e
|
|
(const byte) PAGE2 = (byte)(word)(const byte*) SCREEN2>>(number) 6&(number) $f0|(word)(const byte*) CHARSET>>(number) $a&(number) $e
|
|
(const byte) RADIX::BINARY = (number) 2
|
|
(const byte) RADIX::DECIMAL = (number) $a
|
|
(const byte) RADIX::HEXADECIMAL = (number) $10
|
|
(const byte) RADIX::OCTAL = (number) 8
|
|
(const byte*) SCREEN1 = (byte*)(number) $e000
|
|
(const byte*) SCREEN2 = (byte*)(number) $e400
|
|
(word) Ticks
|
|
(word) Ticks#0
|
|
(word) Ticks#1
|
|
(word) Ticks#10
|
|
(word) Ticks#11
|
|
(word) Ticks#12
|
|
(word) Ticks#13
|
|
(word) Ticks#14
|
|
(word) Ticks#15
|
|
(word) Ticks#16
|
|
(word) Ticks#17
|
|
(word) Ticks#18
|
|
(word) Ticks#19
|
|
(word) Ticks#2
|
|
(word) Ticks#20
|
|
(word) Ticks#21
|
|
(word) Ticks#22
|
|
(word) Ticks#23
|
|
(word) Ticks#3
|
|
(word) Ticks#4
|
|
(word) Ticks#5
|
|
(word) Ticks#6
|
|
(word) Ticks#7
|
|
(word) Ticks#8
|
|
(word) Ticks#9
|
|
(const byte*) VIC_MEMORY = (byte*)(number) $d018
|
|
(const byte*) bittab[] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
|
|
(void()) doplasma((byte*) doplasma::scrn)
|
|
(bool~) doplasma::$0
|
|
(byte~) doplasma::$1
|
|
(bool~) doplasma::$2
|
|
(byte~) doplasma::$3
|
|
(bool~) doplasma::$4
|
|
(bool~) doplasma::$5
|
|
(byte~) doplasma::$6
|
|
(label) doplasma::@1
|
|
(label) doplasma::@13
|
|
(label) doplasma::@14
|
|
(label) doplasma::@16
|
|
(label) doplasma::@17
|
|
(label) doplasma::@18
|
|
(label) doplasma::@2
|
|
(label) doplasma::@3
|
|
(label) doplasma::@7
|
|
(label) doplasma::@8
|
|
(label) doplasma::@9
|
|
(label) doplasma::@return
|
|
(byte) doplasma::c1A
|
|
(byte) doplasma::c1A#0
|
|
(byte) doplasma::c1A#1
|
|
(byte) doplasma::c1A#2
|
|
(byte) doplasma::c1A#3
|
|
(byte) doplasma::c1A#4
|
|
(byte) doplasma::c1B
|
|
(byte) doplasma::c1B#0
|
|
(byte) doplasma::c1B#1
|
|
(byte) doplasma::c1B#2
|
|
(byte) doplasma::c1B#3
|
|
(byte) doplasma::c1B#4
|
|
(byte) doplasma::c1a
|
|
(byte) doplasma::c1a#0
|
|
(byte) doplasma::c1a#1
|
|
(byte) doplasma::c1a#2
|
|
(byte) doplasma::c1a#3
|
|
(byte) doplasma::c1a#4
|
|
(byte) doplasma::c1b
|
|
(byte) doplasma::c1b#0
|
|
(byte) doplasma::c1b#1
|
|
(byte) doplasma::c1b#2
|
|
(byte) doplasma::c1b#3
|
|
(byte) doplasma::c1b#4
|
|
(byte) doplasma::c2A
|
|
(byte) doplasma::c2A#0
|
|
(byte) doplasma::c2A#1
|
|
(byte) doplasma::c2A#2
|
|
(byte) doplasma::c2A#3
|
|
(byte) doplasma::c2A#4
|
|
(byte) doplasma::c2A#5
|
|
(byte) doplasma::c2A#6
|
|
(byte) doplasma::c2A#7
|
|
(byte) doplasma::c2B
|
|
(byte) doplasma::c2B#0
|
|
(byte) doplasma::c2B#1
|
|
(byte) doplasma::c2B#2
|
|
(byte) doplasma::c2B#3
|
|
(byte) doplasma::c2B#4
|
|
(byte) doplasma::c2B#5
|
|
(byte) doplasma::c2B#6
|
|
(byte) doplasma::c2B#7
|
|
(byte) doplasma::c2a
|
|
(byte) doplasma::c2a#0
|
|
(byte) doplasma::c2a#1
|
|
(byte) doplasma::c2a#2
|
|
(byte) doplasma::c2a#3
|
|
(byte) doplasma::c2a#4
|
|
(byte) doplasma::c2b
|
|
(byte) doplasma::c2b#0
|
|
(byte) doplasma::c2b#1
|
|
(byte) doplasma::c2b#2
|
|
(byte) doplasma::c2b#3
|
|
(byte) doplasma::c2b#4
|
|
(byte) doplasma::i
|
|
(byte) doplasma::i#0
|
|
(byte) doplasma::i#1
|
|
(byte) doplasma::i#2
|
|
(byte) doplasma::i#3
|
|
(byte) doplasma::i#4
|
|
(byte) doplasma::ii
|
|
(byte) doplasma::ii#0
|
|
(byte) doplasma::ii#1
|
|
(byte) doplasma::ii#2
|
|
(byte) doplasma::ii#3
|
|
(byte) doplasma::ii#4
|
|
(byte) doplasma::j
|
|
(byte) doplasma::j#0
|
|
(byte) doplasma::j#1
|
|
(byte) doplasma::j#2
|
|
(byte) doplasma::j#3
|
|
(byte) doplasma::j#4
|
|
(byte) doplasma::jj
|
|
(byte) doplasma::jj#0
|
|
(byte) doplasma::jj#1
|
|
(byte) doplasma::jj#2
|
|
(byte) doplasma::jj#3
|
|
(byte) doplasma::jj#4
|
|
(byte) doplasma::jj#5
|
|
(byte) doplasma::jj#6
|
|
(byte) doplasma::jj#7
|
|
(byte*) doplasma::scrn
|
|
(byte*) doplasma::scrn#0
|
|
(byte*) doplasma::scrn#1
|
|
(byte*) doplasma::scrn#10
|
|
(byte*) doplasma::scrn#11
|
|
(byte*) doplasma::scrn#12
|
|
(byte*) doplasma::scrn#13
|
|
(byte*) doplasma::scrn#14
|
|
(byte*) doplasma::scrn#2
|
|
(byte*) doplasma::scrn#3
|
|
(byte*) doplasma::scrn#4
|
|
(byte*) doplasma::scrn#5
|
|
(byte*) doplasma::scrn#6
|
|
(byte*) doplasma::scrn#7
|
|
(byte*) doplasma::scrn#8
|
|
(byte*) doplasma::scrn#9
|
|
(void()) end()
|
|
(label) end::@1
|
|
(label) end::@2
|
|
(label) end::@3
|
|
(label) end::@return
|
|
(word) last_time loadstore
|
|
(signed word()) main()
|
|
(number~) main::$2
|
|
(bool~) main::$6
|
|
(label) main::@1
|
|
(label) main::@10
|
|
(label) main::@11
|
|
(label) main::@12
|
|
(label) main::@2
|
|
(label) main::@3
|
|
(label) main::@8
|
|
(label) main::@9
|
|
(label) main::@return
|
|
(byte) main::block
|
|
(byte) main::block#0
|
|
(byte) main::block#1
|
|
(byte) main::block#2
|
|
(byte) main::block#3
|
|
(byte) main::block#4
|
|
(byte) main::block#5
|
|
(byte) main::block#6
|
|
(word) main::count
|
|
(word) main::count#0
|
|
(word) main::count#1
|
|
(word) main::count#2
|
|
(word) main::count#3
|
|
(word) main::count#4
|
|
(word) main::count#5
|
|
(word) main::count#6
|
|
(word) main::count#7
|
|
(signed word) main::return
|
|
(signed word) main::return#0
|
|
(signed word) main::return#1
|
|
(signed word) main::return#2
|
|
(signed word) main::return#3
|
|
(byte) main::tmp
|
|
(byte) main::tmp#0
|
|
(byte) main::tmp#1
|
|
(byte) main::tmp#2
|
|
(byte) main::v
|
|
(byte) main::v#0
|
|
(byte) main::v#1
|
|
(byte) main::v#2
|
|
(byte) main::v#3
|
|
(byte) main::v#4
|
|
(byte) main::v#5
|
|
(byte) main::v#6
|
|
(void()) makechar()
|
|
(bool~) makechar::$0
|
|
(byte~) makechar::$1
|
|
(bool~) makechar::$2
|
|
(bool~) makechar::$3
|
|
(byte~) makechar::$4
|
|
(number~) makechar::$5
|
|
(bool~) makechar::$6
|
|
(bool~) makechar::$7
|
|
(word~) makechar::$8
|
|
(word~) makechar::$9
|
|
(label) makechar::@1
|
|
(label) makechar::@10
|
|
(label) makechar::@13
|
|
(label) makechar::@2
|
|
(label) makechar::@21
|
|
(label) makechar::@4
|
|
(label) makechar::@5
|
|
(label) makechar::@6
|
|
(label) makechar::@7
|
|
(label) makechar::@8
|
|
(label) makechar::@9
|
|
(label) makechar::@return
|
|
(byte) makechar::b
|
|
(byte) makechar::b#0
|
|
(byte) makechar::b#1
|
|
(byte) makechar::b#2
|
|
(byte) makechar::b#3
|
|
(byte) makechar::b#4
|
|
(byte) makechar::b#5
|
|
(byte) makechar::b#6
|
|
(byte) makechar::b#7
|
|
(byte) makechar::b#8
|
|
(word) makechar::c
|
|
(word) makechar::c#0
|
|
(word) makechar::c#1
|
|
(word) makechar::c#10
|
|
(word) makechar::c#11
|
|
(word) makechar::c#12
|
|
(word) makechar::c#13
|
|
(word) makechar::c#2
|
|
(word) makechar::c#3
|
|
(word) makechar::c#4
|
|
(word) makechar::c#5
|
|
(word) makechar::c#6
|
|
(word) makechar::c#7
|
|
(word) makechar::c#8
|
|
(word) makechar::c#9
|
|
(byte) makechar::i
|
|
(byte) makechar::i#0
|
|
(byte) makechar::i#1
|
|
(byte) makechar::i#10
|
|
(byte) makechar::i#2
|
|
(byte) makechar::i#3
|
|
(byte) makechar::i#4
|
|
(byte) makechar::i#5
|
|
(byte) makechar::i#6
|
|
(byte) makechar::i#7
|
|
(byte) makechar::i#8
|
|
(byte) makechar::i#9
|
|
(byte) makechar::ii
|
|
(byte) makechar::ii#0
|
|
(byte) makechar::ii#1
|
|
(byte) makechar::ii#2
|
|
(byte) makechar::ii#3
|
|
(byte) makechar::ii#4
|
|
(byte) makechar::ii#5
|
|
(byte) makechar::ii#6
|
|
(byte) makechar::ii#7
|
|
(byte) makechar::s
|
|
(byte) makechar::s#0
|
|
(byte) makechar::s#1
|
|
(byte) makechar::s#2
|
|
(byte) makechar::s#3
|
|
(byte) makechar::s#4
|
|
(byte) makechar::s#5
|
|
(byte) makechar::s#6
|
|
(byte) makechar::s#7
|
|
(byte) makechar::s#8
|
|
(byte) makechar::s#9
|
|
(void()) print_byte((byte) print_byte::b)
|
|
(byte~) print_byte::$0
|
|
(number~) print_byte::$2
|
|
(label) print_byte::@1
|
|
(label) print_byte::@2
|
|
(label) print_byte::@return
|
|
(byte) print_byte::b
|
|
(byte) print_byte::b#0
|
|
(byte) print_byte::b#1
|
|
(byte) print_byte::b#2
|
|
(byte) print_byte::b#3
|
|
(void()) print_char((byte) print_char::ch)
|
|
(label) print_char::@return
|
|
(byte) print_char::ch
|
|
(byte) print_char::ch#0
|
|
(byte) print_char::ch#1
|
|
(byte) print_char::ch#2
|
|
(byte*) print_char_cursor
|
|
(byte*) print_char_cursor#0
|
|
(byte*) print_char_cursor#1
|
|
(byte*) print_char_cursor#10
|
|
(byte*) print_char_cursor#11
|
|
(byte*) print_char_cursor#12
|
|
(byte*) print_char_cursor#13
|
|
(byte*) print_char_cursor#14
|
|
(byte*) print_char_cursor#15
|
|
(byte*) print_char_cursor#16
|
|
(byte*) print_char_cursor#17
|
|
(byte*) print_char_cursor#18
|
|
(byte*) print_char_cursor#19
|
|
(byte*) print_char_cursor#2
|
|
(byte*) print_char_cursor#20
|
|
(byte*) print_char_cursor#21
|
|
(byte*) print_char_cursor#22
|
|
(byte*) print_char_cursor#23
|
|
(byte*) print_char_cursor#24
|
|
(byte*) print_char_cursor#25
|
|
(byte*) print_char_cursor#26
|
|
(byte*) print_char_cursor#27
|
|
(byte*) print_char_cursor#28
|
|
(byte*) print_char_cursor#29
|
|
(byte*) print_char_cursor#3
|
|
(byte*) print_char_cursor#30
|
|
(byte*) print_char_cursor#31
|
|
(byte*) print_char_cursor#32
|
|
(byte*) print_char_cursor#33
|
|
(byte*) print_char_cursor#34
|
|
(byte*) print_char_cursor#35
|
|
(byte*) print_char_cursor#36
|
|
(byte*) print_char_cursor#37
|
|
(byte*) print_char_cursor#38
|
|
(byte*) print_char_cursor#39
|
|
(byte*) print_char_cursor#4
|
|
(byte*) print_char_cursor#40
|
|
(byte*) print_char_cursor#41
|
|
(byte*) print_char_cursor#42
|
|
(byte*) print_char_cursor#43
|
|
(byte*) print_char_cursor#44
|
|
(byte*) print_char_cursor#45
|
|
(byte*) print_char_cursor#46
|
|
(byte*) print_char_cursor#47
|
|
(byte*) print_char_cursor#48
|
|
(byte*) print_char_cursor#5
|
|
(byte*) print_char_cursor#6
|
|
(byte*) print_char_cursor#7
|
|
(byte*) print_char_cursor#8
|
|
(byte*) print_char_cursor#9
|
|
(const byte*) print_hextab[] = (byte*) "0123456789abcdef"z
|
|
(byte*) print_line_cursor
|
|
(byte*) print_line_cursor#0
|
|
(byte*) print_line_cursor#1
|
|
(byte*) print_line_cursor#10
|
|
(byte*) print_line_cursor#11
|
|
(byte*) print_line_cursor#12
|
|
(byte*) print_line_cursor#13
|
|
(byte*) print_line_cursor#14
|
|
(byte*) print_line_cursor#15
|
|
(byte*) print_line_cursor#16
|
|
(byte*) print_line_cursor#17
|
|
(byte*) print_line_cursor#18
|
|
(byte*) print_line_cursor#19
|
|
(byte*) print_line_cursor#2
|
|
(byte*) print_line_cursor#20
|
|
(byte*) print_line_cursor#21
|
|
(byte*) print_line_cursor#22
|
|
(byte*) print_line_cursor#23
|
|
(byte*) print_line_cursor#24
|
|
(byte*) print_line_cursor#25
|
|
(byte*) print_line_cursor#26
|
|
(byte*) print_line_cursor#27
|
|
(byte*) print_line_cursor#28
|
|
(byte*) print_line_cursor#29
|
|
(byte*) print_line_cursor#3
|
|
(byte*) print_line_cursor#30
|
|
(byte*) print_line_cursor#4
|
|
(byte*) print_line_cursor#5
|
|
(byte*) print_line_cursor#6
|
|
(byte*) print_line_cursor#7
|
|
(byte*) print_line_cursor#8
|
|
(byte*) print_line_cursor#9
|
|
(void()) print_ln()
|
|
(byte*~) print_ln::$0
|
|
(bool~) print_ln::$1
|
|
(label) print_ln::@1
|
|
(label) print_ln::@2
|
|
(label) print_ln::@return
|
|
(byte*) print_screen
|
|
(byte*) print_screen#0
|
|
(void()) print_word((word) print_word::w)
|
|
(byte~) print_word::$0
|
|
(byte~) print_word::$2
|
|
(label) print_word::@1
|
|
(label) print_word::@2
|
|
(label) print_word::@return
|
|
(word) print_word::w
|
|
(word) print_word::w#0
|
|
(word) print_word::w#1
|
|
(word) print_word::w#2
|
|
(byte()) rand()
|
|
(byte~) rand::$0
|
|
(label) rand::@return
|
|
(const word*) rand::RAND_SEED = &(word) rand_seed
|
|
(byte) rand::return
|
|
(byte) rand::return#0
|
|
(byte) rand::return#1
|
|
(byte) rand::return#2
|
|
(byte) rand::return#3
|
|
(byte) rand::return#4
|
|
(word) rand_seed loadstore
|
|
(const byte*) sinustable[(number) $100] = { (byte) $80, (byte) $7d, (byte) $7a, (byte) $77, (byte) $74, (byte) $70, (byte) $6d, (byte) $6a, (byte) $67, (byte) $64, (byte) $61, (byte) $5e, (byte) $5b, (byte) $58, (byte) $55, (byte) $52, (byte) $4f, (byte) $4d, (byte) $4a, (byte) $47, (byte) $44, (byte) $41, (byte) $3f, (byte) $3c, (byte) $39, (byte) $37, (byte) $34, (byte) $32, (byte) $2f, (byte) $2d, (byte) $2b, (byte) $28, (byte) $26, (byte) $24, (byte) $22, (byte) $20, (byte) $1e, (byte) $1c, (byte) $1a, (byte) $18, (byte) $16, (byte) $15, (byte) $13, (byte) $11, (byte) $10, (byte) $f, (byte) $d, (byte) $c, (byte) $b, (byte) $a, (byte) 8, (byte) 7, (byte) 6, (byte) 6, (byte) 5, (byte) 4, (byte) 3, (byte) 3, (byte) 2, (byte) 2, (byte) 2, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 2, (byte) 2, (byte) 3, (byte) 3, (byte) 4, (byte) 5, (byte) 6, (byte) 6, (byte) 7, (byte) 8, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $f, (byte) $10, (byte) $11, (byte) $13, (byte) $15, (byte) $16, (byte) $18, (byte) $1a, (byte) $1c, (byte) $1e, (byte) $20, (byte) $22, (byte) $24, (byte) $26, (byte) $28, (byte) $2b, (byte) $2d, (byte) $2f, (byte) $32, (byte) $34, (byte) $37, (byte) $39, (byte) $3c, (byte) $3f, (byte) $41, (byte) $44, (byte) $47, (byte) $4a, (byte) $4d, (byte) $4f, (byte) $52, (byte) $55, (byte) $58, (byte) $5b, (byte) $5e, (byte) $61, (byte) $64, (byte) $67, (byte) $6a, (byte) $6d, (byte) $70, (byte) $74, (byte) $77, (byte) $7a, (byte) $7d, (byte) $80, (byte) $83, (byte) $86, (byte) $89, (byte) $8c, (byte) $90, (byte) $93, (byte) $96, (byte) $99, (byte) $9c, (byte) $9f, (byte) $a2, (byte) $a5, (byte) $a8, (byte) $ab, (byte) $ae, (byte) $b1, (byte) $b3, (byte) $b6, (byte) $b9, (byte) $bc, (byte) $bf, (byte) $c1, (byte) $c4, (byte) $c7, (byte) $c9, (byte) $cc, (byte) $ce, (byte) $d1, (byte) $d3, (byte) $d5, (byte) $d8, (byte) $da, (byte) $dc, (byte) $de, (byte) $e0, (byte) $e2, (byte) $e4, (byte) $e6, (byte) $e8, (byte) $ea, (byte) $eb, (byte) $ed, (byte) $ef, (byte) $f0, (byte) $f1, (byte) $f3, (byte) $f4, (byte) $f5, (byte) $f6, (byte) $f8, (byte) $f9, (byte) $fa, (byte) $fa, (byte) $fb, (byte) $fc, (byte) $fd, (byte) $fd, (byte) $fe, (byte) $fe, (byte) $fe, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $fe, (byte) $fe, (byte) $fe, (byte) $fd, (byte) $fd, (byte) $fc, (byte) $fb, (byte) $fa, (byte) $fa, (byte) $f9, (byte) $f8, (byte) $f6, (byte) $f5, (byte) $f4, (byte) $f3, (byte) $f1, (byte) $f0, (byte) $ef, (byte) $ed, (byte) $eb, (byte) $ea, (byte) $e8, (byte) $e6, (byte) $e4, (byte) $e2, (byte) $e0, (byte) $de, (byte) $dc, (byte) $da, (byte) $d8, (byte) $d5, (byte) $d3, (byte) $d1, (byte) $ce, (byte) $cc, (byte) $c9, (byte) $c7, (byte) $c4, (byte) $c1, (byte) $bf, (byte) $bc, (byte) $b9, (byte) $b6, (byte) $b3, (byte) $b1, (byte) $ae, (byte) $ab, (byte) $a8, (byte) $a5, (byte) $a2, (byte) $9f, (byte) $9c, (byte) $99, (byte) $96, (byte) $93, (byte) $90, (byte) $8c, (byte) $89, (byte) $86, (byte) $83 }
|
|
(void()) start()
|
|
(label) start::@return
|
|
(const word*) start::LAST_TIME = &(word) last_time
|
|
(const byte*) xbuf[(number) $28] = { fill( $28, 0) }
|
|
(const byte*) ybuf[(number) $19] = { fill( $19, 0) }
|
|
|
|
Adding number conversion cast (unumber) $f0 in
|
|
Adding number conversion cast (unumber) 6 in
|
|
Adding number conversion cast (unumber) $e in
|
|
Adding number conversion cast (unumber) $a in
|
|
Adding number conversion cast (unumber) $f0 in
|
|
Adding number conversion cast (unumber) 6 in
|
|
Adding number conversion cast (unumber) $e in
|
|
Adding number conversion cast (unumber) $a in
|
|
Adding number conversion cast (unumber) $28 in (byte*~) print_ln::$0 ← (byte*) print_line_cursor#8 + (number) $28
|
|
Adding number conversion cast (unumber) 4 in (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (number) 4
|
|
Adding number conversion cast (unumber) $f in (number~) print_byte::$2 ← (byte) print_byte::b#3 & (number) $f
|
|
Adding number conversion cast (unumber) print_byte::$2 in (number~) print_byte::$2 ← (byte) print_byte::b#3 & (unumber)(number) $f
|
|
Adding number conversion cast (unumber) $194a in (word) rand_seed ← (number) $194a
|
|
Adding number conversion cast (unumber) 0 in (byte) doplasma::ii#1 ← (number) 0
|
|
Adding number conversion cast (unumber) $19 in (bool~) doplasma::$0 ← (byte) doplasma::ii#3 < (number) $19
|
|
Adding number conversion cast (unumber) 4 in (byte) doplasma::c1a#2 ← (byte) doplasma::c1a#3 + (number) 4
|
|
Adding number conversion cast (unumber) 9 in (byte) doplasma::c1b#2 ← (byte) doplasma::c1b#3 + (number) 9
|
|
Adding number conversion cast (unumber) 3 in (byte) doplasma::c1A#1 ← (byte) doplasma::c1A#2 + (number) 3
|
|
Adding number conversion cast (unumber) 5 in (byte) doplasma::c1B#1 ← (byte) doplasma::c1B#2 - (number) 5
|
|
Adding number conversion cast (unumber) 0 in (byte) doplasma::i#1 ← (number) 0
|
|
Adding number conversion cast (unumber) $28 in (bool~) doplasma::$2 ← (byte) doplasma::i#3 < (number) $28
|
|
Adding number conversion cast (unumber) 3 in (byte) doplasma::c2a#2 ← (byte) doplasma::c2a#3 + (number) 3
|
|
Adding number conversion cast (unumber) 7 in (byte) doplasma::c2b#2 ← (byte) doplasma::c2b#3 + (number) 7
|
|
Adding number conversion cast (unumber) 2 in (byte) doplasma::c2A#1 ← (byte) doplasma::c2A#3 + (number) 2
|
|
Adding number conversion cast (unumber) 3 in (byte) doplasma::c2B#1 ← (byte) doplasma::c2B#3 - (number) 3
|
|
Adding number conversion cast (unumber) 0 in (byte) doplasma::jj#1 ← (number) 0
|
|
Adding number conversion cast (unumber) $19 in (bool~) doplasma::$4 ← (byte) doplasma::jj#3 < (number) $19
|
|
Adding number conversion cast (unumber) 0 in (byte) doplasma::j#1 ← (number) 0
|
|
Adding number conversion cast (unumber) $28 in (bool~) doplasma::$5 ← (byte) doplasma::j#3 < (number) $28
|
|
Adding number conversion cast (unumber) $28 in (byte*) doplasma::scrn#0 ← (byte*) doplasma::scrn#4 + (number) $28
|
|
Adding number conversion cast (unumber) 0 in (word) makechar::c#1 ← (number) 0
|
|
Adding number conversion cast (unumber) $100 in (bool~) makechar::$0 ← (word) makechar::c#3 < (number) $100
|
|
Adding number conversion cast (unumber) 0 in (byte) makechar::i#1 ← (number) 0
|
|
Adding number conversion cast (unumber) 8 in (bool~) makechar::$2 ← (byte) makechar::i#3 < (number) 8
|
|
Adding number conversion cast (unumber) 0 in (byte) makechar::b#1 ← (number) 0
|
|
Adding number conversion cast (unumber) 0 in (byte) makechar::ii#1 ← (number) 0
|
|
Adding number conversion cast (unumber) 8 in (bool~) makechar::$3 ← (byte) makechar::ii#3 < (number) 8
|
|
Adding number conversion cast (unumber) $ff in (number~) makechar::$5 ← (byte~) makechar::$4 & (number) $ff
|
|
Adding number conversion cast (unumber) makechar::$5 in (number~) makechar::$5 ← (byte~) makechar::$4 & (unumber)(number) $ff
|
|
Adding number conversion cast (unumber) 3 in (word~) makechar::$8 ← (word) makechar::c#6 << (number) 3
|
|
Adding number conversion cast (unumber) $194a in (word) rand_seed ← (number) $194a
|
|
Adding number conversion cast (unumber) $fc in (number~) main::$2 ← (byte) main::block#1 & (number) $fc
|
|
Adding number conversion cast (unumber) main::$2 in (number~) main::$2 ← (byte) main::block#1 & (unumber)(number) $fc
|
|
Adding number conversion cast (unumber) 3 in (byte) main::tmp#2 ← (byte) main::tmp#1 | (byte)(word)(const byte*) SCREEN1>>(number) $e^(number) 3
|
|
Adding number conversion cast (unumber) $e in (byte) main::tmp#2 ← (byte) main::tmp#1 | (byte)(word)(const byte*) SCREEN1>>(number) $e^(unumber)(number) 3
|
|
Adding number conversion cast (unumber) 0 in (bool~) main::$6 ← (number) 0 != (word) main::count#2
|
|
Adding number conversion cast (snumber) 0 in (signed word) main::return#0 ← (number) 0
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Inlining cast (word) rand_seed ← (unumber)(number) $194a
|
|
Inlining cast (byte~) rand::$0 ← (byte)(word) rand_seed
|
|
Inlining cast (byte) doplasma::ii#1 ← (unumber)(number) 0
|
|
Inlining cast (byte) doplasma::i#1 ← (unumber)(number) 0
|
|
Inlining cast (byte) doplasma::jj#1 ← (unumber)(number) 0
|
|
Inlining cast (byte) doplasma::j#1 ← (unumber)(number) 0
|
|
Inlining cast (word) makechar::c#1 ← (unumber)(number) 0
|
|
Inlining cast (byte~) makechar::$1 ← (byte)(word) makechar::c#4
|
|
Inlining cast (byte) makechar::i#1 ← (unumber)(number) 0
|
|
Inlining cast (byte) makechar::b#1 ← (unumber)(number) 0
|
|
Inlining cast (byte) makechar::ii#1 ← (unumber)(number) 0
|
|
Inlining cast (word) rand_seed ← (unumber)(number) $194a
|
|
Inlining cast (signed word) main::return#0 ← (snumber)(number) 0
|
|
Successful SSA optimization Pass2InlineCast
|
|
Simplifying constant pointer cast (byte*) 53272
|
|
Simplifying constant pointer cast (byte*) 56576
|
|
Simplifying constant pointer cast (byte*) 57344
|
|
Simplifying constant pointer cast (byte*) 58368
|
|
Simplifying constant pointer cast (byte*) 59392
|
|
Simplifying constant integer cast 6
|
|
Simplifying constant integer cast $f0
|
|
Simplifying constant integer cast $a
|
|
Simplifying constant integer cast $e
|
|
Simplifying constant integer cast 6
|
|
Simplifying constant integer cast $f0
|
|
Simplifying constant integer cast $a
|
|
Simplifying constant integer cast $e
|
|
Simplifying constant pointer cast (byte*) 1024
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast $f
|
|
Simplifying constant integer cast $194a
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $19
|
|
Simplifying constant integer cast 4
|
|
Simplifying constant integer cast 9
|
|
Simplifying constant integer cast 3
|
|
Simplifying constant integer cast 5
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast 3
|
|
Simplifying constant integer cast 7
|
|
Simplifying constant integer cast 2
|
|
Simplifying constant integer cast 3
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $19
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $100
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast 8
|
|
Simplifying constant integer cast $ff
|
|
Simplifying constant integer cast 3
|
|
Simplifying constant integer cast (const byte*) CHARSET
|
|
Simplifying constant integer cast $194a
|
|
Simplifying constant integer cast $fc
|
|
Simplifying constant integer cast $e
|
|
Simplifying constant integer cast 3
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast (const byte*) SCREEN1
|
|
Simplifying constant integer cast (const byte*) SCREEN2
|
|
Simplifying constant integer cast 0
|
|
Successful SSA optimization PassNCastSimplification
|
|
Finalized unsigned number type (byte) 6
|
|
Finalized unsigned number type (byte) $f0
|
|
Finalized unsigned number type (byte) $a
|
|
Finalized unsigned number type (byte) $e
|
|
Finalized unsigned number type (byte) 6
|
|
Finalized unsigned number type (byte) $f0
|
|
Finalized unsigned number type (byte) $a
|
|
Finalized unsigned number type (byte) $e
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) 4
|
|
Finalized unsigned number type (byte) $f
|
|
Finalized unsigned number type (word) $194a
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) $19
|
|
Finalized unsigned number type (byte) 4
|
|
Finalized unsigned number type (byte) 9
|
|
Finalized unsigned number type (byte) 3
|
|
Finalized unsigned number type (byte) 5
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) 3
|
|
Finalized unsigned number type (byte) 7
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) 3
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) $19
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (word) $100
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) 8
|
|
Finalized unsigned number type (byte) $ff
|
|
Finalized unsigned number type (byte) 3
|
|
Finalized unsigned number type (word) $194a
|
|
Finalized unsigned number type (byte) $fc
|
|
Finalized unsigned number type (byte) $e
|
|
Finalized unsigned number type (byte) 3
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized signed number type (signed byte) 0
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Inferred type updated to byte in (unumber~) print_byte::$2 ← (byte) print_byte::b#3 & (byte) $f
|
|
Inferred type updated to byte in (unumber~) makechar::$5 ← (byte~) makechar::$4 & (byte) $ff
|
|
Inferred type updated to byte in (unumber~) main::$2 ← (byte) main::block#1 & (byte) $fc
|
|
Inversing boolean not [173] (bool~) makechar::$7 ← (byte~) makechar::$5 <= (byte) makechar::s#2 from [172] (bool~) makechar::$6 ← (byte~) makechar::$5 > (byte) makechar::s#2
|
|
Successful SSA optimization Pass2UnaryNotSimplification
|
|
Alias (byte*) print_char_cursor#0 = (byte*) print_line_cursor#0 (byte*) print_screen#0 (byte*) print_char_cursor#42 (byte*) print_line_cursor#24 (byte*) print_char_cursor#41 (byte*) print_line_cursor#22 (byte*) print_char_cursor#38 (byte*) print_line_cursor#19
|
|
Alias (byte*) print_line_cursor#1 = (byte*~) print_ln::$0 (byte*) print_line_cursor#9 (byte*) print_char_cursor#1 (byte*) print_line_cursor#10 (byte*) print_char_cursor#18 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2
|
|
Alias (byte) print_byte::b#0 = (byte~) print_word::$0
|
|
Alias (word) print_word::w#1 = (word) print_word::w#2
|
|
Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#3
|
|
Alias (byte) print_byte::b#1 = (byte~) print_word::$2
|
|
Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#4 (byte*) print_char_cursor#21 (byte*) print_char_cursor#5
|
|
Alias (byte) print_byte::b#2 = (byte) print_byte::b#3
|
|
Alias (byte*) print_char_cursor#22 = (byte*) print_char_cursor#6
|
|
Alias (byte*) print_char_cursor#23 = (byte*) print_char_cursor#7 (byte*) print_char_cursor#24 (byte*) print_char_cursor#8
|
|
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#26 (byte*) print_char_cursor#9
|
|
Alias (word) Ticks#1 = (word) Ticks#7
|
|
Alias (byte*) print_char_cursor#36 = (byte*) print_char_cursor#39
|
|
Alias (byte*) print_line_cursor#17 = (byte*) print_line_cursor#20 (byte*) print_line_cursor#23
|
|
Alias (word) Ticks#12 = (word) Ticks#15 (word) Ticks#2 (word) Ticks#8 (word) Ticks#3
|
|
Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#27
|
|
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#3 (byte*) print_line_cursor#12 (byte*) print_line_cursor#4
|
|
Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#28 (byte*) print_char_cursor#29 (byte*) print_char_cursor#13
|
|
Alias (word) Ticks#0 = (word) Ticks#17 (word) Ticks#14
|
|
Alias (byte) rand::return#0 = (byte~) rand::$0 (byte) rand::return#3 (byte) rand::return#1
|
|
Alias (byte) doplasma::c1a#1 = (byte) doplasma::c1A#0
|
|
Alias (byte) doplasma::c1b#1 = (byte) doplasma::c1B#0
|
|
Alias (byte) doplasma::c1a#3 = (byte) doplasma::c1a#4
|
|
Alias (byte) doplasma::c1b#3 = (byte) doplasma::c1b#4
|
|
Alias (byte) doplasma::ii#3 = (byte) doplasma::ii#4
|
|
Alias (byte) doplasma::c1A#2 = (byte) doplasma::c1A#4 (byte) doplasma::c1A#3
|
|
Alias (byte) doplasma::c1B#2 = (byte) doplasma::c1B#4 (byte) doplasma::c1B#3
|
|
Alias (byte) doplasma::c2A#2 = (byte) doplasma::c2A#6 (byte) doplasma::c2A#4 (byte) doplasma::c2a#1
|
|
Alias (byte) doplasma::c2B#2 = (byte) doplasma::c2B#6 (byte) doplasma::c2B#4 (byte) doplasma::c2b#1
|
|
Alias (byte*) doplasma::scrn#10 = (byte*) doplasma::scrn#14 (byte*) doplasma::scrn#12
|
|
Alias (byte) doplasma::c2a#3 = (byte) doplasma::c2a#4
|
|
Alias (byte) doplasma::c2b#3 = (byte) doplasma::c2b#4
|
|
Alias (byte) doplasma::i#3 = (byte) doplasma::i#4
|
|
Alias (byte) doplasma::c2A#3 = (byte) doplasma::c2A#7 (byte) doplasma::c2A#5
|
|
Alias (byte) doplasma::c2B#3 = (byte) doplasma::c2B#7 (byte) doplasma::c2B#5
|
|
Alias (byte*) doplasma::scrn#11 = (byte*) doplasma::scrn#9 (byte*) doplasma::scrn#8
|
|
Alias (byte) doplasma::jj#3 = (byte) doplasma::jj#7
|
|
Alias (byte*) doplasma::scrn#6 = (byte*) doplasma::scrn#7
|
|
Alias (byte) doplasma::j#3 = (byte) doplasma::j#4
|
|
Alias (byte) doplasma::jj#4 = (byte) doplasma::jj#6 (byte) doplasma::jj#5
|
|
Alias (byte*) doplasma::scrn#3 = (byte*) doplasma::scrn#5 (byte*) doplasma::scrn#4
|
|
Alias (word) makechar::c#3 = (word) makechar::c#4
|
|
Alias (word) makechar::c#10 = (word) makechar::c#7 (word) makechar::c#5
|
|
Alias (byte) makechar::i#3 = (byte) makechar::i#7
|
|
Alias (byte) makechar::s#6 = (byte) makechar::s#7
|
|
Alias (byte) makechar::s#2 = (byte) makechar::s#3 (byte) makechar::s#4 (byte) makechar::s#9 (byte) makechar::s#8
|
|
Alias (byte) makechar::ii#3 = (byte) makechar::ii#7 (byte) makechar::ii#6 (byte) makechar::ii#5
|
|
Alias (byte) makechar::b#3 = (byte) makechar::b#8 (byte) makechar::b#5 (byte) makechar::b#6 (byte) makechar::b#4
|
|
Alias (word) makechar::c#11 = (word) makechar::c#13 (word) makechar::c#8 (word) makechar::c#12 (word) makechar::c#6
|
|
Alias (byte) makechar::i#10 = (byte) makechar::i#5 (byte) makechar::i#9 (byte) makechar::i#4 (byte) makechar::i#8
|
|
Alias (byte) rand::return#2 = (byte) rand::return#4
|
|
Alias (word) main::count#0 = (word) main::count#6 (word) main::count#4
|
|
Alias (word) Ticks#19 = (word) Ticks#20 (word) Ticks#22
|
|
Alias (byte*) print_char_cursor#44 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#47
|
|
Alias (byte*) print_line_cursor#26 = (byte*) print_line_cursor#27 (byte*) print_line_cursor#29
|
|
Alias (byte) main::tmp#1 = (byte~) main::$2
|
|
Alias (word) main::count#2 = (word) main::count#7 (word) main::count#5 (word) main::count#3
|
|
Alias (byte) main::v#2 = (byte) main::v#6 (byte) main::v#3 (byte) main::v#5 (byte) main::v#4
|
|
Alias (byte) main::block#2 = (byte) main::block#6 (byte) main::block#3 (byte) main::block#5 (byte) main::block#4
|
|
Alias (word) Ticks#13 = (word) Ticks#23 (word) Ticks#16 (word) Ticks#21 (word) Ticks#18
|
|
Alias (byte*) print_char_cursor#37 = (byte*) print_char_cursor#48 (byte*) print_char_cursor#40 (byte*) print_char_cursor#46 (byte*) print_char_cursor#43
|
|
Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#30 (byte*) print_line_cursor#21 (byte*) print_line_cursor#28 (byte*) print_line_cursor#25
|
|
Alias (word) Ticks#10 = (word) Ticks#4 (word) Ticks#9 (word) Ticks#5
|
|
Alias (byte*) print_char_cursor#14 = (byte*) print_char_cursor#30 (byte*) print_char_cursor#31 (byte*) print_char_cursor#15
|
|
Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#5 (byte*) print_line_cursor#14 (byte*) print_line_cursor#6
|
|
Alias (signed word) main::return#0 = (signed word) main::return#3 (signed word) main::return#1
|
|
Alias (word) Ticks#11 = (word) Ticks#6
|
|
Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#32
|
|
Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#7
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias (byte) makechar::ii#3 = (byte) makechar::ii#4
|
|
Alias (word) makechar::c#11 = (word) makechar::c#9
|
|
Alias (byte) makechar::i#10 = (byte) makechar::i#6
|
|
Alias (byte) makechar::s#2 = (byte) makechar::s#5
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Identical Phi Values (byte*) print_line_cursor#16 (byte*) print_line_cursor#17
|
|
Identical Phi Values (byte*) print_char_cursor#33 (byte*) print_char_cursor#11
|
|
Identical Phi Values (byte*) print_char_cursor#17 (byte*) print_char_cursor#33
|
|
Identical Phi Values (word) print_word::w#1 (word) print_word::w#0
|
|
Identical Phi Values (byte*) print_char_cursor#34 (byte*) print_char_cursor#36
|
|
Identical Phi Values (byte*) print_char_cursor#19 (byte*) print_char_cursor#23
|
|
Identical Phi Values (byte*) print_char_cursor#20 (byte*) print_char_cursor#23
|
|
Identical Phi Values (byte*) print_char_cursor#22 (byte*) print_char_cursor#10
|
|
Identical Phi Values (byte*) print_char_cursor#23 (byte*) print_char_cursor#10
|
|
Identical Phi Values (byte*) print_char_cursor#36 (byte*) print_char_cursor#37
|
|
Identical Phi Values (byte*) print_line_cursor#17 (byte*) print_line_cursor#18
|
|
Identical Phi Values (byte*) print_char_cursor#11 (byte*) print_char_cursor#20
|
|
Identical Phi Values (byte*) print_line_cursor#11 (byte*) print_line_cursor#1
|
|
Identical Phi Values (byte*) print_char_cursor#12 (byte*) print_line_cursor#1
|
|
Identical Phi Values (byte) doplasma::c1A#2 (byte) doplasma::c1a#1
|
|
Identical Phi Values (byte) doplasma::c1B#2 (byte) doplasma::c1b#1
|
|
Identical Phi Values (byte) doplasma::c2A#2 (byte) doplasma::c2A#0
|
|
Identical Phi Values (byte) doplasma::c2B#2 (byte) doplasma::c2B#0
|
|
Identical Phi Values (byte*) doplasma::scrn#10 (byte*) doplasma::scrn#13
|
|
Identical Phi Values (byte) doplasma::c2A#3 (byte) doplasma::c2A#2
|
|
Identical Phi Values (byte) doplasma::c2B#3 (byte) doplasma::c2B#2
|
|
Identical Phi Values (byte*) doplasma::scrn#11 (byte*) doplasma::scrn#10
|
|
Identical Phi Values (byte) doplasma::jj#4 (byte) doplasma::jj#3
|
|
Identical Phi Values (byte*) doplasma::scrn#3 (byte*) doplasma::scrn#6
|
|
Identical Phi Values (word) makechar::c#11 (word) makechar::c#10
|
|
Identical Phi Values (byte) makechar::i#10 (byte) makechar::i#3
|
|
Identical Phi Values (byte) makechar::s#2 (byte) makechar::s#6
|
|
Identical Phi Values (word) Ticks#19 (word) Ticks#0
|
|
Identical Phi Values (byte*) print_char_cursor#44 (byte*) print_char_cursor#0
|
|
Identical Phi Values (byte*) print_line_cursor#26 (byte*) print_char_cursor#0
|
|
Identical Phi Values (byte) main::v#2 (byte) main::v#1
|
|
Identical Phi Values (byte) main::block#2 (byte) main::block#1
|
|
Identical Phi Values (word) Ticks#13 (word) Ticks#19
|
|
Identical Phi Values (byte*) print_char_cursor#37 (byte*) print_char_cursor#44
|
|
Identical Phi Values (byte*) print_line_cursor#18 (byte*) print_line_cursor#26
|
|
Identical Phi Values (word) Ticks#10 (word) Ticks#12
|
|
Identical Phi Values (byte*) print_char_cursor#14 (byte*) print_char_cursor#12
|
|
Identical Phi Values (byte*) print_line_cursor#13 (byte*) print_line_cursor#11
|
|
Identical Phi Values (word) Ticks#11 (word) Ticks#10
|
|
Identical Phi Values (byte*) print_char_cursor#16 (byte*) print_char_cursor#14
|
|
Identical Phi Values (byte*) print_line_cursor#15 (byte*) print_line_cursor#13
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Identical Phi Values (word) makechar::c#10 (word) makechar::c#3
|
|
Identical Phi Values (byte) makechar::s#6 (byte) makechar::s#1
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Simple Condition (bool~) print_ln::$1 [8] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1
|
|
Simple Condition (bool~) doplasma::$0 [100] if((byte) doplasma::ii#3<(byte) $19) goto doplasma::@2
|
|
Simple Condition (bool~) doplasma::$2 [115] if((byte) doplasma::i#3<(byte) $28) goto doplasma::@8
|
|
Simple Condition (bool~) doplasma::$4 [128] if((byte) doplasma::jj#3<(byte) $19) goto doplasma::@14
|
|
Simple Condition (bool~) doplasma::$5 [133] if((byte) doplasma::j#3<(byte) $28) goto doplasma::@17
|
|
Simple Condition (bool~) makechar::$0 [150] if((word) makechar::c#3<(word) $100) goto makechar::@2
|
|
Simple Condition (bool~) makechar::$2 [157] if((byte) makechar::i#3<(byte) 8) goto makechar::@5
|
|
Simple Condition (bool~) makechar::$3 [165] if((byte) makechar::ii#3<(byte) 8) goto makechar::@8
|
|
Simple Condition (bool~) makechar::$7 [174] if((byte~) makechar::$5<=(byte) makechar::s#1) goto makechar::@10
|
|
Simple Condition (bool~) main::$6 [203] if((byte) 0!=(word) main::count#2) goto main::@2
|
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
|
Constant (const byte*) print_char_cursor#0 = (byte*) 1024
|
|
Constant (const word) Ticks#0 = 0
|
|
Constant (const byte) doplasma::c1a#0 = 0
|
|
Constant (const byte) doplasma::c1b#0 = 0
|
|
Constant (const byte) doplasma::c2a#0 = 0
|
|
Constant (const byte) doplasma::c2b#0 = 0
|
|
Constant (const byte) doplasma::c1a#1 = 0
|
|
Constant (const byte) doplasma::c1b#1 = 0
|
|
Constant (const byte) doplasma::c2A#0 = 0
|
|
Constant (const byte) doplasma::c2B#0 = 0
|
|
Constant (const byte) doplasma::i#0 = 0
|
|
Constant (const byte) doplasma::ii#0 = 0
|
|
Constant (const byte) doplasma::j#0 = 0
|
|
Constant (const byte) doplasma::jj#0 = 0
|
|
Constant (const byte) doplasma::ii#1 = 0
|
|
Constant (const byte) doplasma::i#1 = 0
|
|
Constant (const byte) doplasma::jj#1 = 0
|
|
Constant (const byte) doplasma::j#1 = 0
|
|
Constant (const byte) makechar::i#0 = 0
|
|
Constant (const byte) makechar::ii#0 = 0
|
|
Constant (const byte) makechar::b#0 = 0
|
|
Constant (const byte) makechar::s#0 = 0
|
|
Constant (const word) makechar::c#0 = 0
|
|
Constant (const word) makechar::c#1 = 0
|
|
Constant (const byte) makechar::i#1 = 0
|
|
Constant (const byte) makechar::b#1 = 0
|
|
Constant (const byte) makechar::ii#1 = 0
|
|
Constant (const byte) main::v#0 = 0
|
|
Constant (const byte) main::block#0 = 0
|
|
Constant (const word) main::count#0 = $1f4
|
|
Constant (const byte) main::tmp#0 = 0
|
|
Constant (const byte*) doplasma::scrn#1 = SCREEN1
|
|
Constant (const byte*) doplasma::scrn#2 = SCREEN2
|
|
Constant (const signed word) main::return#0 = 0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant (const signed word) main::return#2 = main::return#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
De-inlining pointer[w] to *(pointer+w) [178] *((const byte*) CHARSET + (word~) makechar::$9) ← (byte) makechar::b#3
|
|
Successful SSA optimization Pass2DeInlineWordDerefIdx
|
|
Simplifying constant evaluating to zero (byte)(word)(const byte*) SCREEN1>>(byte) $e^(byte) 3 in [198] (byte) main::tmp#2 ← (byte) main::tmp#1 | (byte)(word)(const byte*) SCREEN1>>(byte) $e^(byte) 3
|
|
Successful SSA optimization PassNSimplifyConstantZero
|
|
Simplifying expression containing zero 3 in [108] (byte) doplasma::c1A#1 ← (const byte) doplasma::c1a#1 + (byte) 3
|
|
Simplifying expression containing zero 5 in [109] (byte) doplasma::c1B#1 ← (const byte) doplasma::c1b#1 - (byte) 5
|
|
Simplifying expression containing zero 2 in [123] (byte) doplasma::c2A#1 ← (const byte) doplasma::c2A#0 + (byte) 2
|
|
Simplifying expression containing zero 3 in [124] (byte) doplasma::c2B#1 ← (const byte) doplasma::c2B#0 - (byte) 3
|
|
Simplifying expression containing zero main::tmp#1 in [198] (byte) main::tmp#2 ← (byte) main::tmp#1 | (byte) 0
|
|
Successful SSA optimization PassNSimplifyExpressionWithZero
|
|
Eliminating unused variable (byte) doplasma::c1A#1 and assignment [45] (byte) doplasma::c1A#1 ← (byte) 3
|
|
Eliminating unused variable (byte) doplasma::c1B#1 and assignment [46] (byte) doplasma::c1B#1 ← (byte) 5
|
|
Eliminating unused variable (byte) doplasma::c2A#1 and assignment [54] (byte) doplasma::c2A#1 ← (byte) 2
|
|
Eliminating unused variable (byte) doplasma::c2B#1 and assignment [55] (byte) doplasma::c2B#1 ← (byte) 3
|
|
Eliminating unused constant (const byte) doplasma::c1a#0
|
|
Eliminating unused constant (const byte) doplasma::c1b#0
|
|
Eliminating unused constant (const byte) doplasma::c2a#0
|
|
Eliminating unused constant (const byte) doplasma::c2b#0
|
|
Eliminating unused constant (const byte) doplasma::i#0
|
|
Eliminating unused constant (const byte) doplasma::ii#0
|
|
Eliminating unused constant (const byte) doplasma::j#0
|
|
Eliminating unused constant (const byte) doplasma::jj#0
|
|
Eliminating unused constant (const byte) makechar::i#0
|
|
Eliminating unused constant (const byte) makechar::ii#0
|
|
Eliminating unused constant (const byte) makechar::b#0
|
|
Eliminating unused constant (const byte) makechar::s#0
|
|
Eliminating unused constant (const word) makechar::c#0
|
|
Eliminating unused constant (const byte) main::v#0
|
|
Eliminating unused constant (const byte) main::block#0
|
|
Eliminating unused constant (const byte) main::tmp#0
|
|
Eliminating unused constant (const signed word) main::return#2
|
|
Eliminating unused constant (const word) Ticks#0
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Eliminating unused constant (const signed word) main::return#0
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Simplifying constant integer cast (word)(const byte*) SCREEN1>>(byte) 6&(byte) $f0|(word)(const byte*) CHARSET>>(byte) $a&(byte) $e
|
|
Simplifying constant integer cast (word)(const byte*) SCREEN2>>(byte) 6&(byte) $f0|(word)(const byte*) CHARSET>>(byte) $a&(byte) $e
|
|
Successful SSA optimization PassNCastSimplification
|
|
Alias (byte) main::tmp#1 = (byte) main::tmp#2
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Inlining constant with var siblings (const byte) doplasma::c1a#1
|
|
Inlining constant with var siblings (const byte) doplasma::c1b#1
|
|
Inlining constant with var siblings (const byte) doplasma::ii#1
|
|
Inlining constant with var siblings (const byte) doplasma::i#1
|
|
Inlining constant with var siblings (const byte) doplasma::jj#1
|
|
Inlining constant with var siblings (const byte) doplasma::j#1
|
|
Inlining constant with var siblings (const byte*) doplasma::scrn#1
|
|
Inlining constant with var siblings (const byte*) doplasma::scrn#2
|
|
Inlining constant with var siblings (const word) makechar::c#1
|
|
Inlining constant with var siblings (const byte) makechar::i#1
|
|
Inlining constant with var siblings (const byte) makechar::b#1
|
|
Inlining constant with var siblings (const byte) makechar::ii#1
|
|
Inlining constant with var siblings (const word) main::count#0
|
|
Inlining constant with var siblings (const byte*) print_char_cursor#0
|
|
Constant inlined makechar::c#1 = (byte) 0
|
|
Constant inlined makechar::b#1 = (byte) 0
|
|
Constant inlined doplasma::i#1 = (byte) 0
|
|
Constant inlined makechar::ii#1 = (byte) 0
|
|
Constant inlined doplasma::j#1 = (byte) 0
|
|
Constant inlined doplasma::ii#1 = (byte) 0
|
|
Constant inlined doplasma::jj#1 = (byte) 0
|
|
Constant inlined print_char_cursor#0 = (byte*) 1024
|
|
Constant inlined main::count#0 = (word) $1f4
|
|
Constant inlined doplasma::scrn#2 = (const byte*) SCREEN2
|
|
Constant inlined doplasma::scrn#1 = (const byte*) SCREEN1
|
|
Constant inlined doplasma::c1a#1 = (byte) 0
|
|
Constant inlined doplasma::c1b#1 = (byte) 0
|
|
Constant inlined makechar::i#1 = (byte) 0
|
|
Successful SSA optimization Pass2ConstantInlining
|
|
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
|
|
Added new block during phi lifting makechar::@22(between makechar::@21 and makechar::@10)
|
|
Adding NOP phi() at start of @begin
|
|
Adding NOP phi() at start of @13
|
|
Adding NOP phi() at start of @49
|
|
Adding NOP phi() at start of @50
|
|
Adding NOP phi() at start of @end
|
|
Adding NOP phi() at start of main::@8
|
|
Adding NOP phi() at start of main::@12
|
|
Adding NOP phi() at start of main::@2
|
|
Adding NOP phi() at start of doplasma::@3
|
|
Adding NOP phi() at start of doplasma::@14
|
|
Adding NOP phi() at start of end::@2
|
|
Adding NOP phi() at start of end::@3
|
|
Adding NOP phi() at start of print_ln
|
|
Adding NOP phi() at start of print_ln::@2
|
|
Adding NOP phi() at start of print_word::@2
|
|
Adding NOP phi() at start of print_byte::@2
|
|
Adding NOP phi() at start of makechar
|
|
Adding NOP phi() at start of makechar::@5
|
|
Adding NOP phi() at start of makechar::@8
|
|
CALL GRAPH
|
|
Calls in [] to main:5
|
|
Calls in [main] to makechar:9 start:11 end:20 doplasma:24 doplasma:26
|
|
Calls in [end] to start:68 print_word:72 print_ln:74
|
|
Calls in [print_word] to print_byte:86 print_byte:90
|
|
Calls in [print_byte] to print_char:98 print_char:103
|
|
Calls in [makechar] to rand:133
|
|
|
|
Created 21 initial phi equivalence classes
|
|
Coalesced [29] main::count#8 ← main::count#1
|
|
Coalesced [36] doplasma::scrn#16 ← doplasma::scrn#13
|
|
Coalesced [45] doplasma::jj#8 ← doplasma::jj#2
|
|
Coalesced [46] doplasma::scrn#15 ← doplasma::scrn#0
|
|
Coalesced [50] doplasma::j#5 ← doplasma::j#2
|
|
Coalesced [56] doplasma::i#5 ← doplasma::i#2
|
|
Coalesced [57] doplasma::c2a#5 ← doplasma::c2a#2
|
|
Coalesced [58] doplasma::c2b#5 ← doplasma::c2b#2
|
|
Coalesced [64] doplasma::ii#5 ← doplasma::ii#2
|
|
Coalesced [65] doplasma::c1a#5 ← doplasma::c1a#2
|
|
Coalesced [66] doplasma::c1b#5 ← doplasma::c1b#2
|
|
Coalesced [83] print_line_cursor#31 ← print_line_cursor#1
|
|
Coalesced [85] print_byte::b#4 ← print_byte::b#0
|
|
Coalesced [88] print_byte::b#5 ← print_byte::b#1
|
|
Coalesced [89] print_char_cursor#49 ← print_char_cursor#10
|
|
Coalesced [96] print_char::ch#3 ← print_char::ch#0
|
|
Coalesced [97] print_char_cursor#50 ← print_char_cursor#35
|
|
Coalesced [101] print_char::ch#4 ← print_char::ch#1
|
|
Coalesced (already) [102] print_char_cursor#51 ← print_char_cursor#10
|
|
Coalesced [122] makechar::c#14 ← makechar::c#2
|
|
Coalesced [131] makechar::i#11 ← makechar::i#2
|
|
Coalesced [139] makechar::b#10 ← makechar::b#2
|
|
Coalesced [142] makechar::ii#8 ← makechar::ii#2
|
|
Coalesced [143] makechar::b#9 ← makechar::b#7
|
|
Coalesced (already) [144] makechar::b#11 ← makechar::b#3
|
|
Coalesced down to 18 phi equivalence classes
|
|
Culled Empty Block (label) @13
|
|
Culled Empty Block (label) @50
|
|
Culled Empty Block (label) main::@12
|
|
Culled Empty Block (label) doplasma::@3
|
|
Culled Empty Block (label) doplasma::@9
|
|
Culled Empty Block (label) doplasma::@14
|
|
Culled Empty Block (label) end::@3
|
|
Culled Empty Block (label) print_ln::@2
|
|
Culled Empty Block (label) print_ln::@3
|
|
Culled Empty Block (label) print_word::@2
|
|
Culled Empty Block (label) print_byte::@2
|
|
Culled Empty Block (label) makechar::@5
|
|
Culled Empty Block (label) makechar::@22
|
|
Renumbering block @43 to @1
|
|
Renumbering block @45 to @2
|
|
Renumbering block @49 to @3
|
|
Renumbering block doplasma::@7 to doplasma::@3
|
|
Renumbering block doplasma::@8 to doplasma::@4
|
|
Renumbering block doplasma::@13 to doplasma::@5
|
|
Renumbering block doplasma::@16 to doplasma::@6
|
|
Renumbering block doplasma::@17 to doplasma::@7
|
|
Renumbering block doplasma::@18 to doplasma::@8
|
|
Renumbering block makechar::@4 to makechar::@3
|
|
Renumbering block makechar::@6 to makechar::@4
|
|
Renumbering block makechar::@7 to makechar::@5
|
|
Renumbering block makechar::@8 to makechar::@6
|
|
Renumbering block makechar::@9 to makechar::@7
|
|
Renumbering block makechar::@10 to makechar::@8
|
|
Renumbering block makechar::@13 to makechar::@9
|
|
Renumbering block makechar::@21 to makechar::@10
|
|
Renumbering block main::@8 to main::@4
|
|
Renumbering block main::@9 to main::@5
|
|
Renumbering block main::@10 to main::@6
|
|
Renumbering block main::@11 to main::@7
|
|
Adding NOP phi() at start of @begin
|
|
Adding NOP phi() at start of @3
|
|
Adding NOP phi() at start of @end
|
|
Adding NOP phi() at start of main::@4
|
|
Adding NOP phi() at start of main::@2
|
|
Adding NOP phi() at start of end::@2
|
|
Adding NOP phi() at start of print_ln
|
|
Adding NOP phi() at start of makechar
|
|
Adding NOP phi() at start of makechar::@6
|
|
|
|
FINAL CONTROL FLOW GRAPH
|
|
@begin: scope:[] from
|
|
[0] phi()
|
|
to:@1
|
|
@1: scope:[] from @begin
|
|
[1] (word) last_time ← (word) 0
|
|
to:@2
|
|
@2: scope:[] from @1
|
|
[2] (word) rand_seed ← (word) 0
|
|
to:@3
|
|
@3: scope:[] from @2
|
|
[3] phi()
|
|
[4] call main
|
|
to:@end
|
|
@end: scope:[] from @3
|
|
[5] phi()
|
|
|
|
(signed word()) main()
|
|
main: scope:[main] from @3
|
|
[6] (word) rand_seed ← (word) $194a
|
|
[7] call makechar
|
|
to:main::@4
|
|
main::@4: scope:[main] from main
|
|
[8] phi()
|
|
[9] call start
|
|
to:main::@5
|
|
main::@5: scope:[main] from main::@4
|
|
[10] (byte) main::block#1 ← *((const byte*) CIA2_PORT_A)
|
|
[11] (byte) main::tmp#1 ← (byte) main::block#1 & (byte) $fc
|
|
[12] *((const byte*) CIA2_PORT_A) ← (byte) main::tmp#1
|
|
[13] (byte) main::v#1 ← *((const byte*) VIC_MEMORY)
|
|
to:main::@1
|
|
main::@1: scope:[main] from main::@5 main::@7
|
|
[14] (word) main::count#2 ← phi( main::@7/(word) main::count#1 main::@5/(word) $1f4 )
|
|
[15] if((byte) 0!=(word) main::count#2) goto main::@2
|
|
to:main::@3
|
|
main::@3: scope:[main] from main::@1
|
|
[16] *((const byte*) VIC_MEMORY) ← (byte) main::v#1
|
|
[17] *((const byte*) CIA2_PORT_A) ← (byte) main::block#1
|
|
[18] call end
|
|
to:main::@return
|
|
main::@return: scope:[main] from main::@3
|
|
[19] return
|
|
to:@return
|
|
main::@2: scope:[main] from main::@1
|
|
[20] phi()
|
|
[21] call doplasma
|
|
to:main::@6
|
|
main::@6: scope:[main] from main::@2
|
|
[22] *((const byte*) VIC_MEMORY) ← (const byte) PAGE1
|
|
[23] call doplasma
|
|
to:main::@7
|
|
main::@7: scope:[main] from main::@6
|
|
[24] *((const byte*) VIC_MEMORY) ← (const byte) PAGE2
|
|
[25] (word) main::count#1 ← -- (word) main::count#2
|
|
to:main::@1
|
|
|
|
(void()) doplasma((byte*) doplasma::scrn)
|
|
doplasma: scope:[doplasma] from main::@2 main::@6
|
|
[26] (byte*) doplasma::scrn#13 ← phi( main::@6/(const byte*) SCREEN2 main::@2/(const byte*) SCREEN1 )
|
|
to:doplasma::@1
|
|
doplasma::@1: scope:[doplasma] from doplasma doplasma::@2
|
|
[27] (byte) doplasma::c1b#3 ← phi( doplasma/(byte) 0 doplasma::@2/(byte) doplasma::c1b#2 )
|
|
[27] (byte) doplasma::c1a#3 ← phi( doplasma/(byte) 0 doplasma::@2/(byte) doplasma::c1a#2 )
|
|
[27] (byte) doplasma::ii#3 ← phi( doplasma/(byte) 0 doplasma::@2/(byte) doplasma::ii#2 )
|
|
[28] if((byte) doplasma::ii#3<(byte) $19) goto doplasma::@2
|
|
to:doplasma::@3
|
|
doplasma::@3: scope:[doplasma] from doplasma::@1 doplasma::@4
|
|
[29] (byte) doplasma::c2b#3 ← phi( doplasma::@1/(const byte) doplasma::c2B#0 doplasma::@4/(byte) doplasma::c2b#2 )
|
|
[29] (byte) doplasma::c2a#3 ← phi( doplasma::@1/(const byte) doplasma::c2A#0 doplasma::@4/(byte) doplasma::c2a#2 )
|
|
[29] (byte) doplasma::i#3 ← phi( doplasma::@1/(byte) 0 doplasma::@4/(byte) doplasma::i#2 )
|
|
[30] if((byte) doplasma::i#3<(byte) $28) goto doplasma::@4
|
|
to:doplasma::@5
|
|
doplasma::@5: scope:[doplasma] from doplasma::@3 doplasma::@8
|
|
[31] (byte*) doplasma::scrn#6 ← phi( doplasma::@8/(byte*) doplasma::scrn#0 doplasma::@3/(byte*) doplasma::scrn#13 )
|
|
[31] (byte) doplasma::jj#3 ← phi( doplasma::@8/(byte) doplasma::jj#2 doplasma::@3/(byte) 0 )
|
|
[32] if((byte) doplasma::jj#3<(byte) $19) goto doplasma::@6
|
|
to:doplasma::@return
|
|
doplasma::@return: scope:[doplasma] from doplasma::@5
|
|
[33] return
|
|
to:@return
|
|
doplasma::@6: scope:[doplasma] from doplasma::@5 doplasma::@7
|
|
[34] (byte) doplasma::j#3 ← phi( doplasma::@5/(byte) 0 doplasma::@7/(byte) doplasma::j#2 )
|
|
[35] if((byte) doplasma::j#3<(byte) $28) goto doplasma::@7
|
|
to:doplasma::@8
|
|
doplasma::@8: scope:[doplasma] from doplasma::@6
|
|
[36] (byte*) doplasma::scrn#0 ← (byte*) doplasma::scrn#6 + (byte) $28
|
|
[37] (byte) doplasma::jj#2 ← ++ (byte) doplasma::jj#3
|
|
to:doplasma::@5
|
|
doplasma::@7: scope:[doplasma] from doplasma::@6
|
|
[38] (byte~) doplasma::$6 ← *((const byte*) xbuf + (byte) doplasma::j#3) + *((const byte*) ybuf + (byte) doplasma::jj#3)
|
|
[39] *((byte*) doplasma::scrn#6 + (byte) doplasma::j#3) ← (byte~) doplasma::$6
|
|
[40] (byte) doplasma::j#2 ← ++ (byte) doplasma::j#3
|
|
to:doplasma::@6
|
|
doplasma::@4: scope:[doplasma] from doplasma::@3
|
|
[41] (byte~) doplasma::$3 ← *((const byte*) sinustable + (byte) doplasma::c2a#3) + *((const byte*) sinustable + (byte) doplasma::c2b#3)
|
|
[42] *((const byte*) xbuf + (byte) doplasma::i#3) ← (byte~) doplasma::$3
|
|
[43] (byte) doplasma::c2a#2 ← (byte) doplasma::c2a#3 + (byte) 3
|
|
[44] (byte) doplasma::c2b#2 ← (byte) doplasma::c2b#3 + (byte) 7
|
|
[45] (byte) doplasma::i#2 ← ++ (byte) doplasma::i#3
|
|
to:doplasma::@3
|
|
doplasma::@2: scope:[doplasma] from doplasma::@1
|
|
[46] (byte~) doplasma::$1 ← *((const byte*) sinustable + (byte) doplasma::c1a#3) + *((const byte*) sinustable + (byte) doplasma::c1b#3)
|
|
[47] *((const byte*) ybuf + (byte) doplasma::ii#3) ← (byte~) doplasma::$1
|
|
[48] (byte) doplasma::c1a#2 ← (byte) doplasma::c1a#3 + (byte) 4
|
|
[49] (byte) doplasma::c1b#2 ← (byte) doplasma::c1b#3 + (byte) 9
|
|
[50] (byte) doplasma::ii#2 ← ++ (byte) doplasma::ii#3
|
|
to:doplasma::@1
|
|
|
|
(void()) end()
|
|
end: scope:[end] from main::@3
|
|
[51] (word) Ticks#1 ← (word) last_time
|
|
[52] call start
|
|
to:end::@1
|
|
end::@1: scope:[end] from end
|
|
[53] (word) last_time ← (word) last_time - (word) Ticks#1
|
|
[54] (word) Ticks#12 ← (word) last_time
|
|
[55] (word) print_word::w#0 ← (word) Ticks#12
|
|
[56] call print_word
|
|
to:end::@2
|
|
end::@2: scope:[end] from end::@1
|
|
[57] phi()
|
|
[58] call print_ln
|
|
to:end::@return
|
|
end::@return: scope:[end] from end::@2
|
|
[59] return
|
|
to:@return
|
|
|
|
(void()) print_ln()
|
|
print_ln: scope:[print_ln] from end::@2
|
|
[60] phi()
|
|
to:print_ln::@1
|
|
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
|
|
[61] (byte*) print_line_cursor#8 ← phi( print_ln/(byte*) 1024 print_ln::@1/(byte*) print_line_cursor#1 )
|
|
[62] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28
|
|
[63] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1
|
|
to:print_ln::@return
|
|
print_ln::@return: scope:[print_ln] from print_ln::@1
|
|
[64] return
|
|
to:@return
|
|
|
|
(void()) print_word((word) print_word::w)
|
|
print_word: scope:[print_word] from end::@1
|
|
[65] (byte) print_byte::b#0 ← > (word) print_word::w#0
|
|
[66] call print_byte
|
|
to:print_word::@1
|
|
print_word::@1: scope:[print_word] from print_word
|
|
[67] (byte) print_byte::b#1 ← < (word) print_word::w#0
|
|
[68] call print_byte
|
|
to:print_word::@return
|
|
print_word::@return: scope:[print_word] from print_word::@1
|
|
[69] return
|
|
to:@return
|
|
|
|
(void()) print_byte((byte) print_byte::b)
|
|
print_byte: scope:[print_byte] from print_word print_word::@1
|
|
[70] (byte*) print_char_cursor#35 ← phi( print_word/(byte*) 1024 print_word::@1/(byte*) print_char_cursor#10 )
|
|
[70] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
|
|
[71] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4
|
|
[72] (byte) print_char::ch#0 ← *((const byte*) print_hextab + (byte~) print_byte::$0)
|
|
[73] call print_char
|
|
to:print_byte::@1
|
|
print_byte::@1: scope:[print_byte] from print_byte
|
|
[74] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f
|
|
[75] (byte) print_char::ch#1 ← *((const byte*) print_hextab + (byte~) print_byte::$2)
|
|
[76] call print_char
|
|
to:print_byte::@return
|
|
print_byte::@return: scope:[print_byte] from print_byte::@1
|
|
[77] return
|
|
to:@return
|
|
|
|
(void()) print_char((byte) print_char::ch)
|
|
print_char: scope:[print_char] from print_byte print_byte::@1
|
|
[78] (byte*) print_char_cursor#25 ← phi( print_byte/(byte*) print_char_cursor#35 print_byte::@1/(byte*) print_char_cursor#10 )
|
|
[78] (byte) print_char::ch#2 ← phi( print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 )
|
|
[79] *((byte*) print_char_cursor#25) ← (byte) print_char::ch#2
|
|
[80] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#25
|
|
to:print_char::@return
|
|
print_char::@return: scope:[print_char] from print_char
|
|
[81] return
|
|
to:@return
|
|
|
|
(void()) start()
|
|
start: scope:[start] from end main::@4
|
|
asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 }
|
|
[83] (word) rand_seed ← (word) $194a
|
|
to:start::@return
|
|
start::@return: scope:[start] from start
|
|
[84] return
|
|
to:@return
|
|
|
|
(void()) makechar()
|
|
makechar: scope:[makechar] from main
|
|
[85] phi()
|
|
to:makechar::@1
|
|
makechar::@1: scope:[makechar] from makechar makechar::@4
|
|
[86] (word) makechar::c#3 ← phi( makechar/(byte) 0 makechar::@4/(word) makechar::c#2 )
|
|
[87] if((word) makechar::c#3<(word) $100) goto makechar::@2
|
|
to:makechar::@return
|
|
makechar::@return: scope:[makechar] from makechar::@1
|
|
[88] return
|
|
to:@return
|
|
makechar::@2: scope:[makechar] from makechar::@1
|
|
[89] (byte~) makechar::$1 ← (byte)(word) makechar::c#3
|
|
[90] (byte) makechar::s#1 ← *((const byte*) sinustable + (byte~) makechar::$1)
|
|
to:makechar::@3
|
|
makechar::@3: scope:[makechar] from makechar::@2 makechar::@7
|
|
[91] (byte) makechar::i#3 ← phi( makechar::@2/(byte) 0 makechar::@7/(byte) makechar::i#2 )
|
|
[92] if((byte) makechar::i#3<(byte) 8) goto makechar::@5
|
|
to:makechar::@4
|
|
makechar::@4: scope:[makechar] from makechar::@3
|
|
[93] (word) makechar::c#2 ← ++ (word) makechar::c#3
|
|
to:makechar::@1
|
|
makechar::@5: scope:[makechar] from makechar::@3 makechar::@8
|
|
[94] (byte) makechar::b#3 ← phi( makechar::@8/(byte) makechar::b#7 makechar::@3/(byte) 0 )
|
|
[94] (byte) makechar::ii#3 ← phi( makechar::@8/(byte) makechar::ii#2 makechar::@3/(byte) 0 )
|
|
[95] if((byte) makechar::ii#3<(byte) 8) goto makechar::@6
|
|
to:makechar::@7
|
|
makechar::@7: scope:[makechar] from makechar::@5
|
|
[96] (word~) makechar::$8 ← (word) makechar::c#3 << (byte) 3
|
|
[97] (word~) makechar::$9 ← (word~) makechar::$8 + (byte) makechar::i#3
|
|
[98] (byte*~) makechar::$10 ← (const byte*) CHARSET + (word~) makechar::$9
|
|
[99] *((byte*~) makechar::$10) ← (byte) makechar::b#3
|
|
[100] (byte) makechar::i#2 ← ++ (byte) makechar::i#3
|
|
to:makechar::@3
|
|
makechar::@6: scope:[makechar] from makechar::@5
|
|
[101] phi()
|
|
[102] call rand
|
|
[103] (byte) rand::return#2 ← (byte) rand::return#0
|
|
to:makechar::@10
|
|
makechar::@10: scope:[makechar] from makechar::@6
|
|
[104] (byte~) makechar::$4 ← (byte) rand::return#2
|
|
[105] (byte~) makechar::$5 ← (byte~) makechar::$4 & (byte) $ff
|
|
[106] if((byte~) makechar::$5<=(byte) makechar::s#1) goto makechar::@8
|
|
to:makechar::@9
|
|
makechar::@9: scope:[makechar] from makechar::@10
|
|
[107] (byte) makechar::b#2 ← (byte) makechar::b#3 | *((const byte*) bittab + (byte) makechar::ii#3)
|
|
to:makechar::@8
|
|
makechar::@8: scope:[makechar] from makechar::@10 makechar::@9
|
|
[108] (byte) makechar::b#7 ← phi( makechar::@9/(byte) makechar::b#2 makechar::@10/(byte) makechar::b#3 )
|
|
[109] (byte) makechar::ii#2 ← ++ (byte) makechar::ii#3
|
|
to:makechar::@5
|
|
|
|
(byte()) rand()
|
|
rand: scope:[rand] from makechar::@6
|
|
asm { ldx#8 ldaRAND_SEED+0 __rand_loop: asl rolRAND_SEED+1 bcc__no_eor eor#$2D __no_eor: dex bne__rand_loop staRAND_SEED+0 }
|
|
[111] (byte) rand::return#0 ← (byte)(word) rand_seed
|
|
to:rand::@return
|
|
rand::@return: scope:[rand] from rand
|
|
[112] return
|
|
to:@return
|
|
|
|
|
|
VARIABLE REGISTER WEIGHTS
|
|
(word) Ticks
|
|
(word) Ticks#1 2.0
|
|
(word) Ticks#12 4.0
|
|
(void()) doplasma((byte*) doplasma::scrn)
|
|
(byte~) doplasma::$1 202.0
|
|
(byte~) doplasma::$3 202.0
|
|
(byte~) doplasma::$6 2002.0
|
|
(byte) doplasma::c1A
|
|
(byte) doplasma::c1B
|
|
(byte) doplasma::c1a
|
|
(byte) doplasma::c1a#2 67.33333333333333
|
|
(byte) doplasma::c1a#3 75.75
|
|
(byte) doplasma::c1b
|
|
(byte) doplasma::c1b#2 101.0
|
|
(byte) doplasma::c1b#3 60.599999999999994
|
|
(byte) doplasma::c2A
|
|
(byte) doplasma::c2B
|
|
(byte) doplasma::c2a
|
|
(byte) doplasma::c2a#2 67.33333333333333
|
|
(byte) doplasma::c2a#3 75.75
|
|
(byte) doplasma::c2b
|
|
(byte) doplasma::c2b#2 101.0
|
|
(byte) doplasma::c2b#3 60.599999999999994
|
|
(byte) doplasma::i
|
|
(byte) doplasma::i#2 202.0
|
|
(byte) doplasma::i#3 67.33333333333333
|
|
(byte) doplasma::ii
|
|
(byte) doplasma::ii#2 202.0
|
|
(byte) doplasma::ii#3 67.33333333333333
|
|
(byte) doplasma::j
|
|
(byte) doplasma::j#2 2002.0
|
|
(byte) doplasma::j#3 1251.25
|
|
(byte) doplasma::jj
|
|
(byte) doplasma::jj#2 202.0
|
|
(byte) doplasma::jj#3 163.0
|
|
(byte*) doplasma::scrn
|
|
(byte*) doplasma::scrn#0 101.0
|
|
(byte*) doplasma::scrn#13 6.733333333333333
|
|
(byte*) doplasma::scrn#6 186.28571428571428
|
|
(void()) end()
|
|
(word) last_time loadstore 0.41666666666666663
|
|
(signed word()) main()
|
|
(byte) main::block
|
|
(byte) main::block#1 0.46153846153846156
|
|
(word) main::count
|
|
(word) main::count#1 22.0
|
|
(word) main::count#2 4.714285714285714
|
|
(signed word) main::return
|
|
(byte) main::tmp
|
|
(byte) main::tmp#1 4.0
|
|
(byte) main::v
|
|
(byte) main::v#1 0.4444444444444444
|
|
(void()) makechar()
|
|
(byte~) makechar::$1 22.0
|
|
(byte*~) makechar::$10 202.0
|
|
(byte~) makechar::$4 2002.0
|
|
(byte~) makechar::$5 2002.0
|
|
(word~) makechar::$8 202.0
|
|
(word~) makechar::$9 202.0
|
|
(byte) makechar::b
|
|
(byte) makechar::b#2 2002.0
|
|
(byte) makechar::b#3 282.1818181818182
|
|
(byte) makechar::b#7 1501.5
|
|
(word) makechar::c
|
|
(word) makechar::c#2 22.0
|
|
(word) makechar::c#3 6.090909090909091
|
|
(byte) makechar::i
|
|
(byte) makechar::i#2 202.0
|
|
(byte) makechar::i#3 23.764705882352942
|
|
(byte) makechar::ii
|
|
(byte) makechar::ii#2 2002.0
|
|
(byte) makechar::ii#3 400.4
|
|
(byte) makechar::s
|
|
(byte) makechar::s#1 53.26315789473684
|
|
(void()) print_byte((byte) print_byte::b)
|
|
(byte~) print_byte::$0 4.0
|
|
(byte~) print_byte::$2 4.0
|
|
(byte) print_byte::b
|
|
(byte) print_byte::b#0 4.0
|
|
(byte) print_byte::b#1 4.0
|
|
(byte) print_byte::b#2 2.0
|
|
(void()) print_char((byte) print_char::ch)
|
|
(byte) print_char::ch
|
|
(byte) print_char::ch#0 4.0
|
|
(byte) print_char::ch#1 4.0
|
|
(byte) print_char::ch#2 6.0
|
|
(byte*) print_char_cursor
|
|
(byte*) print_char_cursor#10 1.0
|
|
(byte*) print_char_cursor#25 4.0
|
|
(byte*) print_char_cursor#35 1.3333333333333333
|
|
(byte*) print_line_cursor
|
|
(byte*) print_line_cursor#1 16.5
|
|
(byte*) print_line_cursor#8 22.0
|
|
(void()) print_ln()
|
|
(byte*) print_screen
|
|
(void()) print_word((word) print_word::w)
|
|
(word) print_word::w
|
|
(word) print_word::w#0 2.0
|
|
(byte()) rand()
|
|
(byte) rand::return
|
|
(byte) rand::return#0 334.33333333333337
|
|
(byte) rand::return#2 2002.0
|
|
(word) rand_seed loadstore 0.21428571428571427
|
|
(void()) start()
|
|
|
|
Initial phi equivalence classes
|
|
[ main::count#2 main::count#1 ]
|
|
[ doplasma::ii#3 doplasma::ii#2 ]
|
|
[ doplasma::c1a#3 doplasma::c1a#2 ]
|
|
[ doplasma::c1b#3 doplasma::c1b#2 ]
|
|
[ doplasma::i#3 doplasma::i#2 ]
|
|
[ doplasma::c2a#3 doplasma::c2a#2 ]
|
|
[ doplasma::c2b#3 doplasma::c2b#2 ]
|
|
[ doplasma::jj#3 doplasma::jj#2 ]
|
|
[ doplasma::scrn#6 doplasma::scrn#0 doplasma::scrn#13 ]
|
|
[ doplasma::j#3 doplasma::j#2 ]
|
|
[ print_line_cursor#8 print_line_cursor#1 ]
|
|
[ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
|
|
[ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
|
|
[ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 ]
|
|
[ makechar::c#3 makechar::c#2 ]
|
|
[ makechar::i#3 makechar::i#2 ]
|
|
[ makechar::ii#3 makechar::ii#2 ]
|
|
[ makechar::b#3 makechar::b#7 makechar::b#2 ]
|
|
Added variable last_time to live range equivalence class [ last_time ]
|
|
Added variable rand_seed to live range equivalence class [ rand_seed ]
|
|
Added variable main::block#1 to live range equivalence class [ main::block#1 ]
|
|
Added variable main::tmp#1 to live range equivalence class [ main::tmp#1 ]
|
|
Added variable main::v#1 to live range equivalence class [ main::v#1 ]
|
|
Added variable doplasma::$6 to live range equivalence class [ doplasma::$6 ]
|
|
Added variable doplasma::$3 to live range equivalence class [ doplasma::$3 ]
|
|
Added variable doplasma::$1 to live range equivalence class [ doplasma::$1 ]
|
|
Added variable Ticks#1 to live range equivalence class [ Ticks#1 ]
|
|
Added variable Ticks#12 to live range equivalence class [ Ticks#12 ]
|
|
Added variable print_word::w#0 to live range equivalence class [ print_word::w#0 ]
|
|
Added variable print_byte::$0 to live range equivalence class [ print_byte::$0 ]
|
|
Added variable print_byte::$2 to live range equivalence class [ print_byte::$2 ]
|
|
Added variable makechar::$1 to live range equivalence class [ makechar::$1 ]
|
|
Added variable makechar::s#1 to live range equivalence class [ makechar::s#1 ]
|
|
Added variable makechar::$8 to live range equivalence class [ makechar::$8 ]
|
|
Added variable makechar::$9 to live range equivalence class [ makechar::$9 ]
|
|
Added variable makechar::$10 to live range equivalence class [ makechar::$10 ]
|
|
Added variable rand::return#2 to live range equivalence class [ rand::return#2 ]
|
|
Added variable makechar::$4 to live range equivalence class [ makechar::$4 ]
|
|
Added variable makechar::$5 to live range equivalence class [ makechar::$5 ]
|
|
Added variable rand::return#0 to live range equivalence class [ rand::return#0 ]
|
|
Complete equivalence classes
|
|
[ main::count#2 main::count#1 ]
|
|
[ doplasma::ii#3 doplasma::ii#2 ]
|
|
[ doplasma::c1a#3 doplasma::c1a#2 ]
|
|
[ doplasma::c1b#3 doplasma::c1b#2 ]
|
|
[ doplasma::i#3 doplasma::i#2 ]
|
|
[ doplasma::c2a#3 doplasma::c2a#2 ]
|
|
[ doplasma::c2b#3 doplasma::c2b#2 ]
|
|
[ doplasma::jj#3 doplasma::jj#2 ]
|
|
[ doplasma::scrn#6 doplasma::scrn#0 doplasma::scrn#13 ]
|
|
[ doplasma::j#3 doplasma::j#2 ]
|
|
[ print_line_cursor#8 print_line_cursor#1 ]
|
|
[ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
|
|
[ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
|
|
[ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 ]
|
|
[ makechar::c#3 makechar::c#2 ]
|
|
[ makechar::i#3 makechar::i#2 ]
|
|
[ makechar::ii#3 makechar::ii#2 ]
|
|
[ makechar::b#3 makechar::b#7 makechar::b#2 ]
|
|
[ last_time ]
|
|
[ rand_seed ]
|
|
[ main::block#1 ]
|
|
[ main::tmp#1 ]
|
|
[ main::v#1 ]
|
|
[ doplasma::$6 ]
|
|
[ doplasma::$3 ]
|
|
[ doplasma::$1 ]
|
|
[ Ticks#1 ]
|
|
[ Ticks#12 ]
|
|
[ print_word::w#0 ]
|
|
[ print_byte::$0 ]
|
|
[ print_byte::$2 ]
|
|
[ makechar::$1 ]
|
|
[ makechar::s#1 ]
|
|
[ makechar::$8 ]
|
|
[ makechar::$9 ]
|
|
[ makechar::$10 ]
|
|
[ rand::return#2 ]
|
|
[ makechar::$4 ]
|
|
[ makechar::$5 ]
|
|
[ rand::return#0 ]
|
|
Allocated zp[2]:2 [ main::count#2 main::count#1 ]
|
|
Allocated zp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ]
|
|
Allocated zp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ]
|
|
Allocated zp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ]
|
|
Allocated zp[1]:7 [ doplasma::i#3 doplasma::i#2 ]
|
|
Allocated zp[1]:8 [ doplasma::c2a#3 doplasma::c2a#2 ]
|
|
Allocated zp[1]:9 [ doplasma::c2b#3 doplasma::c2b#2 ]
|
|
Allocated zp[1]:10 [ doplasma::jj#3 doplasma::jj#2 ]
|
|
Allocated zp[2]:11 [ doplasma::scrn#6 doplasma::scrn#0 doplasma::scrn#13 ]
|
|
Allocated zp[1]:13 [ doplasma::j#3 doplasma::j#2 ]
|
|
Allocated zp[2]:14 [ print_line_cursor#8 print_line_cursor#1 ]
|
|
Allocated zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
|
|
Allocated zp[1]:17 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
|
|
Allocated zp[2]:18 [ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 ]
|
|
Allocated zp[2]:20 [ makechar::c#3 makechar::c#2 ]
|
|
Allocated zp[1]:22 [ makechar::i#3 makechar::i#2 ]
|
|
Allocated zp[1]:23 [ makechar::ii#3 makechar::ii#2 ]
|
|
Allocated zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ]
|
|
Allocated zp[2]:25 [ last_time ]
|
|
Allocated zp[2]:27 [ rand_seed ]
|
|
Allocated zp[1]:29 [ main::block#1 ]
|
|
Allocated zp[1]:30 [ main::tmp#1 ]
|
|
Allocated zp[1]:31 [ main::v#1 ]
|
|
Allocated zp[1]:32 [ doplasma::$6 ]
|
|
Allocated zp[1]:33 [ doplasma::$3 ]
|
|
Allocated zp[1]:34 [ doplasma::$1 ]
|
|
Allocated zp[2]:35 [ Ticks#1 ]
|
|
Allocated zp[2]:37 [ Ticks#12 ]
|
|
Allocated zp[2]:39 [ print_word::w#0 ]
|
|
Allocated zp[1]:41 [ print_byte::$0 ]
|
|
Allocated zp[1]:42 [ print_byte::$2 ]
|
|
Allocated zp[1]:43 [ makechar::$1 ]
|
|
Allocated zp[1]:44 [ makechar::s#1 ]
|
|
Allocated zp[2]:45 [ makechar::$8 ]
|
|
Allocated zp[2]:47 [ makechar::$9 ]
|
|
Allocated zp[2]:49 [ makechar::$10 ]
|
|
Allocated zp[1]:51 [ rand::return#2 ]
|
|
Allocated zp[1]:52 [ makechar::$4 ]
|
|
Allocated zp[1]:53 [ makechar::$5 ]
|
|
Allocated zp[1]:54 [ rand::return#0 ]
|
|
|
|
INITIAL ASM
|
|
Target platform is c64basic / MOS6502X
|
|
// File Comments
|
|
// Upstart
|
|
.pc = $801 "Basic"
|
|
:BasicUpstart(__bbegin)
|
|
.pc = $80d "Program"
|
|
// Global Constants & labels
|
|
.label VIC_MEMORY = $d018
|
|
// CIA#2 Port A: Serial bus, RS-232, VIC memory bank
|
|
.label CIA2_PORT_A = $dd00
|
|
.label SCREEN1 = $e000
|
|
.label SCREEN2 = $e400
|
|
.label CHARSET = $e800
|
|
.const PAGE1 = SCREEN1>>6&$f0|CHARSET>>$a&$e
|
|
.const PAGE2 = SCREEN2>>6&$f0|CHARSET>>$a&$e
|
|
.label last_time = $19
|
|
.label rand_seed = $1b
|
|
.label print_line_cursor = $e
|
|
.label print_char_cursor = $12
|
|
.label Ticks = $23
|
|
.label Ticks_1 = $25
|
|
// @begin
|
|
__bbegin:
|
|
jmp __b1
|
|
// @1
|
|
__b1:
|
|
// [1] (word) last_time ← (word) 0 -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z last_time
|
|
lda #>0
|
|
sta.z last_time+1
|
|
jmp __b2
|
|
// @2
|
|
__b2:
|
|
// [2] (word) rand_seed ← (word) 0 -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z rand_seed
|
|
lda #>0
|
|
sta.z rand_seed+1
|
|
// [3] phi from @2 to @3 [phi:@2->@3]
|
|
__b3_from___b2:
|
|
jmp __b3
|
|
// @3
|
|
__b3:
|
|
// [4] call main
|
|
jsr main
|
|
// [5] phi from @3 to @end [phi:@3->@end]
|
|
__bend_from___b3:
|
|
jmp __bend
|
|
// @end
|
|
__bend:
|
|
// main
|
|
main: {
|
|
.label block = $1d
|
|
.label tmp = $1e
|
|
.label v = $1f
|
|
.label count = 2
|
|
// [6] (word) rand_seed ← (word) $194a -- vwuz1=vwuc1
|
|
lda #<$194a
|
|
sta.z rand_seed
|
|
lda #>$194a
|
|
sta.z rand_seed+1
|
|
// [7] call makechar
|
|
// [85] phi from main to makechar [phi:main->makechar]
|
|
makechar_from_main:
|
|
jsr makechar
|
|
// [8] phi from main to main::@4 [phi:main->main::@4]
|
|
__b4_from_main:
|
|
jmp __b4
|
|
// main::@4
|
|
__b4:
|
|
// [9] call start
|
|
jsr start
|
|
jmp __b5
|
|
// main::@5
|
|
__b5:
|
|
// [10] (byte) main::block#1 ← *((const byte*) CIA2_PORT_A) -- vbuz1=_deref_pbuc1
|
|
lda CIA2_PORT_A
|
|
sta.z block
|
|
// [11] (byte) main::tmp#1 ← (byte) main::block#1 & (byte) $fc -- vbuz1=vbuz2_band_vbuc1
|
|
lda #$fc
|
|
and.z block
|
|
sta.z tmp
|
|
// [12] *((const byte*) CIA2_PORT_A) ← (byte) main::tmp#1 -- _deref_pbuc1=vbuz1
|
|
lda.z tmp
|
|
sta CIA2_PORT_A
|
|
// [13] (byte) main::v#1 ← *((const byte*) VIC_MEMORY) -- vbuz1=_deref_pbuc1
|
|
lda VIC_MEMORY
|
|
sta.z v
|
|
// [14] phi from main::@5 to main::@1 [phi:main::@5->main::@1]
|
|
__b1_from___b5:
|
|
// [14] phi (word) main::count#2 = (word) $1f4 [phi:main::@5->main::@1#0] -- vwuz1=vwuc1
|
|
lda #<$1f4
|
|
sta.z count
|
|
lda #>$1f4
|
|
sta.z count+1
|
|
jmp __b1
|
|
/* Run the demo until a key was hit */
|
|
// main::@1
|
|
__b1:
|
|
// [15] if((byte) 0!=(word) main::count#2) goto main::@2 -- vwuc1_neq_vwuz1_then_la1
|
|
lda.z count+1
|
|
cmp #>0
|
|
bne __b2_from___b1
|
|
lda.z count
|
|
cmp #<0
|
|
bne __b2_from___b1
|
|
jmp __b3
|
|
// main::@3
|
|
__b3:
|
|
// [16] *((const byte*) VIC_MEMORY) ← (byte) main::v#1 -- _deref_pbuc1=vbuz1
|
|
lda.z v
|
|
sta VIC_MEMORY
|
|
// [17] *((const byte*) CIA2_PORT_A) ← (byte) main::block#1 -- _deref_pbuc1=vbuz1
|
|
lda.z block
|
|
sta CIA2_PORT_A
|
|
// [18] call end
|
|
jsr end
|
|
jmp __breturn
|
|
// main::@return
|
|
__breturn:
|
|
// [19] return
|
|
rts
|
|
// [20] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
|
__b2_from___b1:
|
|
jmp __b2
|
|
// main::@2
|
|
__b2:
|
|
// [21] call doplasma
|
|
// [26] phi from main::@2 to doplasma [phi:main::@2->doplasma]
|
|
doplasma_from___b2:
|
|
// [26] phi (byte*) doplasma::scrn#13 = (const byte*) SCREEN1 [phi:main::@2->doplasma#0] -- pbuz1=pbuc1
|
|
lda #<SCREEN1
|
|
sta.z doplasma.scrn
|
|
lda #>SCREEN1
|
|
sta.z doplasma.scrn+1
|
|
jsr doplasma
|
|
jmp __b6
|
|
// main::@6
|
|
__b6:
|
|
// [22] *((const byte*) VIC_MEMORY) ← (const byte) PAGE1 -- _deref_pbuc1=vbuc2
|
|
lda #PAGE1
|
|
sta VIC_MEMORY
|
|
// [23] call doplasma
|
|
// [26] phi from main::@6 to doplasma [phi:main::@6->doplasma]
|
|
doplasma_from___b6:
|
|
// [26] phi (byte*) doplasma::scrn#13 = (const byte*) SCREEN2 [phi:main::@6->doplasma#0] -- pbuz1=pbuc1
|
|
lda #<SCREEN2
|
|
sta.z doplasma.scrn
|
|
lda #>SCREEN2
|
|
sta.z doplasma.scrn+1
|
|
jsr doplasma
|
|
jmp __b7
|
|
// main::@7
|
|
__b7:
|
|
// [24] *((const byte*) VIC_MEMORY) ← (const byte) PAGE2 -- _deref_pbuc1=vbuc2
|
|
lda #PAGE2
|
|
sta VIC_MEMORY
|
|
// [25] (word) main::count#1 ← -- (word) main::count#2 -- vwuz1=_dec_vwuz1
|
|
lda.z count
|
|
bne !+
|
|
dec.z count+1
|
|
!:
|
|
dec.z count
|
|
// [14] phi from main::@7 to main::@1 [phi:main::@7->main::@1]
|
|
__b1_from___b7:
|
|
// [14] phi (word) main::count#2 = (word) main::count#1 [phi:main::@7->main::@1#0] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// doplasma
|
|
// doplasma(byte* zp($b) scrn)
|
|
doplasma: {
|
|
.const c2A = 0
|
|
.const c2B = 0
|
|
.label __1 = $22
|
|
.label __3 = $21
|
|
.label __6 = $20
|
|
.label c1a = 5
|
|
.label c1b = 6
|
|
.label ii = 4
|
|
.label c2a = 8
|
|
.label c2b = 9
|
|
.label i = 7
|
|
.label j = $d
|
|
.label scrn = $b
|
|
.label jj = $a
|
|
// [27] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1]
|
|
__b1_from_doplasma:
|
|
// [27] phi (byte) doplasma::c1b#3 = (byte) 0 [phi:doplasma->doplasma::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z c1b
|
|
// [27] phi (byte) doplasma::c1a#3 = (byte) 0 [phi:doplasma->doplasma::@1#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z c1a
|
|
// [27] phi (byte) doplasma::ii#3 = (byte) 0 [phi:doplasma->doplasma::@1#2] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z ii
|
|
jmp __b1
|
|
// doplasma::@1
|
|
__b1:
|
|
// [28] if((byte) doplasma::ii#3<(byte) $19) goto doplasma::@2 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z ii
|
|
cmp #$19
|
|
bcc __b2
|
|
// [29] phi from doplasma::@1 to doplasma::@3 [phi:doplasma::@1->doplasma::@3]
|
|
__b3_from___b1:
|
|
// [29] phi (byte) doplasma::c2b#3 = (const byte) doplasma::c2B#0 [phi:doplasma::@1->doplasma::@3#0] -- vbuz1=vbuc1
|
|
lda #c2B
|
|
sta.z c2b
|
|
// [29] phi (byte) doplasma::c2a#3 = (const byte) doplasma::c2A#0 [phi:doplasma::@1->doplasma::@3#1] -- vbuz1=vbuc1
|
|
lda #c2A
|
|
sta.z c2a
|
|
// [29] phi (byte) doplasma::i#3 = (byte) 0 [phi:doplasma::@1->doplasma::@3#2] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z i
|
|
jmp __b3
|
|
// doplasma::@3
|
|
__b3:
|
|
// [30] if((byte) doplasma::i#3<(byte) $28) goto doplasma::@4 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z i
|
|
cmp #$28
|
|
bcc __b4
|
|
// [31] phi from doplasma::@3 to doplasma::@5 [phi:doplasma::@3->doplasma::@5]
|
|
__b5_from___b3:
|
|
// [31] phi (byte*) doplasma::scrn#6 = (byte*) doplasma::scrn#13 [phi:doplasma::@3->doplasma::@5#0] -- register_copy
|
|
// [31] phi (byte) doplasma::jj#3 = (byte) 0 [phi:doplasma::@3->doplasma::@5#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z jj
|
|
jmp __b5
|
|
// doplasma::@5
|
|
__b5:
|
|
// [32] if((byte) doplasma::jj#3<(byte) $19) goto doplasma::@6 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z jj
|
|
cmp #$19
|
|
bcc __b6_from___b5
|
|
jmp __breturn
|
|
// doplasma::@return
|
|
__breturn:
|
|
// [33] return
|
|
rts
|
|
// [34] phi from doplasma::@5 to doplasma::@6 [phi:doplasma::@5->doplasma::@6]
|
|
__b6_from___b5:
|
|
// [34] phi (byte) doplasma::j#3 = (byte) 0 [phi:doplasma::@5->doplasma::@6#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z j
|
|
jmp __b6
|
|
// doplasma::@6
|
|
__b6:
|
|
// [35] if((byte) doplasma::j#3<(byte) $28) goto doplasma::@7 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z j
|
|
cmp #$28
|
|
bcc __b7
|
|
jmp __b8
|
|
// doplasma::@8
|
|
__b8:
|
|
// [36] (byte*) doplasma::scrn#0 ← (byte*) doplasma::scrn#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z scrn
|
|
sta.z scrn
|
|
bcc !+
|
|
inc.z scrn+1
|
|
!:
|
|
// [37] (byte) doplasma::jj#2 ← ++ (byte) doplasma::jj#3 -- vbuz1=_inc_vbuz1
|
|
inc.z jj
|
|
// [31] phi from doplasma::@8 to doplasma::@5 [phi:doplasma::@8->doplasma::@5]
|
|
__b5_from___b8:
|
|
// [31] phi (byte*) doplasma::scrn#6 = (byte*) doplasma::scrn#0 [phi:doplasma::@8->doplasma::@5#0] -- register_copy
|
|
// [31] phi (byte) doplasma::jj#3 = (byte) doplasma::jj#2 [phi:doplasma::@8->doplasma::@5#1] -- register_copy
|
|
jmp __b5
|
|
// doplasma::@7
|
|
__b7:
|
|
// [38] (byte~) doplasma::$6 ← *((const byte*) xbuf + (byte) doplasma::j#3) + *((const byte*) ybuf + (byte) doplasma::jj#3) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc2_derefidx_vbuz3
|
|
ldy.z j
|
|
lda xbuf,y
|
|
ldy.z jj
|
|
clc
|
|
adc ybuf,y
|
|
sta.z __6
|
|
// [39] *((byte*) doplasma::scrn#6 + (byte) doplasma::j#3) ← (byte~) doplasma::$6 -- pbuz1_derefidx_vbuz2=vbuz3
|
|
lda.z __6
|
|
ldy.z j
|
|
sta (scrn),y
|
|
// [40] (byte) doplasma::j#2 ← ++ (byte) doplasma::j#3 -- vbuz1=_inc_vbuz1
|
|
inc.z j
|
|
// [34] phi from doplasma::@7 to doplasma::@6 [phi:doplasma::@7->doplasma::@6]
|
|
__b6_from___b7:
|
|
// [34] phi (byte) doplasma::j#3 = (byte) doplasma::j#2 [phi:doplasma::@7->doplasma::@6#0] -- register_copy
|
|
jmp __b6
|
|
// doplasma::@4
|
|
__b4:
|
|
// [41] (byte~) doplasma::$3 ← *((const byte*) sinustable + (byte) doplasma::c2a#3) + *((const byte*) sinustable + (byte) doplasma::c2b#3) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc1_derefidx_vbuz3
|
|
ldy.z c2a
|
|
lda sinustable,y
|
|
ldy.z c2b
|
|
clc
|
|
adc sinustable,y
|
|
sta.z __3
|
|
// [42] *((const byte*) xbuf + (byte) doplasma::i#3) ← (byte~) doplasma::$3 -- pbuc1_derefidx_vbuz1=vbuz2
|
|
lda.z __3
|
|
ldy.z i
|
|
sta xbuf,y
|
|
// [43] (byte) doplasma::c2a#2 ← (byte) doplasma::c2a#3 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z c2a
|
|
axs #-[3]
|
|
stx.z c2a
|
|
// [44] (byte) doplasma::c2b#2 ← (byte) doplasma::c2b#3 + (byte) 7 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z c2b
|
|
axs #-[7]
|
|
stx.z c2b
|
|
// [45] (byte) doplasma::i#2 ← ++ (byte) doplasma::i#3 -- vbuz1=_inc_vbuz1
|
|
inc.z i
|
|
// [29] phi from doplasma::@4 to doplasma::@3 [phi:doplasma::@4->doplasma::@3]
|
|
__b3_from___b4:
|
|
// [29] phi (byte) doplasma::c2b#3 = (byte) doplasma::c2b#2 [phi:doplasma::@4->doplasma::@3#0] -- register_copy
|
|
// [29] phi (byte) doplasma::c2a#3 = (byte) doplasma::c2a#2 [phi:doplasma::@4->doplasma::@3#1] -- register_copy
|
|
// [29] phi (byte) doplasma::i#3 = (byte) doplasma::i#2 [phi:doplasma::@4->doplasma::@3#2] -- register_copy
|
|
jmp __b3
|
|
// doplasma::@2
|
|
__b2:
|
|
// [46] (byte~) doplasma::$1 ← *((const byte*) sinustable + (byte) doplasma::c1a#3) + *((const byte*) sinustable + (byte) doplasma::c1b#3) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc1_derefidx_vbuz3
|
|
ldy.z c1a
|
|
lda sinustable,y
|
|
ldy.z c1b
|
|
clc
|
|
adc sinustable,y
|
|
sta.z __1
|
|
// [47] *((const byte*) ybuf + (byte) doplasma::ii#3) ← (byte~) doplasma::$1 -- pbuc1_derefidx_vbuz1=vbuz2
|
|
lda.z __1
|
|
ldy.z ii
|
|
sta ybuf,y
|
|
// [48] (byte) doplasma::c1a#2 ← (byte) doplasma::c1a#3 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z c1a
|
|
axs #-[4]
|
|
stx.z c1a
|
|
// [49] (byte) doplasma::c1b#2 ← (byte) doplasma::c1b#3 + (byte) 9 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z c1b
|
|
axs #-[9]
|
|
stx.z c1b
|
|
// [50] (byte) doplasma::ii#2 ← ++ (byte) doplasma::ii#3 -- vbuz1=_inc_vbuz1
|
|
inc.z ii
|
|
// [27] phi from doplasma::@2 to doplasma::@1 [phi:doplasma::@2->doplasma::@1]
|
|
__b1_from___b2:
|
|
// [27] phi (byte) doplasma::c1b#3 = (byte) doplasma::c1b#2 [phi:doplasma::@2->doplasma::@1#0] -- register_copy
|
|
// [27] phi (byte) doplasma::c1a#3 = (byte) doplasma::c1a#2 [phi:doplasma::@2->doplasma::@1#1] -- register_copy
|
|
// [27] phi (byte) doplasma::ii#3 = (byte) doplasma::ii#2 [phi:doplasma::@2->doplasma::@1#2] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// end
|
|
end: {
|
|
// [51] (word) Ticks#1 ← (word) last_time -- vwuz1=vwuz2
|
|
lda.z last_time
|
|
sta.z Ticks
|
|
lda.z last_time+1
|
|
sta.z Ticks+1
|
|
// [52] call start
|
|
jsr start
|
|
jmp __b1
|
|
// end::@1
|
|
__b1:
|
|
// [53] (word) last_time ← (word) last_time - (word) Ticks#1 -- vwuz1=vwuz1_minus_vwuz2
|
|
lda.z last_time
|
|
sec
|
|
sbc.z Ticks
|
|
sta.z last_time
|
|
lda.z last_time+1
|
|
sbc.z Ticks+1
|
|
sta.z last_time+1
|
|
// [54] (word) Ticks#12 ← (word) last_time -- vwuz1=vwuz2
|
|
lda.z last_time
|
|
sta.z Ticks_1
|
|
lda.z last_time+1
|
|
sta.z Ticks_1+1
|
|
// [55] (word) print_word::w#0 ← (word) Ticks#12 -- vwuz1=vwuz2
|
|
lda.z Ticks_1
|
|
sta.z print_word.w
|
|
lda.z Ticks_1+1
|
|
sta.z print_word.w+1
|
|
// [56] call print_word
|
|
jsr print_word
|
|
// [57] phi from end::@1 to end::@2 [phi:end::@1->end::@2]
|
|
__b2_from___b1:
|
|
jmp __b2
|
|
// end::@2
|
|
__b2:
|
|
// [58] call print_ln
|
|
// [60] phi from end::@2 to print_ln [phi:end::@2->print_ln]
|
|
print_ln_from___b2:
|
|
jsr print_ln
|
|
jmp __breturn
|
|
// end::@return
|
|
__breturn:
|
|
// [59] return
|
|
rts
|
|
}
|
|
// print_ln
|
|
// Print a newline
|
|
print_ln: {
|
|
// [61] phi from print_ln to print_ln::@1 [phi:print_ln->print_ln::@1]
|
|
__b1_from_print_ln:
|
|
// [61] phi (byte*) print_line_cursor#8 = (byte*) 1024 [phi:print_ln->print_ln::@1#0] -- pbuz1=pbuc1
|
|
lda #<$400
|
|
sta.z print_line_cursor
|
|
lda #>$400
|
|
sta.z print_line_cursor+1
|
|
jmp __b1
|
|
// [61] phi from print_ln::@1 to print_ln::@1 [phi:print_ln::@1->print_ln::@1]
|
|
__b1_from___b1:
|
|
// [61] phi (byte*) print_line_cursor#8 = (byte*) print_line_cursor#1 [phi:print_ln::@1->print_ln::@1#0] -- register_copy
|
|
jmp __b1
|
|
// print_ln::@1
|
|
__b1:
|
|
// [62] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z print_line_cursor
|
|
sta.z print_line_cursor
|
|
bcc !+
|
|
inc.z print_line_cursor+1
|
|
!:
|
|
// [63] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1
|
|
lda.z print_line_cursor+1
|
|
cmp.z print_char_cursor+1
|
|
bcc __b1_from___b1
|
|
bne !+
|
|
lda.z print_line_cursor
|
|
cmp.z print_char_cursor
|
|
bcc __b1_from___b1
|
|
!:
|
|
jmp __breturn
|
|
// print_ln::@return
|
|
__breturn:
|
|
// [64] return
|
|
rts
|
|
}
|
|
// print_word
|
|
// Print a word as HEX
|
|
// print_word(word zp($27) w)
|
|
print_word: {
|
|
.label w = $27
|
|
// [65] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuz1=_hi_vwuz2
|
|
lda.z w+1
|
|
sta.z print_byte.b
|
|
// [66] call print_byte
|
|
// [70] phi from print_word to print_byte [phi:print_word->print_byte]
|
|
print_byte_from_print_word:
|
|
// [70] phi (byte*) print_char_cursor#35 = (byte*) 1024 [phi:print_word->print_byte#0] -- pbuz1=pbuc1
|
|
lda #<$400
|
|
sta.z print_char_cursor
|
|
lda #>$400
|
|
sta.z print_char_cursor+1
|
|
// [70] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy
|
|
jsr print_byte
|
|
jmp __b1
|
|
// print_word::@1
|
|
__b1:
|
|
// [67] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuz1=_lo_vwuz2
|
|
lda.z w
|
|
sta.z print_byte.b
|
|
// [68] call print_byte
|
|
// [70] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
|
|
print_byte_from___b1:
|
|
// [70] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy
|
|
// [70] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy
|
|
jsr print_byte
|
|
jmp __breturn
|
|
// print_word::@return
|
|
__breturn:
|
|
// [69] return
|
|
rts
|
|
}
|
|
// print_byte
|
|
// Print a byte as HEX
|
|
// print_byte(byte zp($10) b)
|
|
print_byte: {
|
|
.label __0 = $29
|
|
.label __2 = $2a
|
|
.label b = $10
|
|
// [71] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuz1=vbuz2_ror_4
|
|
lda.z b
|
|
lsr
|
|
lsr
|
|
lsr
|
|
lsr
|
|
sta.z __0
|
|
// [72] (byte) print_char::ch#0 ← *((const byte*) print_hextab + (byte~) print_byte::$0) -- vbuz1=pbuc1_derefidx_vbuz2
|
|
ldy.z __0
|
|
lda print_hextab,y
|
|
sta.z print_char.ch
|
|
// [73] call print_char
|
|
// [78] phi from print_byte to print_char [phi:print_byte->print_char]
|
|
print_char_from_print_byte:
|
|
// [78] phi (byte*) print_char_cursor#25 = (byte*) print_char_cursor#35 [phi:print_byte->print_char#0] -- register_copy
|
|
// [78] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy
|
|
jsr print_char
|
|
jmp __b1
|
|
// print_byte::@1
|
|
__b1:
|
|
// [74] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuz1=vbuz2_band_vbuc1
|
|
lda #$f
|
|
and.z b
|
|
sta.z __2
|
|
// [75] (byte) print_char::ch#1 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuz1=pbuc1_derefidx_vbuz2
|
|
ldy.z __2
|
|
lda print_hextab,y
|
|
sta.z print_char.ch
|
|
// [76] call print_char
|
|
// [78] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
|
|
print_char_from___b1:
|
|
// [78] phi (byte*) print_char_cursor#25 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy
|
|
// [78] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy
|
|
jsr print_char
|
|
jmp __breturn
|
|
// print_byte::@return
|
|
__breturn:
|
|
// [77] return
|
|
rts
|
|
}
|
|
// print_char
|
|
// Print a single char
|
|
// print_char(byte zp($11) ch)
|
|
print_char: {
|
|
.label ch = $11
|
|
// [79] *((byte*) print_char_cursor#25) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuz2
|
|
lda.z ch
|
|
ldy #0
|
|
sta (print_char_cursor),y
|
|
// [80] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#25 -- pbuz1=_inc_pbuz1
|
|
inc.z print_char_cursor
|
|
bne !+
|
|
inc.z print_char_cursor+1
|
|
!:
|
|
jmp __breturn
|
|
// print_char::@return
|
|
__breturn:
|
|
// [81] return
|
|
rts
|
|
}
|
|
// start
|
|
start: {
|
|
.label LAST_TIME = last_time
|
|
// asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 }
|
|
jsr $ffde
|
|
sta LAST_TIME
|
|
stx LAST_TIME+1
|
|
// [83] (word) rand_seed ← (word) $194a -- vwuz1=vwuc1
|
|
lda #<$194a
|
|
sta.z rand_seed
|
|
lda #>$194a
|
|
sta.z rand_seed+1
|
|
jmp __breturn
|
|
// start::@return
|
|
__breturn:
|
|
// [84] return
|
|
rts
|
|
}
|
|
// makechar
|
|
makechar: {
|
|
.label __1 = $2b
|
|
.label __4 = $34
|
|
.label __5 = $35
|
|
.label __8 = $2d
|
|
.label __9 = $2f
|
|
.label s = $2c
|
|
.label c = $14
|
|
.label i = $16
|
|
.label ii = $17
|
|
.label b = $18
|
|
.label __10 = $31
|
|
// [86] phi from makechar to makechar::@1 [phi:makechar->makechar::@1]
|
|
__b1_from_makechar:
|
|
// [86] phi (word) makechar::c#3 = (byte) 0 [phi:makechar->makechar::@1#0] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z c
|
|
lda #>0
|
|
sta.z c+1
|
|
jmp __b1
|
|
// makechar::@1
|
|
__b1:
|
|
// [87] if((word) makechar::c#3<(word) $100) goto makechar::@2 -- vwuz1_lt_vwuc1_then_la1
|
|
lda.z c+1
|
|
cmp #>$100
|
|
bcc __b2
|
|
bne !+
|
|
lda.z c
|
|
cmp #<$100
|
|
bcc __b2
|
|
!:
|
|
jmp __breturn
|
|
// makechar::@return
|
|
__breturn:
|
|
// [88] return
|
|
rts
|
|
// makechar::@2
|
|
__b2:
|
|
// [89] (byte~) makechar::$1 ← (byte)(word) makechar::c#3 -- vbuz1=_byte_vwuz2
|
|
lda.z c
|
|
sta.z __1
|
|
// [90] (byte) makechar::s#1 ← *((const byte*) sinustable + (byte~) makechar::$1) -- vbuz1=pbuc1_derefidx_vbuz2
|
|
ldy.z __1
|
|
lda sinustable,y
|
|
sta.z s
|
|
// [91] phi from makechar::@2 to makechar::@3 [phi:makechar::@2->makechar::@3]
|
|
__b3_from___b2:
|
|
// [91] phi (byte) makechar::i#3 = (byte) 0 [phi:makechar::@2->makechar::@3#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z i
|
|
jmp __b3
|
|
// makechar::@3
|
|
__b3:
|
|
// [92] if((byte) makechar::i#3<(byte) 8) goto makechar::@5 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z i
|
|
cmp #8
|
|
bcc __b5_from___b3
|
|
jmp __b4
|
|
// makechar::@4
|
|
__b4:
|
|
// [93] (word) makechar::c#2 ← ++ (word) makechar::c#3 -- vwuz1=_inc_vwuz1
|
|
inc.z c
|
|
bne !+
|
|
inc.z c+1
|
|
!:
|
|
// [86] phi from makechar::@4 to makechar::@1 [phi:makechar::@4->makechar::@1]
|
|
__b1_from___b4:
|
|
// [86] phi (word) makechar::c#3 = (word) makechar::c#2 [phi:makechar::@4->makechar::@1#0] -- register_copy
|
|
jmp __b1
|
|
// [94] phi from makechar::@3 to makechar::@5 [phi:makechar::@3->makechar::@5]
|
|
__b5_from___b3:
|
|
// [94] phi (byte) makechar::b#3 = (byte) 0 [phi:makechar::@3->makechar::@5#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z b
|
|
// [94] phi (byte) makechar::ii#3 = (byte) 0 [phi:makechar::@3->makechar::@5#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z ii
|
|
jmp __b5
|
|
// makechar::@5
|
|
__b5:
|
|
// [95] if((byte) makechar::ii#3<(byte) 8) goto makechar::@6 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z ii
|
|
cmp #8
|
|
bcc __b6_from___b5
|
|
jmp __b7
|
|
// makechar::@7
|
|
__b7:
|
|
// [96] (word~) makechar::$8 ← (word) makechar::c#3 << (byte) 3 -- vwuz1=vwuz2_rol_3
|
|
lda.z c
|
|
asl
|
|
sta.z __8
|
|
lda.z c+1
|
|
rol
|
|
sta.z __8+1
|
|
asl.z __8
|
|
rol.z __8+1
|
|
asl.z __8
|
|
rol.z __8+1
|
|
// [97] (word~) makechar::$9 ← (word~) makechar::$8 + (byte) makechar::i#3 -- vwuz1=vwuz2_plus_vbuz3
|
|
lda.z i
|
|
clc
|
|
adc.z __8
|
|
sta.z __9
|
|
lda #0
|
|
adc.z __8+1
|
|
sta.z __9+1
|
|
// [98] (byte*~) makechar::$10 ← (const byte*) CHARSET + (word~) makechar::$9 -- pbuz1=pbuc1_plus_vwuz2
|
|
lda.z __9
|
|
clc
|
|
adc #<CHARSET
|
|
sta.z __10
|
|
lda.z __9+1
|
|
adc #>CHARSET
|
|
sta.z __10+1
|
|
// [99] *((byte*~) makechar::$10) ← (byte) makechar::b#3 -- _deref_pbuz1=vbuz2
|
|
lda.z b
|
|
ldy #0
|
|
sta (__10),y
|
|
// [100] (byte) makechar::i#2 ← ++ (byte) makechar::i#3 -- vbuz1=_inc_vbuz1
|
|
inc.z i
|
|
// [91] phi from makechar::@7 to makechar::@3 [phi:makechar::@7->makechar::@3]
|
|
__b3_from___b7:
|
|
// [91] phi (byte) makechar::i#3 = (byte) makechar::i#2 [phi:makechar::@7->makechar::@3#0] -- register_copy
|
|
jmp __b3
|
|
// [101] phi from makechar::@5 to makechar::@6 [phi:makechar::@5->makechar::@6]
|
|
__b6_from___b5:
|
|
jmp __b6
|
|
// makechar::@6
|
|
__b6:
|
|
// [102] call rand
|
|
jsr rand
|
|
// [103] (byte) rand::return#2 ← (byte) rand::return#0 -- vbuz1=vbuz2
|
|
lda.z rand.return
|
|
sta.z rand.return_1
|
|
jmp __b10
|
|
// makechar::@10
|
|
__b10:
|
|
// [104] (byte~) makechar::$4 ← (byte) rand::return#2 -- vbuz1=vbuz2
|
|
lda.z rand.return_1
|
|
sta.z __4
|
|
// [105] (byte~) makechar::$5 ← (byte~) makechar::$4 & (byte) $ff -- vbuz1=vbuz2_band_vbuc1
|
|
lda #$ff
|
|
and.z __4
|
|
sta.z __5
|
|
// [106] if((byte~) makechar::$5<=(byte) makechar::s#1) goto makechar::@8 -- vbuz1_le_vbuz2_then_la1
|
|
lda.z s
|
|
cmp.z __5
|
|
bcs __b8_from___b10
|
|
jmp __b9
|
|
// makechar::@9
|
|
__b9:
|
|
// [107] (byte) makechar::b#2 ← (byte) makechar::b#3 | *((const byte*) bittab + (byte) makechar::ii#3) -- vbuz1=vbuz1_bor_pbuc1_derefidx_vbuz2
|
|
lda.z b
|
|
ldy.z ii
|
|
ora bittab,y
|
|
sta.z b
|
|
// [108] phi from makechar::@10 makechar::@9 to makechar::@8 [phi:makechar::@10/makechar::@9->makechar::@8]
|
|
__b8_from___b10:
|
|
__b8_from___b9:
|
|
// [108] phi (byte) makechar::b#7 = (byte) makechar::b#3 [phi:makechar::@10/makechar::@9->makechar::@8#0] -- register_copy
|
|
jmp __b8
|
|
// makechar::@8
|
|
__b8:
|
|
// [109] (byte) makechar::ii#2 ← ++ (byte) makechar::ii#3 -- vbuz1=_inc_vbuz1
|
|
inc.z ii
|
|
// [94] phi from makechar::@8 to makechar::@5 [phi:makechar::@8->makechar::@5]
|
|
__b5_from___b8:
|
|
// [94] phi (byte) makechar::b#3 = (byte) makechar::b#7 [phi:makechar::@8->makechar::@5#0] -- register_copy
|
|
// [94] phi (byte) makechar::ii#3 = (byte) makechar::ii#2 [phi:makechar::@8->makechar::@5#1] -- register_copy
|
|
jmp __b5
|
|
}
|
|
// rand
|
|
rand: {
|
|
.label RAND_SEED = rand_seed
|
|
.label return = $36
|
|
.label return_1 = $33
|
|
// asm { ldx#8 ldaRAND_SEED+0 __rand_loop: asl rolRAND_SEED+1 bcc__no_eor eor#$2D __no_eor: dex bne__rand_loop staRAND_SEED+0 }
|
|
ldx #8
|
|
lda RAND_SEED+0
|
|
__rand_loop:
|
|
asl
|
|
rol RAND_SEED+1
|
|
bcc __no_eor
|
|
eor #$2d
|
|
__no_eor:
|
|
dex
|
|
bne __rand_loop
|
|
sta RAND_SEED+0
|
|
// [111] (byte) rand::return#0 ← (byte)(word) rand_seed -- vbuz1=_byte_vwuz2
|
|
lda.z rand_seed
|
|
sta.z return
|
|
jmp __breturn
|
|
// rand::@return
|
|
__breturn:
|
|
// [112] return
|
|
rts
|
|
}
|
|
// File Data
|
|
print_hextab: .text "0123456789abcdef"
|
|
.align $100
|
|
sinustable: .byte $80, $7d, $7a, $77, $74, $70, $6d, $6a, $67, $64, $61, $5e, $5b, $58, $55, $52, $4f, $4d, $4a, $47, $44, $41, $3f, $3c, $39, $37, $34, $32, $2f, $2d, $2b, $28, $26, $24, $22, $20, $1e, $1c, $1a, $18, $16, $15, $13, $11, $10, $f, $d, $c, $b, $a, 8, 7, 6, 6, 5, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7, 8, $a, $b, $c, $d, $f, $10, $11, $13, $15, $16, $18, $1a, $1c, $1e, $20, $22, $24, $26, $28, $2b, $2d, $2f, $32, $34, $37, $39, $3c, $3f, $41, $44, $47, $4a, $4d, $4f, $52, $55, $58, $5b, $5e, $61, $64, $67, $6a, $6d, $70, $74, $77, $7a, $7d, $80, $83, $86, $89, $8c, $90, $93, $96, $99, $9c, $9f, $a2, $a5, $a8, $ab, $ae, $b1, $b3, $b6, $b9, $bc, $bf, $c1, $c4, $c7, $c9, $cc, $ce, $d1, $d3, $d5, $d8, $da, $dc, $de, $e0, $e2, $e4, $e6, $e8, $ea, $eb, $ed, $ef, $f0, $f1, $f3, $f4, $f5, $f6, $f8, $f9, $fa, $fa, $fb, $fc, $fd, $fd, $fe, $fe, $fe, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $fe, $fe, $fe, $fd, $fd, $fc, $fb, $fa, $fa, $f9, $f8, $f6, $f5, $f4, $f3, $f1, $f0, $ef, $ed, $eb, $ea, $e8, $e6, $e4, $e2, $e0, $de, $dc, $da, $d8, $d5, $d3, $d1, $ce, $cc, $c9, $c7, $c4, $c1, $bf, $bc, $b9, $b6, $b3, $b1, $ae, $ab, $a8, $a5, $a2, $9f, $9c, $99, $96, $93, $90, $8c, $89, $86, $83
|
|
xbuf: .fill $28, 0
|
|
ybuf: .fill $19, 0
|
|
bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80
|
|
|
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
|
Statement [1] (word) last_time ← (word) 0 [ last_time ] ( [ last_time ] ) always clobbers reg byte a
|
|
Statement [2] (word) rand_seed ← (word) 0 [ last_time ] ( [ last_time ] ) always clobbers reg byte a
|
|
Statement [6] (word) rand_seed ← (word) $194a [ last_time rand_seed ] ( main:4 [ last_time rand_seed ] ) always clobbers reg byte a
|
|
Statement [15] if((byte) 0!=(word) main::count#2) goto main::@2 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:29 [ main::block#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:31 [ main::v#1 ]
|
|
Statement [22] *((const byte*) VIC_MEMORY) ← (const byte) PAGE1 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] ) always clobbers reg byte a
|
|
Statement [24] *((const byte*) VIC_MEMORY) ← (const byte) PAGE2 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] ) always clobbers reg byte a
|
|
Statement [25] (word) main::count#1 ← -- (word) main::count#2 [ last_time main::block#1 main::v#1 main::count#1 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#1 ] ) always clobbers reg byte a
|
|
Statement [36] (byte*) doplasma::scrn#0 ← (byte*) doplasma::scrn#6 + (byte) $28 [ doplasma::jj#3 doplasma::scrn#0 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#0 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#0 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:10 [ doplasma::jj#3 doplasma::jj#2 ]
|
|
Statement [38] (byte~) doplasma::$6 ← *((const byte*) xbuf + (byte) doplasma::j#3) + *((const byte*) ybuf + (byte) doplasma::jj#3) [ doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:13 [ doplasma::j#3 doplasma::j#2 ]
|
|
Statement [41] (byte~) doplasma::$3 ← *((const byte*) sinustable + (byte) doplasma::c2a#3) + *((const byte*) sinustable + (byte) doplasma::c2b#3) [ doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:7 [ doplasma::i#3 doplasma::i#2 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:8 [ doplasma::c2a#3 doplasma::c2a#2 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:9 [ doplasma::c2b#3 doplasma::c2b#2 ]
|
|
Statement [43] (byte) doplasma::c2a#2 ← (byte) doplasma::c2a#3 + (byte) 3 [ doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] ) always clobbers reg byte a
|
|
Statement [44] (byte) doplasma::c2b#2 ← (byte) doplasma::c2b#3 + (byte) 7 [ doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] ) always clobbers reg byte a
|
|
Statement [46] (byte~) doplasma::$1 ← *((const byte*) sinustable + (byte) doplasma::c1a#3) + *((const byte*) sinustable + (byte) doplasma::c1b#3) [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ]
|
|
Statement [48] (byte) doplasma::c1a#2 ← (byte) doplasma::c1a#3 + (byte) 4 [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] ) always clobbers reg byte a
|
|
Statement [49] (byte) doplasma::c1b#2 ← (byte) doplasma::c1b#3 + (byte) 9 [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] ) always clobbers reg byte a
|
|
Statement [51] (word) Ticks#1 ← (word) last_time [ last_time Ticks#1 ] ( main:4::end:18 [ last_time Ticks#1 ] ) always clobbers reg byte a
|
|
Statement [53] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time ] ( main:4::end:18 [ last_time ] ) always clobbers reg byte a
|
|
Statement [54] (word) Ticks#12 ← (word) last_time [ Ticks#12 ] ( main:4::end:18 [ Ticks#12 ] ) always clobbers reg byte a
|
|
Statement [55] (word) print_word::w#0 ← (word) Ticks#12 [ print_word::w#0 ] ( main:4::end:18 [ print_word::w#0 ] ) always clobbers reg byte a
|
|
Statement [62] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 [ print_line_cursor#1 print_char_cursor#10 ] ( main:4::end:18::print_ln:58 [ print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a
|
|
Statement [63] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:4::end:18::print_ln:58 [ print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a
|
|
Statement [65] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 ] ( main:4::end:18::print_word:56 [ print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a
|
|
Statement [67] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#10 print_byte::b#1 ] ( main:4::end:18::print_word:56 [ print_char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a
|
|
Statement [71] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ( main:4::end:18::print_word:56::print_byte:66 [ print_word::w#0 print_byte::b#2 print_char_cursor#35 print_byte::$0 ] main:4::end:18::print_word:56::print_byte:68 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
|
|
Statement [74] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:4::end:18::print_word:56::print_byte:66 [ print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:4::end:18::print_word:56::print_byte:68 [ print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a
|
|
Statement [79] *((byte*) print_char_cursor#25) ← (byte) print_char::ch#2 [ print_char_cursor#25 ] ( main:4::end:18::print_word:56::print_byte:66::print_char:73 [ print_word::w#0 print_byte::b#2 print_char_cursor#25 ] main:4::end:18::print_word:56::print_byte:68::print_char:73 [ print_byte::b#2 print_char_cursor#25 ] main:4::end:18::print_word:56::print_byte:66::print_char:76 [ print_word::w#0 print_char_cursor#25 ] main:4::end:18::print_word:56::print_byte:68::print_char:76 [ print_char_cursor#25 ] ) always clobbers reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
|
|
Statement asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 } always clobbers reg byte a reg byte x reg byte y
|
|
Statement [83] (word) rand_seed ← (word) $194a [ ] ( main:4::start:9 [ last_time ] main:4::end:18::start:52 [ last_time Ticks#1 ] ) always clobbers reg byte a
|
|
Statement [87] if((word) makechar::c#3<(word) $100) goto makechar::@2 [ rand_seed makechar::c#3 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 ] ) always clobbers reg byte a
|
|
Statement [89] (byte~) makechar::$1 ← (byte)(word) makechar::c#3 [ rand_seed makechar::c#3 makechar::$1 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::$1 ] ) always clobbers reg byte a
|
|
Statement [96] (word~) makechar::$8 ← (word) makechar::c#3 << (byte) 3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$8 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$8 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:44 [ makechar::s#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:22 [ makechar::i#3 makechar::i#2 ]
|
|
Removing always clobbered register reg byte a as potential for zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ]
|
|
Statement [97] (word~) makechar::$9 ← (word~) makechar::$8 + (byte) makechar::i#3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$9 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$9 ] ) always clobbers reg byte a
|
|
Statement [98] (byte*~) makechar::$10 ← (const byte*) CHARSET + (word~) makechar::$9 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$10 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$10 ] ) always clobbers reg byte a
|
|
Statement [99] *((byte*~) makechar::$10) ← (byte) makechar::b#3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp[1]:44 [ makechar::s#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp[1]:22 [ makechar::i#3 makechar::i#2 ]
|
|
Statement [107] (byte) makechar::b#2 ← (byte) makechar::b#3 | *((const byte*) bittab + (byte) makechar::ii#3) [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#2 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#2 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp[1]:23 [ makechar::ii#3 makechar::ii#2 ]
|
|
Statement asm { ldx#8 ldaRAND_SEED+0 __rand_loop: asl rolRAND_SEED+1 bcc__no_eor eor#$2D __no_eor: dex bne__rand_loop staRAND_SEED+0 } always clobbers reg byte a reg byte x
|
|
Removing always clobbered register reg byte x as potential for zp[1]:44 [ makechar::s#1 ]
|
|
Removing always clobbered register reg byte x as potential for zp[1]:22 [ makechar::i#3 makechar::i#2 ]
|
|
Removing always clobbered register reg byte x as potential for zp[1]:23 [ makechar::ii#3 makechar::ii#2 ]
|
|
Removing always clobbered register reg byte x as potential for zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ]
|
|
Statement [111] (byte) rand::return#0 ← (byte)(word) rand_seed [ rand_seed rand::return#0 ] ( main:4::makechar:7::rand:102 [ last_time makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#3 rand_seed rand::return#0 ] ) always clobbers reg byte a
|
|
Statement [1] (word) last_time ← (word) 0 [ last_time ] ( [ last_time ] ) always clobbers reg byte a
|
|
Statement [2] (word) rand_seed ← (word) 0 [ last_time ] ( [ last_time ] ) always clobbers reg byte a
|
|
Statement [6] (word) rand_seed ← (word) $194a [ last_time rand_seed ] ( main:4 [ last_time rand_seed ] ) always clobbers reg byte a
|
|
Statement [11] (byte) main::tmp#1 ← (byte) main::block#1 & (byte) $fc [ last_time main::block#1 main::tmp#1 ] ( main:4 [ last_time main::block#1 main::tmp#1 ] ) always clobbers reg byte a
|
|
Statement [15] if((byte) 0!=(word) main::count#2) goto main::@2 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] ) always clobbers reg byte a
|
|
Statement [22] *((const byte*) VIC_MEMORY) ← (const byte) PAGE1 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] ) always clobbers reg byte a
|
|
Statement [24] *((const byte*) VIC_MEMORY) ← (const byte) PAGE2 [ last_time main::block#1 main::v#1 main::count#2 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#2 ] ) always clobbers reg byte a
|
|
Statement [25] (word) main::count#1 ← -- (word) main::count#2 [ last_time main::block#1 main::v#1 main::count#1 ] ( main:4 [ last_time main::block#1 main::v#1 main::count#1 ] ) always clobbers reg byte a
|
|
Statement [36] (byte*) doplasma::scrn#0 ← (byte*) doplasma::scrn#6 + (byte) $28 [ doplasma::jj#3 doplasma::scrn#0 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#0 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#0 ] ) always clobbers reg byte a
|
|
Statement [38] (byte~) doplasma::$6 ← *((const byte*) xbuf + (byte) doplasma::j#3) + *((const byte*) ybuf + (byte) doplasma::jj#3) [ doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::jj#3 doplasma::scrn#6 doplasma::j#3 doplasma::$6 ] ) always clobbers reg byte a
|
|
Statement [41] (byte~) doplasma::$3 ← *((const byte*) sinustable + (byte) doplasma::c2a#3) + *((const byte*) sinustable + (byte) doplasma::c2b#3) [ doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#3 doplasma::c2b#3 doplasma::$3 ] ) always clobbers reg byte a
|
|
Statement [43] (byte) doplasma::c2a#2 ← (byte) doplasma::c2a#3 + (byte) 3 [ doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2b#3 doplasma::c2a#2 ] ) always clobbers reg byte a
|
|
Statement [44] (byte) doplasma::c2b#2 ← (byte) doplasma::c2b#3 + (byte) 7 [ doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::i#3 doplasma::c2a#2 doplasma::c2b#2 ] ) always clobbers reg byte a
|
|
Statement [46] (byte~) doplasma::$1 ← *((const byte*) sinustable + (byte) doplasma::c1a#3) + *((const byte*) sinustable + (byte) doplasma::c1b#3) [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#3 doplasma::c1b#3 doplasma::$1 ] ) always clobbers reg byte a
|
|
Statement [48] (byte) doplasma::c1a#2 ← (byte) doplasma::c1a#3 + (byte) 4 [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1b#3 doplasma::c1a#2 ] ) always clobbers reg byte a
|
|
Statement [49] (byte) doplasma::c1b#2 ← (byte) doplasma::c1b#3 + (byte) 9 [ doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] ( main:4::doplasma:21 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] main:4::doplasma:23 [ last_time main::block#1 main::v#1 main::count#2 doplasma::scrn#13 doplasma::ii#3 doplasma::c1a#2 doplasma::c1b#2 ] ) always clobbers reg byte a
|
|
Statement [51] (word) Ticks#1 ← (word) last_time [ last_time Ticks#1 ] ( main:4::end:18 [ last_time Ticks#1 ] ) always clobbers reg byte a
|
|
Statement [53] (word) last_time ← (word) last_time - (word) Ticks#1 [ last_time ] ( main:4::end:18 [ last_time ] ) always clobbers reg byte a
|
|
Statement [54] (word) Ticks#12 ← (word) last_time [ Ticks#12 ] ( main:4::end:18 [ Ticks#12 ] ) always clobbers reg byte a
|
|
Statement [55] (word) print_word::w#0 ← (word) Ticks#12 [ print_word::w#0 ] ( main:4::end:18 [ print_word::w#0 ] ) always clobbers reg byte a
|
|
Statement [62] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 [ print_line_cursor#1 print_char_cursor#10 ] ( main:4::end:18::print_ln:58 [ print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a
|
|
Statement [63] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#10 ] ( main:4::end:18::print_ln:58 [ print_line_cursor#1 print_char_cursor#10 ] ) always clobbers reg byte a
|
|
Statement [65] (byte) print_byte::b#0 ← > (word) print_word::w#0 [ print_word::w#0 print_byte::b#0 ] ( main:4::end:18::print_word:56 [ print_word::w#0 print_byte::b#0 ] ) always clobbers reg byte a
|
|
Statement [67] (byte) print_byte::b#1 ← < (word) print_word::w#0 [ print_char_cursor#10 print_byte::b#1 ] ( main:4::end:18::print_word:56 [ print_char_cursor#10 print_byte::b#1 ] ) always clobbers reg byte a
|
|
Statement [71] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ( main:4::end:18::print_word:56::print_byte:66 [ print_word::w#0 print_byte::b#2 print_char_cursor#35 print_byte::$0 ] main:4::end:18::print_word:56::print_byte:68 [ print_byte::b#2 print_char_cursor#35 print_byte::$0 ] ) always clobbers reg byte a
|
|
Statement [74] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f [ print_char_cursor#10 print_byte::$2 ] ( main:4::end:18::print_word:56::print_byte:66 [ print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:4::end:18::print_word:56::print_byte:68 [ print_char_cursor#10 print_byte::$2 ] ) always clobbers reg byte a
|
|
Statement [79] *((byte*) print_char_cursor#25) ← (byte) print_char::ch#2 [ print_char_cursor#25 ] ( main:4::end:18::print_word:56::print_byte:66::print_char:73 [ print_word::w#0 print_byte::b#2 print_char_cursor#25 ] main:4::end:18::print_word:56::print_byte:68::print_char:73 [ print_byte::b#2 print_char_cursor#25 ] main:4::end:18::print_word:56::print_byte:66::print_char:76 [ print_word::w#0 print_char_cursor#25 ] main:4::end:18::print_word:56::print_byte:68::print_char:76 [ print_char_cursor#25 ] ) always clobbers reg byte y
|
|
Statement asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 } always clobbers reg byte a reg byte x reg byte y
|
|
Statement [83] (word) rand_seed ← (word) $194a [ ] ( main:4::start:9 [ last_time ] main:4::end:18::start:52 [ last_time Ticks#1 ] ) always clobbers reg byte a
|
|
Statement [87] if((word) makechar::c#3<(word) $100) goto makechar::@2 [ rand_seed makechar::c#3 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 ] ) always clobbers reg byte a
|
|
Statement [89] (byte~) makechar::$1 ← (byte)(word) makechar::c#3 [ rand_seed makechar::c#3 makechar::$1 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::$1 ] ) always clobbers reg byte a
|
|
Statement [90] (byte) makechar::s#1 ← *((const byte*) sinustable + (byte~) makechar::$1) [ rand_seed makechar::c#3 makechar::s#1 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 ] ) always clobbers reg byte a
|
|
Statement [92] if((byte) makechar::i#3<(byte) 8) goto makechar::@5 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] ) always clobbers reg byte a
|
|
Statement [96] (word~) makechar::$8 ← (word) makechar::c#3 << (byte) 3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$8 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$8 ] ) always clobbers reg byte a
|
|
Statement [97] (word~) makechar::$9 ← (word~) makechar::$8 + (byte) makechar::i#3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$9 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$9 ] ) always clobbers reg byte a
|
|
Statement [98] (byte*~) makechar::$10 ← (const byte*) CHARSET + (word~) makechar::$9 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$10 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::b#3 makechar::$10 ] ) always clobbers reg byte a
|
|
Statement [99] *((byte*~) makechar::$10) ← (byte) makechar::b#3 [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 ] ) always clobbers reg byte a reg byte y
|
|
Statement [107] (byte) makechar::b#2 ← (byte) makechar::b#3 | *((const byte*) bittab + (byte) makechar::ii#3) [ rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#2 ] ( main:4::makechar:7 [ last_time rand_seed makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#2 ] ) always clobbers reg byte a
|
|
Statement asm { ldx#8 ldaRAND_SEED+0 __rand_loop: asl rolRAND_SEED+1 bcc__no_eor eor#$2D __no_eor: dex bne__rand_loop staRAND_SEED+0 } always clobbers reg byte a reg byte x
|
|
Statement [111] (byte) rand::return#0 ← (byte)(word) rand_seed [ rand_seed rand::return#0 ] ( main:4::makechar:7::rand:102 [ last_time makechar::c#3 makechar::s#1 makechar::i#3 makechar::ii#3 makechar::b#3 rand_seed rand::return#0 ] ) always clobbers reg byte a
|
|
Potential registers zp[2]:2 [ main::count#2 main::count#1 ] : zp[2]:2 ,
|
|
Potential registers zp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ] : zp[1]:4 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ] : zp[1]:5 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ] : zp[1]:6 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:7 [ doplasma::i#3 doplasma::i#2 ] : zp[1]:7 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:8 [ doplasma::c2a#3 doplasma::c2a#2 ] : zp[1]:8 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:9 [ doplasma::c2b#3 doplasma::c2b#2 ] : zp[1]:9 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:10 [ doplasma::jj#3 doplasma::jj#2 ] : zp[1]:10 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:11 [ doplasma::scrn#6 doplasma::scrn#0 doplasma::scrn#13 ] : zp[2]:11 ,
|
|
Potential registers zp[1]:13 [ doplasma::j#3 doplasma::j#2 ] : zp[1]:13 , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:14 [ print_line_cursor#8 print_line_cursor#1 ] : zp[2]:14 ,
|
|
Potential registers zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] : zp[1]:16 , reg byte x ,
|
|
Potential registers zp[1]:17 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] : zp[1]:17 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:18 [ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 ] : zp[2]:18 ,
|
|
Potential registers zp[2]:20 [ makechar::c#3 makechar::c#2 ] : zp[2]:20 ,
|
|
Potential registers zp[1]:22 [ makechar::i#3 makechar::i#2 ] : zp[1]:22 ,
|
|
Potential registers zp[1]:23 [ makechar::ii#3 makechar::ii#2 ] : zp[1]:23 , reg byte y ,
|
|
Potential registers zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ] : zp[1]:24 , reg byte y ,
|
|
Potential registers zp[2]:25 [ last_time ] : zp[2]:25 ,
|
|
Potential registers zp[2]:27 [ rand_seed ] : zp[2]:27 ,
|
|
Potential registers zp[1]:29 [ main::block#1 ] : zp[1]:29 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:30 [ main::tmp#1 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:31 [ main::v#1 ] : zp[1]:31 , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:32 [ doplasma::$6 ] : zp[1]:32 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:33 [ doplasma::$3 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:34 [ doplasma::$1 ] : zp[1]:34 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[2]:35 [ Ticks#1 ] : zp[2]:35 ,
|
|
Potential registers zp[2]:37 [ Ticks#12 ] : zp[2]:37 ,
|
|
Potential registers zp[2]:39 [ print_word::w#0 ] : zp[2]:39 ,
|
|
Potential registers zp[1]:41 [ print_byte::$0 ] : zp[1]:41 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:42 [ print_byte::$2 ] : zp[1]:42 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:43 [ makechar::$1 ] : zp[1]:43 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:44 [ makechar::s#1 ] : zp[1]:44 ,
|
|
Potential registers zp[2]:45 [ makechar::$8 ] : zp[2]:45 ,
|
|
Potential registers zp[2]:47 [ makechar::$9 ] : zp[2]:47 ,
|
|
Potential registers zp[2]:49 [ makechar::$10 ] : zp[2]:49 ,
|
|
Potential registers zp[1]:51 [ rand::return#2 ] : zp[1]:51 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:52 [ makechar::$4 ] : zp[1]:52 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:53 [ makechar::$5 ] : zp[1]:53 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:54 [ rand::return#0 ] : zp[1]:54 , reg byte a , reg byte x , reg byte y ,
|
|
|
|
REGISTER UPLIFT SCOPES
|
|
Uplift Scope [makechar] 3,785.68: zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ] 2,402.4: zp[1]:23 [ makechar::ii#3 makechar::ii#2 ] 2,002: zp[1]:52 [ makechar::$4 ] 2,002: zp[1]:53 [ makechar::$5 ] 225.76: zp[1]:22 [ makechar::i#3 makechar::i#2 ] 202: zp[2]:45 [ makechar::$8 ] 202: zp[2]:47 [ makechar::$9 ] 202: zp[2]:49 [ makechar::$10 ] 53.26: zp[1]:44 [ makechar::s#1 ] 28.09: zp[2]:20 [ makechar::c#3 makechar::c#2 ] 22: zp[1]:43 [ makechar::$1 ]
|
|
Uplift Scope [doplasma] 3,253.25: zp[1]:13 [ doplasma::j#3 doplasma::j#2 ] 2,002: zp[1]:32 [ doplasma::$6 ] 365: zp[1]:10 [ doplasma::jj#3 doplasma::jj#2 ] 294.02: zp[2]:11 [ doplasma::scrn#6 doplasma::scrn#0 doplasma::scrn#13 ] 269.33: zp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ] 269.33: zp[1]:7 [ doplasma::i#3 doplasma::i#2 ] 202: zp[1]:33 [ doplasma::$3 ] 202: zp[1]:34 [ doplasma::$1 ] 161.6: zp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ] 161.6: zp[1]:9 [ doplasma::c2b#3 doplasma::c2b#2 ] 143.08: zp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ] 143.08: zp[1]:8 [ doplasma::c2a#3 doplasma::c2a#2 ]
|
|
Uplift Scope [rand] 2,002: zp[1]:51 [ rand::return#2 ] 334.33: zp[1]:54 [ rand::return#0 ]
|
|
Uplift Scope [] 38.5: zp[2]:14 [ print_line_cursor#8 print_line_cursor#1 ] 6.33: zp[2]:18 [ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 ] 4: zp[2]:37 [ Ticks#12 ] 2: zp[2]:35 [ Ticks#1 ] 0.42: zp[2]:25 [ last_time ] 0.21: zp[2]:27 [ rand_seed ]
|
|
Uplift Scope [main] 26.71: zp[2]:2 [ main::count#2 main::count#1 ] 4: zp[1]:30 [ main::tmp#1 ] 0.46: zp[1]:29 [ main::block#1 ] 0.44: zp[1]:31 [ main::v#1 ]
|
|
Uplift Scope [print_byte] 10: zp[1]:16 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] 4: zp[1]:41 [ print_byte::$0 ] 4: zp[1]:42 [ print_byte::$2 ]
|
|
Uplift Scope [print_char] 14: zp[1]:17 [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
|
|
Uplift Scope [print_word] 2: zp[2]:39 [ print_word::w#0 ]
|
|
Uplift Scope [RADIX]
|
|
Uplift Scope [print_ln]
|
|
Uplift Scope [start]
|
|
Uplift Scope [end]
|
|
|
|
Uplifting [makechar] best 165885 combination zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ] reg byte y [ makechar::ii#3 makechar::ii#2 ] reg byte a [ makechar::$4 ] zp[1]:53 [ makechar::$5 ] zp[1]:22 [ makechar::i#3 makechar::i#2 ] zp[2]:45 [ makechar::$8 ] zp[2]:47 [ makechar::$9 ] zp[2]:49 [ makechar::$10 ] zp[1]:44 [ makechar::s#1 ] zp[2]:20 [ makechar::c#3 makechar::c#2 ] reg byte a [ makechar::$1 ]
|
|
Limited combination testing to 100 combinations of 256 possible.
|
|
Uplifting [doplasma] best 140985 combination reg byte y [ doplasma::j#3 doplasma::j#2 ] reg byte a [ doplasma::$6 ] reg byte x [ doplasma::jj#3 doplasma::jj#2 ] zp[2]:11 [ doplasma::scrn#6 doplasma::scrn#0 doplasma::scrn#13 ] zp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ] zp[1]:7 [ doplasma::i#3 doplasma::i#2 ] zp[1]:33 [ doplasma::$3 ] zp[1]:34 [ doplasma::$1 ] zp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ] zp[1]:9 [ doplasma::c2b#3 doplasma::c2b#2 ] zp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ] zp[1]:8 [ doplasma::c2a#3 doplasma::c2a#2 ]
|
|
Limited combination testing to 100 combinations of 419904 possible.
|
|
Uplifting [rand] best 131982 combination reg byte a [ rand::return#2 ] reg byte a [ rand::return#0 ]
|
|
Uplifting [] best 131982 combination zp[2]:14 [ print_line_cursor#8 print_line_cursor#1 ] zp[2]:18 [ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 ] zp[2]:37 [ Ticks#12 ] zp[2]:35 [ Ticks#1 ] zp[2]:25 [ last_time ] zp[2]:27 [ rand_seed ]
|
|
Uplifting [main] best 131976 combination zp[2]:2 [ main::count#2 main::count#1 ] reg byte a [ main::tmp#1 ] zp[1]:29 [ main::block#1 ] zp[1]:31 [ main::v#1 ]
|
|
Uplifting [print_byte] best 131962 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ]
|
|
Uplifting [print_char] best 131953 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
|
|
Uplifting [print_word] best 131953 combination zp[2]:39 [ print_word::w#0 ]
|
|
Uplifting [RADIX] best 131953 combination
|
|
Uplifting [print_ln] best 131953 combination
|
|
Uplifting [start] best 131953 combination
|
|
Uplifting [end] best 131953 combination
|
|
Attempting to uplift remaining variables inzp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ]
|
|
Uplifting [makechar] best 131953 combination zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ]
|
|
Attempting to uplift remaining variables inzp[1]:53 [ makechar::$5 ]
|
|
Uplifting [makechar] best 131953 combination zp[1]:53 [ makechar::$5 ]
|
|
Attempting to uplift remaining variables inzp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ]
|
|
Uplifting [doplasma] best 131953 combination zp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ]
|
|
Attempting to uplift remaining variables inzp[1]:7 [ doplasma::i#3 doplasma::i#2 ]
|
|
Uplifting [doplasma] best 131953 combination zp[1]:7 [ doplasma::i#3 doplasma::i#2 ]
|
|
Attempting to uplift remaining variables inzp[1]:22 [ makechar::i#3 makechar::i#2 ]
|
|
Uplifting [makechar] best 131953 combination zp[1]:22 [ makechar::i#3 makechar::i#2 ]
|
|
Attempting to uplift remaining variables inzp[1]:33 [ doplasma::$3 ]
|
|
Uplifting [doplasma] best 131353 combination reg byte a [ doplasma::$3 ]
|
|
Attempting to uplift remaining variables inzp[1]:34 [ doplasma::$1 ]
|
|
Uplifting [doplasma] best 130753 combination reg byte a [ doplasma::$1 ]
|
|
Attempting to uplift remaining variables inzp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ]
|
|
Uplifting [doplasma] best 130753 combination zp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ]
|
|
Attempting to uplift remaining variables inzp[1]:9 [ doplasma::c2b#3 doplasma::c2b#2 ]
|
|
Uplifting [doplasma] best 130753 combination zp[1]:9 [ doplasma::c2b#3 doplasma::c2b#2 ]
|
|
Attempting to uplift remaining variables inzp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ]
|
|
Uplifting [doplasma] best 130753 combination zp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ]
|
|
Attempting to uplift remaining variables inzp[1]:8 [ doplasma::c2a#3 doplasma::c2a#2 ]
|
|
Uplifting [doplasma] best 130753 combination zp[1]:8 [ doplasma::c2a#3 doplasma::c2a#2 ]
|
|
Attempting to uplift remaining variables inzp[1]:44 [ makechar::s#1 ]
|
|
Uplifting [makechar] best 130753 combination zp[1]:44 [ makechar::s#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:29 [ main::block#1 ]
|
|
Uplifting [main] best 130753 combination zp[1]:29 [ main::block#1 ]
|
|
Attempting to uplift remaining variables inzp[1]:31 [ main::v#1 ]
|
|
Uplifting [main] best 130753 combination zp[1]:31 [ main::v#1 ]
|
|
Coalescing zero page register [ zp[2]:37 [ Ticks#12 ] ] with [ zp[2]:39 [ print_word::w#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:45 [ makechar::$8 ] ] with [ zp[2]:47 [ makechar::$9 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:45 [ makechar::$8 makechar::$9 ] ] with [ zp[2]:49 [ makechar::$10 ] ] - score: 1
|
|
Coalescing zero page register [ zp[2]:14 [ print_line_cursor#8 print_line_cursor#1 ] ] with [ zp[2]:2 [ main::count#2 main::count#1 ] ]
|
|
Coalescing zero page register [ zp[2]:18 [ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 ] ] with [ zp[2]:11 [ doplasma::scrn#6 doplasma::scrn#0 doplasma::scrn#13 ] ]
|
|
Coalescing zero page register [ zp[1]:22 [ makechar::i#3 makechar::i#2 ] ] with [ zp[1]:4 [ doplasma::ii#3 doplasma::ii#2 ] ]
|
|
Coalescing zero page register [ zp[1]:24 [ makechar::b#3 makechar::b#7 makechar::b#2 ] ] with [ zp[1]:5 [ doplasma::c1a#3 doplasma::c1a#2 ] ]
|
|
Coalescing zero page register [ zp[2]:35 [ Ticks#1 ] ] with [ zp[2]:20 [ makechar::c#3 makechar::c#2 ] ]
|
|
Coalescing zero page register [ zp[1]:44 [ makechar::s#1 ] ] with [ zp[1]:6 [ doplasma::c1b#3 doplasma::c1b#2 ] ]
|
|
Coalescing zero page register [ zp[2]:45 [ makechar::$8 makechar::$9 makechar::$10 ] ] with [ zp[2]:37 [ Ticks#12 print_word::w#0 ] ]
|
|
Coalescing zero page register [ zp[1]:53 [ makechar::$5 ] ] with [ zp[1]:7 [ doplasma::i#3 doplasma::i#2 ] ]
|
|
Allocated (was zp[1]:8) zp[1]:2 [ doplasma::c2a#3 doplasma::c2a#2 ]
|
|
Allocated (was zp[1]:9) zp[1]:3 [ doplasma::c2b#3 doplasma::c2b#2 ]
|
|
Allocated (was zp[2]:14) zp[2]:4 [ print_line_cursor#8 print_line_cursor#1 main::count#2 main::count#1 ]
|
|
Allocated (was zp[2]:18) zp[2]:6 [ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 doplasma::scrn#6 doplasma::scrn#0 doplasma::scrn#13 ]
|
|
Allocated (was zp[1]:22) zp[1]:8 [ makechar::i#3 makechar::i#2 doplasma::ii#3 doplasma::ii#2 ]
|
|
Allocated (was zp[1]:24) zp[1]:9 [ makechar::b#3 makechar::b#7 makechar::b#2 doplasma::c1a#3 doplasma::c1a#2 ]
|
|
Allocated (was zp[2]:25) zp[2]:10 [ last_time ]
|
|
Allocated (was zp[2]:27) zp[2]:12 [ rand_seed ]
|
|
Allocated (was zp[1]:29) zp[1]:14 [ main::block#1 ]
|
|
Allocated (was zp[1]:31) zp[1]:15 [ main::v#1 ]
|
|
Allocated (was zp[2]:35) zp[2]:16 [ Ticks#1 makechar::c#3 makechar::c#2 ]
|
|
Allocated (was zp[1]:44) zp[1]:18 [ makechar::s#1 doplasma::c1b#3 doplasma::c1b#2 ]
|
|
Allocated (was zp[2]:45) zp[2]:19 [ makechar::$8 makechar::$9 makechar::$10 Ticks#12 print_word::w#0 ]
|
|
Allocated (was zp[1]:53) zp[1]:21 [ makechar::$5 doplasma::i#3 doplasma::i#2 ]
|
|
|
|
ASSEMBLER BEFORE OPTIMIZATION
|
|
// File Comments
|
|
// Upstart
|
|
.pc = $801 "Basic"
|
|
:BasicUpstart(__bbegin)
|
|
.pc = $80d "Program"
|
|
// Global Constants & labels
|
|
.label VIC_MEMORY = $d018
|
|
// CIA#2 Port A: Serial bus, RS-232, VIC memory bank
|
|
.label CIA2_PORT_A = $dd00
|
|
.label SCREEN1 = $e000
|
|
.label SCREEN2 = $e400
|
|
.label CHARSET = $e800
|
|
.const PAGE1 = SCREEN1>>6&$f0|CHARSET>>$a&$e
|
|
.const PAGE2 = SCREEN2>>6&$f0|CHARSET>>$a&$e
|
|
.label last_time = $a
|
|
.label rand_seed = $c
|
|
.label print_line_cursor = 4
|
|
.label print_char_cursor = 6
|
|
.label Ticks = $10
|
|
.label Ticks_1 = $13
|
|
// @begin
|
|
__bbegin:
|
|
jmp __b1
|
|
// @1
|
|
__b1:
|
|
// [1] (word) last_time ← (word) 0 -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z last_time
|
|
lda #>0
|
|
sta.z last_time+1
|
|
jmp __b2
|
|
// @2
|
|
__b2:
|
|
// [2] (word) rand_seed ← (word) 0 -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z rand_seed
|
|
lda #>0
|
|
sta.z rand_seed+1
|
|
// [3] phi from @2 to @3 [phi:@2->@3]
|
|
__b3_from___b2:
|
|
jmp __b3
|
|
// @3
|
|
__b3:
|
|
// [4] call main
|
|
jsr main
|
|
// [5] phi from @3 to @end [phi:@3->@end]
|
|
__bend_from___b3:
|
|
jmp __bend
|
|
// @end
|
|
__bend:
|
|
// main
|
|
main: {
|
|
.label block = $e
|
|
.label v = $f
|
|
.label count = 4
|
|
// [6] (word) rand_seed ← (word) $194a -- vwuz1=vwuc1
|
|
lda #<$194a
|
|
sta.z rand_seed
|
|
lda #>$194a
|
|
sta.z rand_seed+1
|
|
// [7] call makechar
|
|
// [85] phi from main to makechar [phi:main->makechar]
|
|
makechar_from_main:
|
|
jsr makechar
|
|
// [8] phi from main to main::@4 [phi:main->main::@4]
|
|
__b4_from_main:
|
|
jmp __b4
|
|
// main::@4
|
|
__b4:
|
|
// [9] call start
|
|
jsr start
|
|
jmp __b5
|
|
// main::@5
|
|
__b5:
|
|
// [10] (byte) main::block#1 ← *((const byte*) CIA2_PORT_A) -- vbuz1=_deref_pbuc1
|
|
lda CIA2_PORT_A
|
|
sta.z block
|
|
// [11] (byte) main::tmp#1 ← (byte) main::block#1 & (byte) $fc -- vbuaa=vbuz1_band_vbuc1
|
|
lda #$fc
|
|
and.z block
|
|
// [12] *((const byte*) CIA2_PORT_A) ← (byte) main::tmp#1 -- _deref_pbuc1=vbuaa
|
|
sta CIA2_PORT_A
|
|
// [13] (byte) main::v#1 ← *((const byte*) VIC_MEMORY) -- vbuz1=_deref_pbuc1
|
|
lda VIC_MEMORY
|
|
sta.z v
|
|
// [14] phi from main::@5 to main::@1 [phi:main::@5->main::@1]
|
|
__b1_from___b5:
|
|
// [14] phi (word) main::count#2 = (word) $1f4 [phi:main::@5->main::@1#0] -- vwuz1=vwuc1
|
|
lda #<$1f4
|
|
sta.z count
|
|
lda #>$1f4
|
|
sta.z count+1
|
|
jmp __b1
|
|
/* Run the demo until a key was hit */
|
|
// main::@1
|
|
__b1:
|
|
// [15] if((byte) 0!=(word) main::count#2) goto main::@2 -- vwuc1_neq_vwuz1_then_la1
|
|
lda.z count+1
|
|
cmp #>0
|
|
bne __b2_from___b1
|
|
lda.z count
|
|
cmp #<0
|
|
bne __b2_from___b1
|
|
jmp __b3
|
|
// main::@3
|
|
__b3:
|
|
// [16] *((const byte*) VIC_MEMORY) ← (byte) main::v#1 -- _deref_pbuc1=vbuz1
|
|
lda.z v
|
|
sta VIC_MEMORY
|
|
// [17] *((const byte*) CIA2_PORT_A) ← (byte) main::block#1 -- _deref_pbuc1=vbuz1
|
|
lda.z block
|
|
sta CIA2_PORT_A
|
|
// [18] call end
|
|
jsr end
|
|
jmp __breturn
|
|
// main::@return
|
|
__breturn:
|
|
// [19] return
|
|
rts
|
|
// [20] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
|
__b2_from___b1:
|
|
jmp __b2
|
|
// main::@2
|
|
__b2:
|
|
// [21] call doplasma
|
|
// [26] phi from main::@2 to doplasma [phi:main::@2->doplasma]
|
|
doplasma_from___b2:
|
|
// [26] phi (byte*) doplasma::scrn#13 = (const byte*) SCREEN1 [phi:main::@2->doplasma#0] -- pbuz1=pbuc1
|
|
lda #<SCREEN1
|
|
sta.z doplasma.scrn
|
|
lda #>SCREEN1
|
|
sta.z doplasma.scrn+1
|
|
jsr doplasma
|
|
jmp __b6
|
|
// main::@6
|
|
__b6:
|
|
// [22] *((const byte*) VIC_MEMORY) ← (const byte) PAGE1 -- _deref_pbuc1=vbuc2
|
|
lda #PAGE1
|
|
sta VIC_MEMORY
|
|
// [23] call doplasma
|
|
// [26] phi from main::@6 to doplasma [phi:main::@6->doplasma]
|
|
doplasma_from___b6:
|
|
// [26] phi (byte*) doplasma::scrn#13 = (const byte*) SCREEN2 [phi:main::@6->doplasma#0] -- pbuz1=pbuc1
|
|
lda #<SCREEN2
|
|
sta.z doplasma.scrn
|
|
lda #>SCREEN2
|
|
sta.z doplasma.scrn+1
|
|
jsr doplasma
|
|
jmp __b7
|
|
// main::@7
|
|
__b7:
|
|
// [24] *((const byte*) VIC_MEMORY) ← (const byte) PAGE2 -- _deref_pbuc1=vbuc2
|
|
lda #PAGE2
|
|
sta VIC_MEMORY
|
|
// [25] (word) main::count#1 ← -- (word) main::count#2 -- vwuz1=_dec_vwuz1
|
|
lda.z count
|
|
bne !+
|
|
dec.z count+1
|
|
!:
|
|
dec.z count
|
|
// [14] phi from main::@7 to main::@1 [phi:main::@7->main::@1]
|
|
__b1_from___b7:
|
|
// [14] phi (word) main::count#2 = (word) main::count#1 [phi:main::@7->main::@1#0] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// doplasma
|
|
// doplasma(byte* zp(6) scrn)
|
|
doplasma: {
|
|
.const c2A = 0
|
|
.const c2B = 0
|
|
.label c1a = 9
|
|
.label c1b = $12
|
|
.label ii = 8
|
|
.label c2a = 2
|
|
.label c2b = 3
|
|
.label i = $15
|
|
.label scrn = 6
|
|
// [27] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1]
|
|
__b1_from_doplasma:
|
|
// [27] phi (byte) doplasma::c1b#3 = (byte) 0 [phi:doplasma->doplasma::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z c1b
|
|
// [27] phi (byte) doplasma::c1a#3 = (byte) 0 [phi:doplasma->doplasma::@1#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z c1a
|
|
// [27] phi (byte) doplasma::ii#3 = (byte) 0 [phi:doplasma->doplasma::@1#2] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z ii
|
|
jmp __b1
|
|
// doplasma::@1
|
|
__b1:
|
|
// [28] if((byte) doplasma::ii#3<(byte) $19) goto doplasma::@2 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z ii
|
|
cmp #$19
|
|
bcc __b2
|
|
// [29] phi from doplasma::@1 to doplasma::@3 [phi:doplasma::@1->doplasma::@3]
|
|
__b3_from___b1:
|
|
// [29] phi (byte) doplasma::c2b#3 = (const byte) doplasma::c2B#0 [phi:doplasma::@1->doplasma::@3#0] -- vbuz1=vbuc1
|
|
lda #c2B
|
|
sta.z c2b
|
|
// [29] phi (byte) doplasma::c2a#3 = (const byte) doplasma::c2A#0 [phi:doplasma::@1->doplasma::@3#1] -- vbuz1=vbuc1
|
|
lda #c2A
|
|
sta.z c2a
|
|
// [29] phi (byte) doplasma::i#3 = (byte) 0 [phi:doplasma::@1->doplasma::@3#2] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z i
|
|
jmp __b3
|
|
// doplasma::@3
|
|
__b3:
|
|
// [30] if((byte) doplasma::i#3<(byte) $28) goto doplasma::@4 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z i
|
|
cmp #$28
|
|
bcc __b4
|
|
// [31] phi from doplasma::@3 to doplasma::@5 [phi:doplasma::@3->doplasma::@5]
|
|
__b5_from___b3:
|
|
// [31] phi (byte*) doplasma::scrn#6 = (byte*) doplasma::scrn#13 [phi:doplasma::@3->doplasma::@5#0] -- register_copy
|
|
// [31] phi (byte) doplasma::jj#3 = (byte) 0 [phi:doplasma::@3->doplasma::@5#1] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp __b5
|
|
// doplasma::@5
|
|
__b5:
|
|
// [32] if((byte) doplasma::jj#3<(byte) $19) goto doplasma::@6 -- vbuxx_lt_vbuc1_then_la1
|
|
cpx #$19
|
|
bcc __b6_from___b5
|
|
jmp __breturn
|
|
// doplasma::@return
|
|
__breturn:
|
|
// [33] return
|
|
rts
|
|
// [34] phi from doplasma::@5 to doplasma::@6 [phi:doplasma::@5->doplasma::@6]
|
|
__b6_from___b5:
|
|
// [34] phi (byte) doplasma::j#3 = (byte) 0 [phi:doplasma::@5->doplasma::@6#0] -- vbuyy=vbuc1
|
|
ldy #0
|
|
jmp __b6
|
|
// doplasma::@6
|
|
__b6:
|
|
// [35] if((byte) doplasma::j#3<(byte) $28) goto doplasma::@7 -- vbuyy_lt_vbuc1_then_la1
|
|
cpy #$28
|
|
bcc __b7
|
|
jmp __b8
|
|
// doplasma::@8
|
|
__b8:
|
|
// [36] (byte*) doplasma::scrn#0 ← (byte*) doplasma::scrn#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z scrn
|
|
sta.z scrn
|
|
bcc !+
|
|
inc.z scrn+1
|
|
!:
|
|
// [37] (byte) doplasma::jj#2 ← ++ (byte) doplasma::jj#3 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [31] phi from doplasma::@8 to doplasma::@5 [phi:doplasma::@8->doplasma::@5]
|
|
__b5_from___b8:
|
|
// [31] phi (byte*) doplasma::scrn#6 = (byte*) doplasma::scrn#0 [phi:doplasma::@8->doplasma::@5#0] -- register_copy
|
|
// [31] phi (byte) doplasma::jj#3 = (byte) doplasma::jj#2 [phi:doplasma::@8->doplasma::@5#1] -- register_copy
|
|
jmp __b5
|
|
// doplasma::@7
|
|
__b7:
|
|
// [38] (byte~) doplasma::$6 ← *((const byte*) xbuf + (byte) doplasma::j#3) + *((const byte*) ybuf + (byte) doplasma::jj#3) -- vbuaa=pbuc1_derefidx_vbuyy_plus_pbuc2_derefidx_vbuxx
|
|
lda xbuf,y
|
|
clc
|
|
adc ybuf,x
|
|
// [39] *((byte*) doplasma::scrn#6 + (byte) doplasma::j#3) ← (byte~) doplasma::$6 -- pbuz1_derefidx_vbuyy=vbuaa
|
|
sta (scrn),y
|
|
// [40] (byte) doplasma::j#2 ← ++ (byte) doplasma::j#3 -- vbuyy=_inc_vbuyy
|
|
iny
|
|
// [34] phi from doplasma::@7 to doplasma::@6 [phi:doplasma::@7->doplasma::@6]
|
|
__b6_from___b7:
|
|
// [34] phi (byte) doplasma::j#3 = (byte) doplasma::j#2 [phi:doplasma::@7->doplasma::@6#0] -- register_copy
|
|
jmp __b6
|
|
// doplasma::@4
|
|
__b4:
|
|
// [41] (byte~) doplasma::$3 ← *((const byte*) sinustable + (byte) doplasma::c2a#3) + *((const byte*) sinustable + (byte) doplasma::c2b#3) -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc1_derefidx_vbuz2
|
|
ldy.z c2a
|
|
lda sinustable,y
|
|
ldy.z c2b
|
|
clc
|
|
adc sinustable,y
|
|
// [42] *((const byte*) xbuf + (byte) doplasma::i#3) ← (byte~) doplasma::$3 -- pbuc1_derefidx_vbuz1=vbuaa
|
|
ldy.z i
|
|
sta xbuf,y
|
|
// [43] (byte) doplasma::c2a#2 ← (byte) doplasma::c2a#3 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z c2a
|
|
axs #-[3]
|
|
stx.z c2a
|
|
// [44] (byte) doplasma::c2b#2 ← (byte) doplasma::c2b#3 + (byte) 7 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z c2b
|
|
axs #-[7]
|
|
stx.z c2b
|
|
// [45] (byte) doplasma::i#2 ← ++ (byte) doplasma::i#3 -- vbuz1=_inc_vbuz1
|
|
inc.z i
|
|
// [29] phi from doplasma::@4 to doplasma::@3 [phi:doplasma::@4->doplasma::@3]
|
|
__b3_from___b4:
|
|
// [29] phi (byte) doplasma::c2b#3 = (byte) doplasma::c2b#2 [phi:doplasma::@4->doplasma::@3#0] -- register_copy
|
|
// [29] phi (byte) doplasma::c2a#3 = (byte) doplasma::c2a#2 [phi:doplasma::@4->doplasma::@3#1] -- register_copy
|
|
// [29] phi (byte) doplasma::i#3 = (byte) doplasma::i#2 [phi:doplasma::@4->doplasma::@3#2] -- register_copy
|
|
jmp __b3
|
|
// doplasma::@2
|
|
__b2:
|
|
// [46] (byte~) doplasma::$1 ← *((const byte*) sinustable + (byte) doplasma::c1a#3) + *((const byte*) sinustable + (byte) doplasma::c1b#3) -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc1_derefidx_vbuz2
|
|
ldy.z c1a
|
|
lda sinustable,y
|
|
ldy.z c1b
|
|
clc
|
|
adc sinustable,y
|
|
// [47] *((const byte*) ybuf + (byte) doplasma::ii#3) ← (byte~) doplasma::$1 -- pbuc1_derefidx_vbuz1=vbuaa
|
|
ldy.z ii
|
|
sta ybuf,y
|
|
// [48] (byte) doplasma::c1a#2 ← (byte) doplasma::c1a#3 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z c1a
|
|
axs #-[4]
|
|
stx.z c1a
|
|
// [49] (byte) doplasma::c1b#2 ← (byte) doplasma::c1b#3 + (byte) 9 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z c1b
|
|
axs #-[9]
|
|
stx.z c1b
|
|
// [50] (byte) doplasma::ii#2 ← ++ (byte) doplasma::ii#3 -- vbuz1=_inc_vbuz1
|
|
inc.z ii
|
|
// [27] phi from doplasma::@2 to doplasma::@1 [phi:doplasma::@2->doplasma::@1]
|
|
__b1_from___b2:
|
|
// [27] phi (byte) doplasma::c1b#3 = (byte) doplasma::c1b#2 [phi:doplasma::@2->doplasma::@1#0] -- register_copy
|
|
// [27] phi (byte) doplasma::c1a#3 = (byte) doplasma::c1a#2 [phi:doplasma::@2->doplasma::@1#1] -- register_copy
|
|
// [27] phi (byte) doplasma::ii#3 = (byte) doplasma::ii#2 [phi:doplasma::@2->doplasma::@1#2] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// end
|
|
end: {
|
|
// [51] (word) Ticks#1 ← (word) last_time -- vwuz1=vwuz2
|
|
lda.z last_time
|
|
sta.z Ticks
|
|
lda.z last_time+1
|
|
sta.z Ticks+1
|
|
// [52] call start
|
|
jsr start
|
|
jmp __b1
|
|
// end::@1
|
|
__b1:
|
|
// [53] (word) last_time ← (word) last_time - (word) Ticks#1 -- vwuz1=vwuz1_minus_vwuz2
|
|
lda.z last_time
|
|
sec
|
|
sbc.z Ticks
|
|
sta.z last_time
|
|
lda.z last_time+1
|
|
sbc.z Ticks+1
|
|
sta.z last_time+1
|
|
// [54] (word) Ticks#12 ← (word) last_time -- vwuz1=vwuz2
|
|
lda.z last_time
|
|
sta.z Ticks_1
|
|
lda.z last_time+1
|
|
sta.z Ticks_1+1
|
|
// [55] (word) print_word::w#0 ← (word) Ticks#12
|
|
// [56] call print_word
|
|
jsr print_word
|
|
// [57] phi from end::@1 to end::@2 [phi:end::@1->end::@2]
|
|
__b2_from___b1:
|
|
jmp __b2
|
|
// end::@2
|
|
__b2:
|
|
// [58] call print_ln
|
|
// [60] phi from end::@2 to print_ln [phi:end::@2->print_ln]
|
|
print_ln_from___b2:
|
|
jsr print_ln
|
|
jmp __breturn
|
|
// end::@return
|
|
__breturn:
|
|
// [59] return
|
|
rts
|
|
}
|
|
// print_ln
|
|
// Print a newline
|
|
print_ln: {
|
|
// [61] phi from print_ln to print_ln::@1 [phi:print_ln->print_ln::@1]
|
|
__b1_from_print_ln:
|
|
// [61] phi (byte*) print_line_cursor#8 = (byte*) 1024 [phi:print_ln->print_ln::@1#0] -- pbuz1=pbuc1
|
|
lda #<$400
|
|
sta.z print_line_cursor
|
|
lda #>$400
|
|
sta.z print_line_cursor+1
|
|
jmp __b1
|
|
// [61] phi from print_ln::@1 to print_ln::@1 [phi:print_ln::@1->print_ln::@1]
|
|
__b1_from___b1:
|
|
// [61] phi (byte*) print_line_cursor#8 = (byte*) print_line_cursor#1 [phi:print_ln::@1->print_ln::@1#0] -- register_copy
|
|
jmp __b1
|
|
// print_ln::@1
|
|
__b1:
|
|
// [62] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z print_line_cursor
|
|
sta.z print_line_cursor
|
|
bcc !+
|
|
inc.z print_line_cursor+1
|
|
!:
|
|
// [63] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1
|
|
lda.z print_line_cursor+1
|
|
cmp.z print_char_cursor+1
|
|
bcc __b1_from___b1
|
|
bne !+
|
|
lda.z print_line_cursor
|
|
cmp.z print_char_cursor
|
|
bcc __b1_from___b1
|
|
!:
|
|
jmp __breturn
|
|
// print_ln::@return
|
|
__breturn:
|
|
// [64] return
|
|
rts
|
|
}
|
|
// print_word
|
|
// Print a word as HEX
|
|
// print_word(word zp($13) w)
|
|
print_word: {
|
|
.label w = $13
|
|
// [65] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1
|
|
lda.z w+1
|
|
tax
|
|
// [66] call print_byte
|
|
// [70] phi from print_word to print_byte [phi:print_word->print_byte]
|
|
print_byte_from_print_word:
|
|
// [70] phi (byte*) print_char_cursor#35 = (byte*) 1024 [phi:print_word->print_byte#0] -- pbuz1=pbuc1
|
|
lda #<$400
|
|
sta.z print_char_cursor
|
|
lda #>$400
|
|
sta.z print_char_cursor+1
|
|
// [70] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy
|
|
jsr print_byte
|
|
jmp __b1
|
|
// print_word::@1
|
|
__b1:
|
|
// [67] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1
|
|
lda.z w
|
|
tax
|
|
// [68] call print_byte
|
|
// [70] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
|
|
print_byte_from___b1:
|
|
// [70] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy
|
|
// [70] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy
|
|
jsr print_byte
|
|
jmp __breturn
|
|
// print_word::@return
|
|
__breturn:
|
|
// [69] return
|
|
rts
|
|
}
|
|
// print_byte
|
|
// Print a byte as HEX
|
|
// print_byte(byte register(X) b)
|
|
print_byte: {
|
|
// [71] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4
|
|
txa
|
|
lsr
|
|
lsr
|
|
lsr
|
|
lsr
|
|
// [72] (byte) print_char::ch#0 ← *((const byte*) print_hextab + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa
|
|
tay
|
|
lda print_hextab,y
|
|
// [73] call print_char
|
|
// [78] phi from print_byte to print_char [phi:print_byte->print_char]
|
|
print_char_from_print_byte:
|
|
// [78] phi (byte*) print_char_cursor#25 = (byte*) print_char_cursor#35 [phi:print_byte->print_char#0] -- register_copy
|
|
// [78] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy
|
|
jsr print_char
|
|
jmp __b1
|
|
// print_byte::@1
|
|
__b1:
|
|
// [74] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1
|
|
lda #$f
|
|
axs #0
|
|
// [75] (byte) print_char::ch#1 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx
|
|
lda print_hextab,x
|
|
// [76] call print_char
|
|
// [78] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
|
|
print_char_from___b1:
|
|
// [78] phi (byte*) print_char_cursor#25 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy
|
|
// [78] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy
|
|
jsr print_char
|
|
jmp __breturn
|
|
// print_byte::@return
|
|
__breturn:
|
|
// [77] return
|
|
rts
|
|
}
|
|
// print_char
|
|
// Print a single char
|
|
// print_char(byte register(A) ch)
|
|
print_char: {
|
|
// [79] *((byte*) print_char_cursor#25) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuaa
|
|
ldy #0
|
|
sta (print_char_cursor),y
|
|
// [80] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#25 -- pbuz1=_inc_pbuz1
|
|
inc.z print_char_cursor
|
|
bne !+
|
|
inc.z print_char_cursor+1
|
|
!:
|
|
jmp __breturn
|
|
// print_char::@return
|
|
__breturn:
|
|
// [81] return
|
|
rts
|
|
}
|
|
// start
|
|
start: {
|
|
.label LAST_TIME = last_time
|
|
// asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 }
|
|
jsr $ffde
|
|
sta LAST_TIME
|
|
stx LAST_TIME+1
|
|
// [83] (word) rand_seed ← (word) $194a -- vwuz1=vwuc1
|
|
lda #<$194a
|
|
sta.z rand_seed
|
|
lda #>$194a
|
|
sta.z rand_seed+1
|
|
jmp __breturn
|
|
// start::@return
|
|
__breturn:
|
|
// [84] return
|
|
rts
|
|
}
|
|
// makechar
|
|
makechar: {
|
|
.label __5 = $15
|
|
.label __8 = $13
|
|
.label __9 = $13
|
|
.label s = $12
|
|
.label c = $10
|
|
.label i = 8
|
|
.label b = 9
|
|
.label __10 = $13
|
|
// [86] phi from makechar to makechar::@1 [phi:makechar->makechar::@1]
|
|
__b1_from_makechar:
|
|
// [86] phi (word) makechar::c#3 = (byte) 0 [phi:makechar->makechar::@1#0] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z c
|
|
lda #>0
|
|
sta.z c+1
|
|
jmp __b1
|
|
// makechar::@1
|
|
__b1:
|
|
// [87] if((word) makechar::c#3<(word) $100) goto makechar::@2 -- vwuz1_lt_vwuc1_then_la1
|
|
lda.z c+1
|
|
cmp #>$100
|
|
bcc __b2
|
|
bne !+
|
|
lda.z c
|
|
cmp #<$100
|
|
bcc __b2
|
|
!:
|
|
jmp __breturn
|
|
// makechar::@return
|
|
__breturn:
|
|
// [88] return
|
|
rts
|
|
// makechar::@2
|
|
__b2:
|
|
// [89] (byte~) makechar::$1 ← (byte)(word) makechar::c#3 -- vbuaa=_byte_vwuz1
|
|
lda.z c
|
|
// [90] (byte) makechar::s#1 ← *((const byte*) sinustable + (byte~) makechar::$1) -- vbuz1=pbuc1_derefidx_vbuaa
|
|
tay
|
|
lda sinustable,y
|
|
sta.z s
|
|
// [91] phi from makechar::@2 to makechar::@3 [phi:makechar::@2->makechar::@3]
|
|
__b3_from___b2:
|
|
// [91] phi (byte) makechar::i#3 = (byte) 0 [phi:makechar::@2->makechar::@3#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z i
|
|
jmp __b3
|
|
// makechar::@3
|
|
__b3:
|
|
// [92] if((byte) makechar::i#3<(byte) 8) goto makechar::@5 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z i
|
|
cmp #8
|
|
bcc __b5_from___b3
|
|
jmp __b4
|
|
// makechar::@4
|
|
__b4:
|
|
// [93] (word) makechar::c#2 ← ++ (word) makechar::c#3 -- vwuz1=_inc_vwuz1
|
|
inc.z c
|
|
bne !+
|
|
inc.z c+1
|
|
!:
|
|
// [86] phi from makechar::@4 to makechar::@1 [phi:makechar::@4->makechar::@1]
|
|
__b1_from___b4:
|
|
// [86] phi (word) makechar::c#3 = (word) makechar::c#2 [phi:makechar::@4->makechar::@1#0] -- register_copy
|
|
jmp __b1
|
|
// [94] phi from makechar::@3 to makechar::@5 [phi:makechar::@3->makechar::@5]
|
|
__b5_from___b3:
|
|
// [94] phi (byte) makechar::b#3 = (byte) 0 [phi:makechar::@3->makechar::@5#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z b
|
|
// [94] phi (byte) makechar::ii#3 = (byte) 0 [phi:makechar::@3->makechar::@5#1] -- vbuyy=vbuc1
|
|
ldy #0
|
|
jmp __b5
|
|
// makechar::@5
|
|
__b5:
|
|
// [95] if((byte) makechar::ii#3<(byte) 8) goto makechar::@6 -- vbuyy_lt_vbuc1_then_la1
|
|
cpy #8
|
|
bcc __b6_from___b5
|
|
jmp __b7
|
|
// makechar::@7
|
|
__b7:
|
|
// [96] (word~) makechar::$8 ← (word) makechar::c#3 << (byte) 3 -- vwuz1=vwuz2_rol_3
|
|
lda.z c
|
|
asl
|
|
sta.z __8
|
|
lda.z c+1
|
|
rol
|
|
sta.z __8+1
|
|
asl.z __8
|
|
rol.z __8+1
|
|
asl.z __8
|
|
rol.z __8+1
|
|
// [97] (word~) makechar::$9 ← (word~) makechar::$8 + (byte) makechar::i#3 -- vwuz1=vwuz1_plus_vbuz2
|
|
lda.z i
|
|
clc
|
|
adc.z __9
|
|
sta.z __9
|
|
bcc !+
|
|
inc.z __9+1
|
|
!:
|
|
// [98] (byte*~) makechar::$10 ← (const byte*) CHARSET + (word~) makechar::$9 -- pbuz1=pbuc1_plus_vwuz1
|
|
clc
|
|
lda.z __10
|
|
adc #<CHARSET
|
|
sta.z __10
|
|
lda.z __10+1
|
|
adc #>CHARSET
|
|
sta.z __10+1
|
|
// [99] *((byte*~) makechar::$10) ← (byte) makechar::b#3 -- _deref_pbuz1=vbuz2
|
|
lda.z b
|
|
ldy #0
|
|
sta (__10),y
|
|
// [100] (byte) makechar::i#2 ← ++ (byte) makechar::i#3 -- vbuz1=_inc_vbuz1
|
|
inc.z i
|
|
// [91] phi from makechar::@7 to makechar::@3 [phi:makechar::@7->makechar::@3]
|
|
__b3_from___b7:
|
|
// [91] phi (byte) makechar::i#3 = (byte) makechar::i#2 [phi:makechar::@7->makechar::@3#0] -- register_copy
|
|
jmp __b3
|
|
// [101] phi from makechar::@5 to makechar::@6 [phi:makechar::@5->makechar::@6]
|
|
__b6_from___b5:
|
|
jmp __b6
|
|
// makechar::@6
|
|
__b6:
|
|
// [102] call rand
|
|
jsr rand
|
|
// [103] (byte) rand::return#2 ← (byte) rand::return#0
|
|
jmp __b10
|
|
// makechar::@10
|
|
__b10:
|
|
// [104] (byte~) makechar::$4 ← (byte) rand::return#2
|
|
// [105] (byte~) makechar::$5 ← (byte~) makechar::$4 & (byte) $ff -- vbuz1=vbuaa_band_vbuc1
|
|
and #$ff
|
|
sta.z __5
|
|
// [106] if((byte~) makechar::$5<=(byte) makechar::s#1) goto makechar::@8 -- vbuz1_le_vbuz2_then_la1
|
|
lda.z s
|
|
cmp.z __5
|
|
bcs __b8_from___b10
|
|
jmp __b9
|
|
// makechar::@9
|
|
__b9:
|
|
// [107] (byte) makechar::b#2 ← (byte) makechar::b#3 | *((const byte*) bittab + (byte) makechar::ii#3) -- vbuz1=vbuz1_bor_pbuc1_derefidx_vbuyy
|
|
lda bittab,y
|
|
ora.z b
|
|
sta.z b
|
|
// [108] phi from makechar::@10 makechar::@9 to makechar::@8 [phi:makechar::@10/makechar::@9->makechar::@8]
|
|
__b8_from___b10:
|
|
__b8_from___b9:
|
|
// [108] phi (byte) makechar::b#7 = (byte) makechar::b#3 [phi:makechar::@10/makechar::@9->makechar::@8#0] -- register_copy
|
|
jmp __b8
|
|
// makechar::@8
|
|
__b8:
|
|
// [109] (byte) makechar::ii#2 ← ++ (byte) makechar::ii#3 -- vbuyy=_inc_vbuyy
|
|
iny
|
|
// [94] phi from makechar::@8 to makechar::@5 [phi:makechar::@8->makechar::@5]
|
|
__b5_from___b8:
|
|
// [94] phi (byte) makechar::b#3 = (byte) makechar::b#7 [phi:makechar::@8->makechar::@5#0] -- register_copy
|
|
// [94] phi (byte) makechar::ii#3 = (byte) makechar::ii#2 [phi:makechar::@8->makechar::@5#1] -- register_copy
|
|
jmp __b5
|
|
}
|
|
// rand
|
|
rand: {
|
|
.label RAND_SEED = rand_seed
|
|
// asm { ldx#8 ldaRAND_SEED+0 __rand_loop: asl rolRAND_SEED+1 bcc__no_eor eor#$2D __no_eor: dex bne__rand_loop staRAND_SEED+0 }
|
|
ldx #8
|
|
lda RAND_SEED+0
|
|
__rand_loop:
|
|
asl
|
|
rol RAND_SEED+1
|
|
bcc __no_eor
|
|
eor #$2d
|
|
__no_eor:
|
|
dex
|
|
bne __rand_loop
|
|
sta RAND_SEED+0
|
|
// [111] (byte) rand::return#0 ← (byte)(word) rand_seed -- vbuaa=_byte_vwuz1
|
|
lda.z rand_seed
|
|
jmp __breturn
|
|
// rand::@return
|
|
__breturn:
|
|
// [112] return
|
|
rts
|
|
}
|
|
// File Data
|
|
print_hextab: .text "0123456789abcdef"
|
|
.align $100
|
|
sinustable: .byte $80, $7d, $7a, $77, $74, $70, $6d, $6a, $67, $64, $61, $5e, $5b, $58, $55, $52, $4f, $4d, $4a, $47, $44, $41, $3f, $3c, $39, $37, $34, $32, $2f, $2d, $2b, $28, $26, $24, $22, $20, $1e, $1c, $1a, $18, $16, $15, $13, $11, $10, $f, $d, $c, $b, $a, 8, 7, 6, 6, 5, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7, 8, $a, $b, $c, $d, $f, $10, $11, $13, $15, $16, $18, $1a, $1c, $1e, $20, $22, $24, $26, $28, $2b, $2d, $2f, $32, $34, $37, $39, $3c, $3f, $41, $44, $47, $4a, $4d, $4f, $52, $55, $58, $5b, $5e, $61, $64, $67, $6a, $6d, $70, $74, $77, $7a, $7d, $80, $83, $86, $89, $8c, $90, $93, $96, $99, $9c, $9f, $a2, $a5, $a8, $ab, $ae, $b1, $b3, $b6, $b9, $bc, $bf, $c1, $c4, $c7, $c9, $cc, $ce, $d1, $d3, $d5, $d8, $da, $dc, $de, $e0, $e2, $e4, $e6, $e8, $ea, $eb, $ed, $ef, $f0, $f1, $f3, $f4, $f5, $f6, $f8, $f9, $fa, $fa, $fb, $fc, $fd, $fd, $fe, $fe, $fe, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $fe, $fe, $fe, $fd, $fd, $fc, $fb, $fa, $fa, $f9, $f8, $f6, $f5, $f4, $f3, $f1, $f0, $ef, $ed, $eb, $ea, $e8, $e6, $e4, $e2, $e0, $de, $dc, $da, $d8, $d5, $d3, $d1, $ce, $cc, $c9, $c7, $c4, $c1, $bf, $bc, $b9, $b6, $b3, $b1, $ae, $ab, $a8, $a5, $a2, $9f, $9c, $99, $96, $93, $90, $8c, $89, $86, $83
|
|
xbuf: .fill $28, 0
|
|
ybuf: .fill $19, 0
|
|
bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80
|
|
|
|
ASSEMBLER OPTIMIZATIONS
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __bend
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b7
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b8
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __b4
|
|
Removing instruction jmp __b5
|
|
Removing instruction jmp __b7
|
|
Removing instruction jmp __b6
|
|
Removing instruction jmp __b10
|
|
Removing instruction jmp __b9
|
|
Removing instruction jmp __b8
|
|
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
|
|
Replacing instruction ldy #0 with TAY
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
Replacing label __bbegin with __b1
|
|
Replacing label __b2_from___b1 with __b2
|
|
Replacing label __b2_from___b1 with __b2
|
|
Replacing label __b1_from___b1 with __b1
|
|
Replacing label __b1_from___b1 with __b1
|
|
Replacing label __b6_from___b5 with __b6
|
|
Replacing label __b8_from___b10 with __b8
|
|
Removing instruction __bbegin:
|
|
Removing instruction __b3_from___b2:
|
|
Removing instruction __bend_from___b3:
|
|
Removing instruction __b4_from_main:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction doplasma_from___b2:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction print_ln_from___b2:
|
|
Removing instruction __b1_from___b1:
|
|
Removing instruction __b6_from___b5:
|
|
Removing instruction __b8_from___b10:
|
|
Removing instruction __b8_from___b9:
|
|
Succesful ASM optimization Pass5RedundantLabelElimination
|
|
Removing instruction __b2:
|
|
Removing instruction __b3:
|
|
Removing instruction __bend:
|
|
Removing instruction makechar_from_main:
|
|
Removing instruction __b4:
|
|
Removing instruction __b5:
|
|
Removing instruction __b1_from___b5:
|
|
Removing instruction __b3:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b6:
|
|
Removing instruction doplasma_from___b6:
|
|
Removing instruction __b7:
|
|
Removing instruction __b1_from___b7:
|
|
Removing instruction __b1_from_doplasma:
|
|
Removing instruction __b3_from___b1:
|
|
Removing instruction __b5_from___b3:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b8:
|
|
Removing instruction __b5_from___b8:
|
|
Removing instruction __b6_from___b7:
|
|
Removing instruction __b3_from___b4:
|
|
Removing instruction __b1_from___b2:
|
|
Removing instruction __b1:
|
|
Removing instruction __b2:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from_print_ln:
|
|
Removing instruction __breturn:
|
|
Removing instruction print_byte_from_print_word:
|
|
Removing instruction __b1:
|
|
Removing instruction print_byte_from___b1:
|
|
Removing instruction __breturn:
|
|
Removing instruction print_char_from_print_byte:
|
|
Removing instruction __b1:
|
|
Removing instruction print_char_from___b1:
|
|
Removing instruction __breturn:
|
|
Removing instruction __breturn:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b1_from_makechar:
|
|
Removing instruction __breturn:
|
|
Removing instruction __b3_from___b2:
|
|
Removing instruction __b4:
|
|
Removing instruction __b1_from___b4:
|
|
Removing instruction __b7:
|
|
Removing instruction __b3_from___b7:
|
|
Removing instruction __b10:
|
|
Removing instruction __b9:
|
|
Removing instruction __b5_from___b8:
|
|
Removing instruction __breturn:
|
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
|
Relabelling long label __b6_from___b5 to b1
|
|
Relabelling long label __b5_from___b3 to b1
|
|
Succesful ASM optimization Pass5RelabelLongLabels
|
|
Adding RTS to root block
|
|
Succesful ASM optimization Pass5AddMainRts
|
|
Removing instruction jmp __b1
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Removing instruction lda #<0
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
|
|
FINAL SYMBOL TABLE
|
|
(label) @1
|
|
(label) @2
|
|
(label) @3
|
|
(label) @begin
|
|
(label) @end
|
|
(const byte*) CHARSET = (byte*) 59392
|
|
(const byte*) CIA2_PORT_A = (byte*) 56576
|
|
(const byte) PAGE1 = (word)(const byte*) SCREEN1>>(byte) 6&(byte) $f0|(word)(const byte*) CHARSET>>(byte) $a&(byte) $e
|
|
(const byte) PAGE2 = (word)(const byte*) SCREEN2>>(byte) 6&(byte) $f0|(word)(const byte*) CHARSET>>(byte) $a&(byte) $e
|
|
(const byte) RADIX::BINARY = (number) 2
|
|
(const byte) RADIX::DECIMAL = (number) $a
|
|
(const byte) RADIX::HEXADECIMAL = (number) $10
|
|
(const byte) RADIX::OCTAL = (number) 8
|
|
(const byte*) SCREEN1 = (byte*) 57344
|
|
(const byte*) SCREEN2 = (byte*) 58368
|
|
(word) Ticks
|
|
(word) Ticks#1 Ticks zp[2]:16 2.0
|
|
(word) Ticks#12 Ticks_1 zp[2]:19 4.0
|
|
(const byte*) VIC_MEMORY = (byte*) 53272
|
|
(const byte*) bittab[] = { (byte) 1, (byte) 2, (byte) 4, (byte) 8, (byte) $10, (byte) $20, (byte) $40, (byte) $80 }
|
|
(void()) doplasma((byte*) doplasma::scrn)
|
|
(byte~) doplasma::$1 reg byte a 202.0
|
|
(byte~) doplasma::$3 reg byte a 202.0
|
|
(byte~) doplasma::$6 reg byte a 2002.0
|
|
(label) doplasma::@1
|
|
(label) doplasma::@2
|
|
(label) doplasma::@3
|
|
(label) doplasma::@4
|
|
(label) doplasma::@5
|
|
(label) doplasma::@6
|
|
(label) doplasma::@7
|
|
(label) doplasma::@8
|
|
(label) doplasma::@return
|
|
(byte) doplasma::c1A
|
|
(byte) doplasma::c1B
|
|
(byte) doplasma::c1a
|
|
(byte) doplasma::c1a#2 c1a zp[1]:9 67.33333333333333
|
|
(byte) doplasma::c1a#3 c1a zp[1]:9 75.75
|
|
(byte) doplasma::c1b
|
|
(byte) doplasma::c1b#2 c1b zp[1]:18 101.0
|
|
(byte) doplasma::c1b#3 c1b zp[1]:18 60.599999999999994
|
|
(byte) doplasma::c2A
|
|
(const byte) doplasma::c2A#0 c2A = (byte) 0
|
|
(byte) doplasma::c2B
|
|
(const byte) doplasma::c2B#0 c2B = (byte) 0
|
|
(byte) doplasma::c2a
|
|
(byte) doplasma::c2a#2 c2a zp[1]:2 67.33333333333333
|
|
(byte) doplasma::c2a#3 c2a zp[1]:2 75.75
|
|
(byte) doplasma::c2b
|
|
(byte) doplasma::c2b#2 c2b zp[1]:3 101.0
|
|
(byte) doplasma::c2b#3 c2b zp[1]:3 60.599999999999994
|
|
(byte) doplasma::i
|
|
(byte) doplasma::i#2 i zp[1]:21 202.0
|
|
(byte) doplasma::i#3 i zp[1]:21 67.33333333333333
|
|
(byte) doplasma::ii
|
|
(byte) doplasma::ii#2 ii zp[1]:8 202.0
|
|
(byte) doplasma::ii#3 ii zp[1]:8 67.33333333333333
|
|
(byte) doplasma::j
|
|
(byte) doplasma::j#2 reg byte y 2002.0
|
|
(byte) doplasma::j#3 reg byte y 1251.25
|
|
(byte) doplasma::jj
|
|
(byte) doplasma::jj#2 reg byte x 202.0
|
|
(byte) doplasma::jj#3 reg byte x 163.0
|
|
(byte*) doplasma::scrn
|
|
(byte*) doplasma::scrn#0 scrn zp[2]:6 101.0
|
|
(byte*) doplasma::scrn#13 scrn zp[2]:6 6.733333333333333
|
|
(byte*) doplasma::scrn#6 scrn zp[2]:6 186.28571428571428
|
|
(void()) end()
|
|
(label) end::@1
|
|
(label) end::@2
|
|
(label) end::@return
|
|
(word) last_time loadstore zp[2]:10 0.41666666666666663
|
|
(signed word()) main()
|
|
(label) main::@1
|
|
(label) main::@2
|
|
(label) main::@3
|
|
(label) main::@4
|
|
(label) main::@5
|
|
(label) main::@6
|
|
(label) main::@7
|
|
(label) main::@return
|
|
(byte) main::block
|
|
(byte) main::block#1 block zp[1]:14 0.46153846153846156
|
|
(word) main::count
|
|
(word) main::count#1 count zp[2]:4 22.0
|
|
(word) main::count#2 count zp[2]:4 4.714285714285714
|
|
(signed word) main::return
|
|
(byte) main::tmp
|
|
(byte) main::tmp#1 reg byte a 4.0
|
|
(byte) main::v
|
|
(byte) main::v#1 v zp[1]:15 0.4444444444444444
|
|
(void()) makechar()
|
|
(byte~) makechar::$1 reg byte a 22.0
|
|
(byte*~) makechar::$10 zp[2]:19 202.0
|
|
(byte~) makechar::$4 reg byte a 2002.0
|
|
(byte~) makechar::$5 zp[1]:21 2002.0
|
|
(word~) makechar::$8 zp[2]:19 202.0
|
|
(word~) makechar::$9 zp[2]:19 202.0
|
|
(label) makechar::@1
|
|
(label) makechar::@10
|
|
(label) makechar::@2
|
|
(label) makechar::@3
|
|
(label) makechar::@4
|
|
(label) makechar::@5
|
|
(label) makechar::@6
|
|
(label) makechar::@7
|
|
(label) makechar::@8
|
|
(label) makechar::@9
|
|
(label) makechar::@return
|
|
(byte) makechar::b
|
|
(byte) makechar::b#2 b zp[1]:9 2002.0
|
|
(byte) makechar::b#3 b zp[1]:9 282.1818181818182
|
|
(byte) makechar::b#7 b zp[1]:9 1501.5
|
|
(word) makechar::c
|
|
(word) makechar::c#2 c zp[2]:16 22.0
|
|
(word) makechar::c#3 c zp[2]:16 6.090909090909091
|
|
(byte) makechar::i
|
|
(byte) makechar::i#2 i zp[1]:8 202.0
|
|
(byte) makechar::i#3 i zp[1]:8 23.764705882352942
|
|
(byte) makechar::ii
|
|
(byte) makechar::ii#2 reg byte y 2002.0
|
|
(byte) makechar::ii#3 reg byte y 400.4
|
|
(byte) makechar::s
|
|
(byte) makechar::s#1 s zp[1]:18 53.26315789473684
|
|
(void()) print_byte((byte) print_byte::b)
|
|
(byte~) print_byte::$0 reg byte a 4.0
|
|
(byte~) print_byte::$2 reg byte x 4.0
|
|
(label) print_byte::@1
|
|
(label) print_byte::@return
|
|
(byte) print_byte::b
|
|
(byte) print_byte::b#0 reg byte x 4.0
|
|
(byte) print_byte::b#1 reg byte x 4.0
|
|
(byte) print_byte::b#2 reg byte x 2.0
|
|
(void()) print_char((byte) print_char::ch)
|
|
(label) print_char::@return
|
|
(byte) print_char::ch
|
|
(byte) print_char::ch#0 reg byte a 4.0
|
|
(byte) print_char::ch#1 reg byte a 4.0
|
|
(byte) print_char::ch#2 reg byte a 6.0
|
|
(byte*) print_char_cursor
|
|
(byte*) print_char_cursor#10 print_char_cursor zp[2]:6 1.0
|
|
(byte*) print_char_cursor#25 print_char_cursor zp[2]:6 4.0
|
|
(byte*) print_char_cursor#35 print_char_cursor zp[2]:6 1.3333333333333333
|
|
(const byte*) print_hextab[] = (byte*) "0123456789abcdef"z
|
|
(byte*) print_line_cursor
|
|
(byte*) print_line_cursor#1 print_line_cursor zp[2]:4 16.5
|
|
(byte*) print_line_cursor#8 print_line_cursor zp[2]:4 22.0
|
|
(void()) print_ln()
|
|
(label) print_ln::@1
|
|
(label) print_ln::@return
|
|
(byte*) print_screen
|
|
(void()) print_word((word) print_word::w)
|
|
(label) print_word::@1
|
|
(label) print_word::@return
|
|
(word) print_word::w
|
|
(word) print_word::w#0 w zp[2]:19 2.0
|
|
(byte()) rand()
|
|
(label) rand::@return
|
|
(const word*) rand::RAND_SEED = &(word) rand_seed
|
|
(byte) rand::return
|
|
(byte) rand::return#0 reg byte a 334.33333333333337
|
|
(byte) rand::return#2 reg byte a 2002.0
|
|
(word) rand_seed loadstore zp[2]:12 0.21428571428571427
|
|
(const byte*) sinustable[(number) $100] = { (byte) $80, (byte) $7d, (byte) $7a, (byte) $77, (byte) $74, (byte) $70, (byte) $6d, (byte) $6a, (byte) $67, (byte) $64, (byte) $61, (byte) $5e, (byte) $5b, (byte) $58, (byte) $55, (byte) $52, (byte) $4f, (byte) $4d, (byte) $4a, (byte) $47, (byte) $44, (byte) $41, (byte) $3f, (byte) $3c, (byte) $39, (byte) $37, (byte) $34, (byte) $32, (byte) $2f, (byte) $2d, (byte) $2b, (byte) $28, (byte) $26, (byte) $24, (byte) $22, (byte) $20, (byte) $1e, (byte) $1c, (byte) $1a, (byte) $18, (byte) $16, (byte) $15, (byte) $13, (byte) $11, (byte) $10, (byte) $f, (byte) $d, (byte) $c, (byte) $b, (byte) $a, (byte) 8, (byte) 7, (byte) 6, (byte) 6, (byte) 5, (byte) 4, (byte) 3, (byte) 3, (byte) 2, (byte) 2, (byte) 2, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 2, (byte) 2, (byte) 2, (byte) 3, (byte) 3, (byte) 4, (byte) 5, (byte) 6, (byte) 6, (byte) 7, (byte) 8, (byte) $a, (byte) $b, (byte) $c, (byte) $d, (byte) $f, (byte) $10, (byte) $11, (byte) $13, (byte) $15, (byte) $16, (byte) $18, (byte) $1a, (byte) $1c, (byte) $1e, (byte) $20, (byte) $22, (byte) $24, (byte) $26, (byte) $28, (byte) $2b, (byte) $2d, (byte) $2f, (byte) $32, (byte) $34, (byte) $37, (byte) $39, (byte) $3c, (byte) $3f, (byte) $41, (byte) $44, (byte) $47, (byte) $4a, (byte) $4d, (byte) $4f, (byte) $52, (byte) $55, (byte) $58, (byte) $5b, (byte) $5e, (byte) $61, (byte) $64, (byte) $67, (byte) $6a, (byte) $6d, (byte) $70, (byte) $74, (byte) $77, (byte) $7a, (byte) $7d, (byte) $80, (byte) $83, (byte) $86, (byte) $89, (byte) $8c, (byte) $90, (byte) $93, (byte) $96, (byte) $99, (byte) $9c, (byte) $9f, (byte) $a2, (byte) $a5, (byte) $a8, (byte) $ab, (byte) $ae, (byte) $b1, (byte) $b3, (byte) $b6, (byte) $b9, (byte) $bc, (byte) $bf, (byte) $c1, (byte) $c4, (byte) $c7, (byte) $c9, (byte) $cc, (byte) $ce, (byte) $d1, (byte) $d3, (byte) $d5, (byte) $d8, (byte) $da, (byte) $dc, (byte) $de, (byte) $e0, (byte) $e2, (byte) $e4, (byte) $e6, (byte) $e8, (byte) $ea, (byte) $eb, (byte) $ed, (byte) $ef, (byte) $f0, (byte) $f1, (byte) $f3, (byte) $f4, (byte) $f5, (byte) $f6, (byte) $f8, (byte) $f9, (byte) $fa, (byte) $fa, (byte) $fb, (byte) $fc, (byte) $fd, (byte) $fd, (byte) $fe, (byte) $fe, (byte) $fe, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $ff, (byte) $fe, (byte) $fe, (byte) $fe, (byte) $fd, (byte) $fd, (byte) $fc, (byte) $fb, (byte) $fa, (byte) $fa, (byte) $f9, (byte) $f8, (byte) $f6, (byte) $f5, (byte) $f4, (byte) $f3, (byte) $f1, (byte) $f0, (byte) $ef, (byte) $ed, (byte) $eb, (byte) $ea, (byte) $e8, (byte) $e6, (byte) $e4, (byte) $e2, (byte) $e0, (byte) $de, (byte) $dc, (byte) $da, (byte) $d8, (byte) $d5, (byte) $d3, (byte) $d1, (byte) $ce, (byte) $cc, (byte) $c9, (byte) $c7, (byte) $c4, (byte) $c1, (byte) $bf, (byte) $bc, (byte) $b9, (byte) $b6, (byte) $b3, (byte) $b1, (byte) $ae, (byte) $ab, (byte) $a8, (byte) $a5, (byte) $a2, (byte) $9f, (byte) $9c, (byte) $99, (byte) $96, (byte) $93, (byte) $90, (byte) $8c, (byte) $89, (byte) $86, (byte) $83 }
|
|
(void()) start()
|
|
(label) start::@return
|
|
(const word*) start::LAST_TIME = &(word) last_time
|
|
(const byte*) xbuf[(number) $28] = { fill( $28, 0) }
|
|
(const byte*) ybuf[(number) $19] = { fill( $19, 0) }
|
|
|
|
zp[1]:2 [ doplasma::c2a#3 doplasma::c2a#2 ]
|
|
zp[1]:3 [ doplasma::c2b#3 doplasma::c2b#2 ]
|
|
reg byte x [ doplasma::jj#3 doplasma::jj#2 ]
|
|
reg byte y [ doplasma::j#3 doplasma::j#2 ]
|
|
zp[2]:4 [ print_line_cursor#8 print_line_cursor#1 main::count#2 main::count#1 ]
|
|
reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
|
|
reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
|
|
zp[2]:6 [ print_char_cursor#25 print_char_cursor#35 print_char_cursor#10 doplasma::scrn#6 doplasma::scrn#0 doplasma::scrn#13 ]
|
|
zp[1]:8 [ makechar::i#3 makechar::i#2 doplasma::ii#3 doplasma::ii#2 ]
|
|
reg byte y [ makechar::ii#3 makechar::ii#2 ]
|
|
zp[1]:9 [ makechar::b#3 makechar::b#7 makechar::b#2 doplasma::c1a#3 doplasma::c1a#2 ]
|
|
zp[2]:10 [ last_time ]
|
|
zp[2]:12 [ rand_seed ]
|
|
zp[1]:14 [ main::block#1 ]
|
|
reg byte a [ main::tmp#1 ]
|
|
zp[1]:15 [ main::v#1 ]
|
|
reg byte a [ doplasma::$6 ]
|
|
reg byte a [ doplasma::$3 ]
|
|
reg byte a [ doplasma::$1 ]
|
|
zp[2]:16 [ Ticks#1 makechar::c#3 makechar::c#2 ]
|
|
reg byte a [ print_byte::$0 ]
|
|
reg byte x [ print_byte::$2 ]
|
|
reg byte a [ makechar::$1 ]
|
|
zp[1]:18 [ makechar::s#1 doplasma::c1b#3 doplasma::c1b#2 ]
|
|
zp[2]:19 [ makechar::$8 makechar::$9 makechar::$10 Ticks#12 print_word::w#0 ]
|
|
reg byte a [ rand::return#2 ]
|
|
reg byte a [ makechar::$4 ]
|
|
zp[1]:21 [ makechar::$5 doplasma::i#3 doplasma::i#2 ]
|
|
reg byte a [ rand::return#0 ]
|
|
|
|
|
|
FINAL ASSEMBLER
|
|
Score: 104147
|
|
|
|
// File Comments
|
|
// Upstart
|
|
.pc = $801 "Basic"
|
|
:BasicUpstart(__b1)
|
|
.pc = $80d "Program"
|
|
// Global Constants & labels
|
|
.label VIC_MEMORY = $d018
|
|
// CIA#2 Port A: Serial bus, RS-232, VIC memory bank
|
|
.label CIA2_PORT_A = $dd00
|
|
.label SCREEN1 = $e000
|
|
.label SCREEN2 = $e400
|
|
.label CHARSET = $e800
|
|
.const PAGE1 = SCREEN1>>6&$f0|CHARSET>>$a&$e
|
|
.const PAGE2 = SCREEN2>>6&$f0|CHARSET>>$a&$e
|
|
.label last_time = $a
|
|
.label rand_seed = $c
|
|
.label print_line_cursor = 4
|
|
.label print_char_cursor = 6
|
|
.label Ticks = $10
|
|
.label Ticks_1 = $13
|
|
// @begin
|
|
// @1
|
|
__b1:
|
|
// last_time
|
|
// [1] (word) last_time ← (word) 0 -- vwuz1=vwuc1
|
|
lda #<0
|
|
sta.z last_time
|
|
sta.z last_time+1
|
|
// @2
|
|
// rand_seed
|
|
// [2] (word) rand_seed ← (word) 0 -- vwuz1=vwuc1
|
|
sta.z rand_seed
|
|
sta.z rand_seed+1
|
|
// [3] phi from @2 to @3 [phi:@2->@3]
|
|
// @3
|
|
// [4] call main
|
|
jsr main
|
|
rts
|
|
// [5] phi from @3 to @end [phi:@3->@end]
|
|
// @end
|
|
// main
|
|
main: {
|
|
.label block = $e
|
|
.label v = $f
|
|
.label count = 4
|
|
// rand_seed = 6474
|
|
// [6] (word) rand_seed ← (word) $194a -- vwuz1=vwuc1
|
|
lda #<$194a
|
|
sta.z rand_seed
|
|
lda #>$194a
|
|
sta.z rand_seed+1
|
|
// makechar()
|
|
// [7] call makechar
|
|
// [85] phi from main to makechar [phi:main->makechar]
|
|
jsr makechar
|
|
// [8] phi from main to main::@4 [phi:main->main::@4]
|
|
// main::@4
|
|
// start()
|
|
// [9] call start
|
|
jsr start
|
|
// main::@5
|
|
// block = *CIA2_PORT_A
|
|
// [10] (byte) main::block#1 ← *((const byte*) CIA2_PORT_A) -- vbuz1=_deref_pbuc1
|
|
lda CIA2_PORT_A
|
|
sta.z block
|
|
// tmp = block & 0xFC
|
|
// [11] (byte) main::tmp#1 ← (byte) main::block#1 & (byte) $fc -- vbuaa=vbuz1_band_vbuc1
|
|
lda #$fc
|
|
and.z block
|
|
// *CIA2_PORT_A = tmp
|
|
// [12] *((const byte*) CIA2_PORT_A) ← (byte) main::tmp#1 -- _deref_pbuc1=vbuaa
|
|
sta CIA2_PORT_A
|
|
// v = *VIC_MEMORY
|
|
// [13] (byte) main::v#1 ← *((const byte*) VIC_MEMORY) -- vbuz1=_deref_pbuc1
|
|
lda VIC_MEMORY
|
|
sta.z v
|
|
// [14] phi from main::@5 to main::@1 [phi:main::@5->main::@1]
|
|
// [14] phi (word) main::count#2 = (word) $1f4 [phi:main::@5->main::@1#0] -- vwuz1=vwuc1
|
|
lda #<$1f4
|
|
sta.z count
|
|
lda #>$1f4
|
|
sta.z count+1
|
|
/* Run the demo until a key was hit */
|
|
// main::@1
|
|
__b1:
|
|
// while (count)
|
|
// [15] if((byte) 0!=(word) main::count#2) goto main::@2 -- vwuc1_neq_vwuz1_then_la1
|
|
lda.z count+1
|
|
cmp #>0
|
|
bne __b2
|
|
lda.z count
|
|
cmp #<0
|
|
bne __b2
|
|
// main::@3
|
|
// *VIC_MEMORY = v
|
|
// [16] *((const byte*) VIC_MEMORY) ← (byte) main::v#1 -- _deref_pbuc1=vbuz1
|
|
lda.z v
|
|
sta VIC_MEMORY
|
|
// *CIA2_PORT_A = block
|
|
// [17] *((const byte*) CIA2_PORT_A) ← (byte) main::block#1 -- _deref_pbuc1=vbuz1
|
|
lda.z block
|
|
sta CIA2_PORT_A
|
|
// end()
|
|
// [18] call end
|
|
jsr end
|
|
// main::@return
|
|
// }
|
|
// [19] return
|
|
rts
|
|
// [20] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
|
// main::@2
|
|
__b2:
|
|
// doplasma ((char*)SCREEN1)
|
|
// [21] call doplasma
|
|
// [26] phi from main::@2 to doplasma [phi:main::@2->doplasma]
|
|
// [26] phi (byte*) doplasma::scrn#13 = (const byte*) SCREEN1 [phi:main::@2->doplasma#0] -- pbuz1=pbuc1
|
|
lda #<SCREEN1
|
|
sta.z doplasma.scrn
|
|
lda #>SCREEN1
|
|
sta.z doplasma.scrn+1
|
|
jsr doplasma
|
|
// main::@6
|
|
// *VIC_MEMORY = PAGE1
|
|
// [22] *((const byte*) VIC_MEMORY) ← (const byte) PAGE1 -- _deref_pbuc1=vbuc2
|
|
lda #PAGE1
|
|
sta VIC_MEMORY
|
|
// doplasma ((char*)SCREEN2)
|
|
// [23] call doplasma
|
|
// [26] phi from main::@6 to doplasma [phi:main::@6->doplasma]
|
|
// [26] phi (byte*) doplasma::scrn#13 = (const byte*) SCREEN2 [phi:main::@6->doplasma#0] -- pbuz1=pbuc1
|
|
lda #<SCREEN2
|
|
sta.z doplasma.scrn
|
|
lda #>SCREEN2
|
|
sta.z doplasma.scrn+1
|
|
jsr doplasma
|
|
// main::@7
|
|
// *VIC_MEMORY = PAGE2
|
|
// [24] *((const byte*) VIC_MEMORY) ← (const byte) PAGE2 -- _deref_pbuc1=vbuc2
|
|
lda #PAGE2
|
|
sta VIC_MEMORY
|
|
// --count;
|
|
// [25] (word) main::count#1 ← -- (word) main::count#2 -- vwuz1=_dec_vwuz1
|
|
lda.z count
|
|
bne !+
|
|
dec.z count+1
|
|
!:
|
|
dec.z count
|
|
// [14] phi from main::@7 to main::@1 [phi:main::@7->main::@1]
|
|
// [14] phi (word) main::count#2 = (word) main::count#1 [phi:main::@7->main::@1#0] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// doplasma
|
|
// doplasma(byte* zp(6) scrn)
|
|
doplasma: {
|
|
.const c2A = 0
|
|
.const c2B = 0
|
|
.label c1a = 9
|
|
.label c1b = $12
|
|
.label ii = 8
|
|
.label c2a = 2
|
|
.label c2b = 3
|
|
.label i = $15
|
|
.label scrn = 6
|
|
// [27] phi from doplasma to doplasma::@1 [phi:doplasma->doplasma::@1]
|
|
// [27] phi (byte) doplasma::c1b#3 = (byte) 0 [phi:doplasma->doplasma::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z c1b
|
|
// [27] phi (byte) doplasma::c1a#3 = (byte) 0 [phi:doplasma->doplasma::@1#1] -- vbuz1=vbuc1
|
|
sta.z c1a
|
|
// [27] phi (byte) doplasma::ii#3 = (byte) 0 [phi:doplasma->doplasma::@1#2] -- vbuz1=vbuc1
|
|
sta.z ii
|
|
// doplasma::@1
|
|
__b1:
|
|
// for (ii = 0; ii < 25; ++ii)
|
|
// [28] if((byte) doplasma::ii#3<(byte) $19) goto doplasma::@2 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z ii
|
|
cmp #$19
|
|
bcc __b2
|
|
// [29] phi from doplasma::@1 to doplasma::@3 [phi:doplasma::@1->doplasma::@3]
|
|
// [29] phi (byte) doplasma::c2b#3 = (const byte) doplasma::c2B#0 [phi:doplasma::@1->doplasma::@3#0] -- vbuz1=vbuc1
|
|
lda #c2B
|
|
sta.z c2b
|
|
// [29] phi (byte) doplasma::c2a#3 = (const byte) doplasma::c2A#0 [phi:doplasma::@1->doplasma::@3#1] -- vbuz1=vbuc1
|
|
lda #c2A
|
|
sta.z c2a
|
|
// [29] phi (byte) doplasma::i#3 = (byte) 0 [phi:doplasma::@1->doplasma::@3#2] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z i
|
|
// doplasma::@3
|
|
__b3:
|
|
// for (i = 0; i < 40; ++i)
|
|
// [30] if((byte) doplasma::i#3<(byte) $28) goto doplasma::@4 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z i
|
|
cmp #$28
|
|
bcc __b4
|
|
// [31] phi from doplasma::@3 to doplasma::@5 [phi:doplasma::@3->doplasma::@5]
|
|
// [31] phi (byte*) doplasma::scrn#6 = (byte*) doplasma::scrn#13 [phi:doplasma::@3->doplasma::@5#0] -- register_copy
|
|
// [31] phi (byte) doplasma::jj#3 = (byte) 0 [phi:doplasma::@3->doplasma::@5#1] -- vbuxx=vbuc1
|
|
ldx #0
|
|
// doplasma::@5
|
|
__b5:
|
|
// for (jj = 0; jj < 25; ++jj)
|
|
// [32] if((byte) doplasma::jj#3<(byte) $19) goto doplasma::@6 -- vbuxx_lt_vbuc1_then_la1
|
|
cpx #$19
|
|
bcc b1
|
|
// doplasma::@return
|
|
// }
|
|
// [33] return
|
|
rts
|
|
// [34] phi from doplasma::@5 to doplasma::@6 [phi:doplasma::@5->doplasma::@6]
|
|
b1:
|
|
// [34] phi (byte) doplasma::j#3 = (byte) 0 [phi:doplasma::@5->doplasma::@6#0] -- vbuyy=vbuc1
|
|
ldy #0
|
|
// doplasma::@6
|
|
__b6:
|
|
// for (j = 0; j < 40; ++j)
|
|
// [35] if((byte) doplasma::j#3<(byte) $28) goto doplasma::@7 -- vbuyy_lt_vbuc1_then_la1
|
|
cpy #$28
|
|
bcc __b7
|
|
// doplasma::@8
|
|
// scrn += 40
|
|
// [36] (byte*) doplasma::scrn#0 ← (byte*) doplasma::scrn#6 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z scrn
|
|
sta.z scrn
|
|
bcc !+
|
|
inc.z scrn+1
|
|
!:
|
|
// for (jj = 0; jj < 25; ++jj)
|
|
// [37] (byte) doplasma::jj#2 ← ++ (byte) doplasma::jj#3 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
// [31] phi from doplasma::@8 to doplasma::@5 [phi:doplasma::@8->doplasma::@5]
|
|
// [31] phi (byte*) doplasma::scrn#6 = (byte*) doplasma::scrn#0 [phi:doplasma::@8->doplasma::@5#0] -- register_copy
|
|
// [31] phi (byte) doplasma::jj#3 = (byte) doplasma::jj#2 [phi:doplasma::@8->doplasma::@5#1] -- register_copy
|
|
jmp __b5
|
|
// doplasma::@7
|
|
__b7:
|
|
// xbuf[j] + ybuf[jj]
|
|
// [38] (byte~) doplasma::$6 ← *((const byte*) xbuf + (byte) doplasma::j#3) + *((const byte*) ybuf + (byte) doplasma::jj#3) -- vbuaa=pbuc1_derefidx_vbuyy_plus_pbuc2_derefidx_vbuxx
|
|
lda xbuf,y
|
|
clc
|
|
adc ybuf,x
|
|
// scrn[j] = (xbuf[j] + ybuf[jj])
|
|
// [39] *((byte*) doplasma::scrn#6 + (byte) doplasma::j#3) ← (byte~) doplasma::$6 -- pbuz1_derefidx_vbuyy=vbuaa
|
|
sta (scrn),y
|
|
// for (j = 0; j < 40; ++j)
|
|
// [40] (byte) doplasma::j#2 ← ++ (byte) doplasma::j#3 -- vbuyy=_inc_vbuyy
|
|
iny
|
|
// [34] phi from doplasma::@7 to doplasma::@6 [phi:doplasma::@7->doplasma::@6]
|
|
// [34] phi (byte) doplasma::j#3 = (byte) doplasma::j#2 [phi:doplasma::@7->doplasma::@6#0] -- register_copy
|
|
jmp __b6
|
|
// doplasma::@4
|
|
__b4:
|
|
// sinustable[c2a] + sinustable[c2b]
|
|
// [41] (byte~) doplasma::$3 ← *((const byte*) sinustable + (byte) doplasma::c2a#3) + *((const byte*) sinustable + (byte) doplasma::c2b#3) -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc1_derefidx_vbuz2
|
|
ldy.z c2a
|
|
lda sinustable,y
|
|
ldy.z c2b
|
|
clc
|
|
adc sinustable,y
|
|
// xbuf[i] = (sinustable[c2a] + sinustable[c2b])
|
|
// [42] *((const byte*) xbuf + (byte) doplasma::i#3) ← (byte~) doplasma::$3 -- pbuc1_derefidx_vbuz1=vbuaa
|
|
ldy.z i
|
|
sta xbuf,y
|
|
// c2a += 3
|
|
// [43] (byte) doplasma::c2a#2 ← (byte) doplasma::c2a#3 + (byte) 3 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z c2a
|
|
axs #-[3]
|
|
stx.z c2a
|
|
// c2b += 7
|
|
// [44] (byte) doplasma::c2b#2 ← (byte) doplasma::c2b#3 + (byte) 7 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z c2b
|
|
axs #-[7]
|
|
stx.z c2b
|
|
// for (i = 0; i < 40; ++i)
|
|
// [45] (byte) doplasma::i#2 ← ++ (byte) doplasma::i#3 -- vbuz1=_inc_vbuz1
|
|
inc.z i
|
|
// [29] phi from doplasma::@4 to doplasma::@3 [phi:doplasma::@4->doplasma::@3]
|
|
// [29] phi (byte) doplasma::c2b#3 = (byte) doplasma::c2b#2 [phi:doplasma::@4->doplasma::@3#0] -- register_copy
|
|
// [29] phi (byte) doplasma::c2a#3 = (byte) doplasma::c2a#2 [phi:doplasma::@4->doplasma::@3#1] -- register_copy
|
|
// [29] phi (byte) doplasma::i#3 = (byte) doplasma::i#2 [phi:doplasma::@4->doplasma::@3#2] -- register_copy
|
|
jmp __b3
|
|
// doplasma::@2
|
|
__b2:
|
|
// sinustable[c1a] + sinustable[c1b]
|
|
// [46] (byte~) doplasma::$1 ← *((const byte*) sinustable + (byte) doplasma::c1a#3) + *((const byte*) sinustable + (byte) doplasma::c1b#3) -- vbuaa=pbuc1_derefidx_vbuz1_plus_pbuc1_derefidx_vbuz2
|
|
ldy.z c1a
|
|
lda sinustable,y
|
|
ldy.z c1b
|
|
clc
|
|
adc sinustable,y
|
|
// ybuf[ii] = (sinustable[c1a] + sinustable[c1b])
|
|
// [47] *((const byte*) ybuf + (byte) doplasma::ii#3) ← (byte~) doplasma::$1 -- pbuc1_derefidx_vbuz1=vbuaa
|
|
ldy.z ii
|
|
sta ybuf,y
|
|
// c1a += 4
|
|
// [48] (byte) doplasma::c1a#2 ← (byte) doplasma::c1a#3 + (byte) 4 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z c1a
|
|
axs #-[4]
|
|
stx.z c1a
|
|
// c1b += 9
|
|
// [49] (byte) doplasma::c1b#2 ← (byte) doplasma::c1b#3 + (byte) 9 -- vbuz1=vbuz1_plus_vbuc1
|
|
lax.z c1b
|
|
axs #-[9]
|
|
stx.z c1b
|
|
// for (ii = 0; ii < 25; ++ii)
|
|
// [50] (byte) doplasma::ii#2 ← ++ (byte) doplasma::ii#3 -- vbuz1=_inc_vbuz1
|
|
inc.z ii
|
|
// [27] phi from doplasma::@2 to doplasma::@1 [phi:doplasma::@2->doplasma::@1]
|
|
// [27] phi (byte) doplasma::c1b#3 = (byte) doplasma::c1b#2 [phi:doplasma::@2->doplasma::@1#0] -- register_copy
|
|
// [27] phi (byte) doplasma::c1a#3 = (byte) doplasma::c1a#2 [phi:doplasma::@2->doplasma::@1#1] -- register_copy
|
|
// [27] phi (byte) doplasma::ii#3 = (byte) doplasma::ii#2 [phi:doplasma::@2->doplasma::@1#2] -- register_copy
|
|
jmp __b1
|
|
}
|
|
// end
|
|
end: {
|
|
// Ticks = last_time
|
|
// [51] (word) Ticks#1 ← (word) last_time -- vwuz1=vwuz2
|
|
lda.z last_time
|
|
sta.z Ticks
|
|
lda.z last_time+1
|
|
sta.z Ticks+1
|
|
// start()
|
|
// [52] call start
|
|
jsr start
|
|
// end::@1
|
|
// last_time -= Ticks
|
|
// [53] (word) last_time ← (word) last_time - (word) Ticks#1 -- vwuz1=vwuz1_minus_vwuz2
|
|
lda.z last_time
|
|
sec
|
|
sbc.z Ticks
|
|
sta.z last_time
|
|
lda.z last_time+1
|
|
sbc.z Ticks+1
|
|
sta.z last_time+1
|
|
// Ticks = last_time
|
|
// [54] (word) Ticks#12 ← (word) last_time -- vwuz1=vwuz2
|
|
lda.z last_time
|
|
sta.z Ticks_1
|
|
lda.z last_time+1
|
|
sta.z Ticks_1+1
|
|
// print_word(Ticks)
|
|
// [55] (word) print_word::w#0 ← (word) Ticks#12
|
|
// [56] call print_word
|
|
jsr print_word
|
|
// [57] phi from end::@1 to end::@2 [phi:end::@1->end::@2]
|
|
// end::@2
|
|
// print_ln()
|
|
// [58] call print_ln
|
|
// [60] phi from end::@2 to print_ln [phi:end::@2->print_ln]
|
|
jsr print_ln
|
|
// end::@return
|
|
// }
|
|
// [59] return
|
|
rts
|
|
}
|
|
// print_ln
|
|
// Print a newline
|
|
print_ln: {
|
|
// [61] phi from print_ln to print_ln::@1 [phi:print_ln->print_ln::@1]
|
|
// [61] phi (byte*) print_line_cursor#8 = (byte*) 1024 [phi:print_ln->print_ln::@1#0] -- pbuz1=pbuc1
|
|
lda #<$400
|
|
sta.z print_line_cursor
|
|
lda #>$400
|
|
sta.z print_line_cursor+1
|
|
// [61] phi from print_ln::@1 to print_ln::@1 [phi:print_ln::@1->print_ln::@1]
|
|
// [61] phi (byte*) print_line_cursor#8 = (byte*) print_line_cursor#1 [phi:print_ln::@1->print_ln::@1#0] -- register_copy
|
|
// print_ln::@1
|
|
__b1:
|
|
// print_line_cursor + $28
|
|
// [62] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#8 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1
|
|
lda #$28
|
|
clc
|
|
adc.z print_line_cursor
|
|
sta.z print_line_cursor
|
|
bcc !+
|
|
inc.z print_line_cursor+1
|
|
!:
|
|
// while (print_line_cursor<print_char_cursor)
|
|
// [63] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 -- pbuz1_lt_pbuz2_then_la1
|
|
lda.z print_line_cursor+1
|
|
cmp.z print_char_cursor+1
|
|
bcc __b1
|
|
bne !+
|
|
lda.z print_line_cursor
|
|
cmp.z print_char_cursor
|
|
bcc __b1
|
|
!:
|
|
// print_ln::@return
|
|
// }
|
|
// [64] return
|
|
rts
|
|
}
|
|
// print_word
|
|
// Print a word as HEX
|
|
// print_word(word zp($13) w)
|
|
print_word: {
|
|
.label w = $13
|
|
// print_byte(>w)
|
|
// [65] (byte) print_byte::b#0 ← > (word) print_word::w#0 -- vbuxx=_hi_vwuz1
|
|
lda.z w+1
|
|
tax
|
|
// [66] call print_byte
|
|
// [70] phi from print_word to print_byte [phi:print_word->print_byte]
|
|
// [70] phi (byte*) print_char_cursor#35 = (byte*) 1024 [phi:print_word->print_byte#0] -- pbuz1=pbuc1
|
|
lda #<$400
|
|
sta.z print_char_cursor
|
|
lda #>$400
|
|
sta.z print_char_cursor+1
|
|
// [70] phi (byte) print_byte::b#2 = (byte) print_byte::b#0 [phi:print_word->print_byte#1] -- register_copy
|
|
jsr print_byte
|
|
// print_word::@1
|
|
// print_byte(<w)
|
|
// [67] (byte) print_byte::b#1 ← < (word) print_word::w#0 -- vbuxx=_lo_vwuz1
|
|
lda.z w
|
|
tax
|
|
// [68] call print_byte
|
|
// [70] phi from print_word::@1 to print_byte [phi:print_word::@1->print_byte]
|
|
// [70] phi (byte*) print_char_cursor#35 = (byte*) print_char_cursor#10 [phi:print_word::@1->print_byte#0] -- register_copy
|
|
// [70] phi (byte) print_byte::b#2 = (byte) print_byte::b#1 [phi:print_word::@1->print_byte#1] -- register_copy
|
|
jsr print_byte
|
|
// print_word::@return
|
|
// }
|
|
// [69] return
|
|
rts
|
|
}
|
|
// print_byte
|
|
// Print a byte as HEX
|
|
// print_byte(byte register(X) b)
|
|
print_byte: {
|
|
// b>>4
|
|
// [71] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte) 4 -- vbuaa=vbuxx_ror_4
|
|
txa
|
|
lsr
|
|
lsr
|
|
lsr
|
|
lsr
|
|
// print_char(print_hextab[b>>4])
|
|
// [72] (byte) print_char::ch#0 ← *((const byte*) print_hextab + (byte~) print_byte::$0) -- vbuaa=pbuc1_derefidx_vbuaa
|
|
tay
|
|
lda print_hextab,y
|
|
// [73] call print_char
|
|
// [78] phi from print_byte to print_char [phi:print_byte->print_char]
|
|
// [78] phi (byte*) print_char_cursor#25 = (byte*) print_char_cursor#35 [phi:print_byte->print_char#0] -- register_copy
|
|
// [78] phi (byte) print_char::ch#2 = (byte) print_char::ch#0 [phi:print_byte->print_char#1] -- register_copy
|
|
jsr print_char
|
|
// print_byte::@1
|
|
// b&$f
|
|
// [74] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte) $f -- vbuxx=vbuxx_band_vbuc1
|
|
lda #$f
|
|
axs #0
|
|
// print_char(print_hextab[b&$f])
|
|
// [75] (byte) print_char::ch#1 ← *((const byte*) print_hextab + (byte~) print_byte::$2) -- vbuaa=pbuc1_derefidx_vbuxx
|
|
lda print_hextab,x
|
|
// [76] call print_char
|
|
// [78] phi from print_byte::@1 to print_char [phi:print_byte::@1->print_char]
|
|
// [78] phi (byte*) print_char_cursor#25 = (byte*) print_char_cursor#10 [phi:print_byte::@1->print_char#0] -- register_copy
|
|
// [78] phi (byte) print_char::ch#2 = (byte) print_char::ch#1 [phi:print_byte::@1->print_char#1] -- register_copy
|
|
jsr print_char
|
|
// print_byte::@return
|
|
// }
|
|
// [77] return
|
|
rts
|
|
}
|
|
// print_char
|
|
// Print a single char
|
|
// print_char(byte register(A) ch)
|
|
print_char: {
|
|
// *(print_char_cursor++) = ch
|
|
// [79] *((byte*) print_char_cursor#25) ← (byte) print_char::ch#2 -- _deref_pbuz1=vbuaa
|
|
ldy #0
|
|
sta (print_char_cursor),y
|
|
// *(print_char_cursor++) = ch;
|
|
// [80] (byte*) print_char_cursor#10 ← ++ (byte*) print_char_cursor#25 -- pbuz1=_inc_pbuz1
|
|
inc.z print_char_cursor
|
|
bne !+
|
|
inc.z print_char_cursor+1
|
|
!:
|
|
// print_char::@return
|
|
// }
|
|
// [81] return
|
|
rts
|
|
}
|
|
// start
|
|
start: {
|
|
.label LAST_TIME = last_time
|
|
// asm
|
|
// asm { jsr$FFDE staLAST_TIME stxLAST_TIME+1 }
|
|
jsr $ffde
|
|
sta LAST_TIME
|
|
stx LAST_TIME+1
|
|
// rand_seed = 6474
|
|
// [83] (word) rand_seed ← (word) $194a -- vwuz1=vwuc1
|
|
lda #<$194a
|
|
sta.z rand_seed
|
|
lda #>$194a
|
|
sta.z rand_seed+1
|
|
// start::@return
|
|
// }
|
|
// [84] return
|
|
rts
|
|
}
|
|
// makechar
|
|
makechar: {
|
|
.label __5 = $15
|
|
.label __8 = $13
|
|
.label __9 = $13
|
|
.label s = $12
|
|
.label c = $10
|
|
.label i = 8
|
|
.label b = 9
|
|
.label __10 = $13
|
|
// [86] phi from makechar to makechar::@1 [phi:makechar->makechar::@1]
|
|
// [86] phi (word) makechar::c#3 = (byte) 0 [phi:makechar->makechar::@1#0] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta.z c
|
|
sta.z c+1
|
|
// makechar::@1
|
|
__b1:
|
|
// for (c = 0; c < 0x100; ++c)
|
|
// [87] if((word) makechar::c#3<(word) $100) goto makechar::@2 -- vwuz1_lt_vwuc1_then_la1
|
|
lda.z c+1
|
|
cmp #>$100
|
|
bcc __b2
|
|
bne !+
|
|
lda.z c
|
|
cmp #<$100
|
|
bcc __b2
|
|
!:
|
|
// makechar::@return
|
|
// }
|
|
// [88] return
|
|
rts
|
|
// makechar::@2
|
|
__b2:
|
|
// (char)c
|
|
// [89] (byte~) makechar::$1 ← (byte)(word) makechar::c#3 -- vbuaa=_byte_vwuz1
|
|
lda.z c
|
|
// s = sinustable[(char)c]
|
|
// [90] (byte) makechar::s#1 ← *((const byte*) sinustable + (byte~) makechar::$1) -- vbuz1=pbuc1_derefidx_vbuaa
|
|
tay
|
|
lda sinustable,y
|
|
sta.z s
|
|
// [91] phi from makechar::@2 to makechar::@3 [phi:makechar::@2->makechar::@3]
|
|
// [91] phi (byte) makechar::i#3 = (byte) 0 [phi:makechar::@2->makechar::@3#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z i
|
|
// makechar::@3
|
|
__b3:
|
|
// for (i = 0; i < 8; ++i)
|
|
// [92] if((byte) makechar::i#3<(byte) 8) goto makechar::@5 -- vbuz1_lt_vbuc1_then_la1
|
|
lda.z i
|
|
cmp #8
|
|
bcc b1
|
|
// makechar::@4
|
|
// for (c = 0; c < 0x100; ++c)
|
|
// [93] (word) makechar::c#2 ← ++ (word) makechar::c#3 -- vwuz1=_inc_vwuz1
|
|
inc.z c
|
|
bne !+
|
|
inc.z c+1
|
|
!:
|
|
// [86] phi from makechar::@4 to makechar::@1 [phi:makechar::@4->makechar::@1]
|
|
// [86] phi (word) makechar::c#3 = (word) makechar::c#2 [phi:makechar::@4->makechar::@1#0] -- register_copy
|
|
jmp __b1
|
|
// [94] phi from makechar::@3 to makechar::@5 [phi:makechar::@3->makechar::@5]
|
|
b1:
|
|
// [94] phi (byte) makechar::b#3 = (byte) 0 [phi:makechar::@3->makechar::@5#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta.z b
|
|
// [94] phi (byte) makechar::ii#3 = (byte) 0 [phi:makechar::@3->makechar::@5#1] -- vbuyy=vbuc1
|
|
tay
|
|
// makechar::@5
|
|
__b5:
|
|
// for (ii = 0; ii < 8; ++ii)
|
|
// [95] if((byte) makechar::ii#3<(byte) 8) goto makechar::@6 -- vbuyy_lt_vbuc1_then_la1
|
|
cpy #8
|
|
bcc __b6
|
|
// makechar::@7
|
|
// c<<3
|
|
// [96] (word~) makechar::$8 ← (word) makechar::c#3 << (byte) 3 -- vwuz1=vwuz2_rol_3
|
|
lda.z c
|
|
asl
|
|
sta.z __8
|
|
lda.z c+1
|
|
rol
|
|
sta.z __8+1
|
|
asl.z __8
|
|
rol.z __8+1
|
|
asl.z __8
|
|
rol.z __8+1
|
|
// (c<<3) + i
|
|
// [97] (word~) makechar::$9 ← (word~) makechar::$8 + (byte) makechar::i#3 -- vwuz1=vwuz1_plus_vbuz2
|
|
lda.z i
|
|
clc
|
|
adc.z __9
|
|
sta.z __9
|
|
bcc !+
|
|
inc.z __9+1
|
|
!:
|
|
// ((char*)CHARSET) [(c<<3) + i] = b
|
|
// [98] (byte*~) makechar::$10 ← (const byte*) CHARSET + (word~) makechar::$9 -- pbuz1=pbuc1_plus_vwuz1
|
|
clc
|
|
lda.z __10
|
|
adc #<CHARSET
|
|
sta.z __10
|
|
lda.z __10+1
|
|
adc #>CHARSET
|
|
sta.z __10+1
|
|
// [99] *((byte*~) makechar::$10) ← (byte) makechar::b#3 -- _deref_pbuz1=vbuz2
|
|
lda.z b
|
|
ldy #0
|
|
sta (__10),y
|
|
// for (i = 0; i < 8; ++i)
|
|
// [100] (byte) makechar::i#2 ← ++ (byte) makechar::i#3 -- vbuz1=_inc_vbuz1
|
|
inc.z i
|
|
// [91] phi from makechar::@7 to makechar::@3 [phi:makechar::@7->makechar::@3]
|
|
// [91] phi (byte) makechar::i#3 = (byte) makechar::i#2 [phi:makechar::@7->makechar::@3#0] -- register_copy
|
|
jmp __b3
|
|
// [101] phi from makechar::@5 to makechar::@6 [phi:makechar::@5->makechar::@6]
|
|
// makechar::@6
|
|
__b6:
|
|
// rand()
|
|
// [102] call rand
|
|
jsr rand
|
|
// [103] (byte) rand::return#2 ← (byte) rand::return#0
|
|
// makechar::@10
|
|
// [104] (byte~) makechar::$4 ← (byte) rand::return#2
|
|
// rand() & 0xFF
|
|
// [105] (byte~) makechar::$5 ← (byte~) makechar::$4 & (byte) $ff -- vbuz1=vbuaa_band_vbuc1
|
|
and #$ff
|
|
sta.z __5
|
|
// if ((rand() & 0xFF) > s)
|
|
// [106] if((byte~) makechar::$5<=(byte) makechar::s#1) goto makechar::@8 -- vbuz1_le_vbuz2_then_la1
|
|
lda.z s
|
|
cmp.z __5
|
|
bcs __b8
|
|
// makechar::@9
|
|
// b |= bittab[ii]
|
|
// [107] (byte) makechar::b#2 ← (byte) makechar::b#3 | *((const byte*) bittab + (byte) makechar::ii#3) -- vbuz1=vbuz1_bor_pbuc1_derefidx_vbuyy
|
|
lda bittab,y
|
|
ora.z b
|
|
sta.z b
|
|
// [108] phi from makechar::@10 makechar::@9 to makechar::@8 [phi:makechar::@10/makechar::@9->makechar::@8]
|
|
// [108] phi (byte) makechar::b#7 = (byte) makechar::b#3 [phi:makechar::@10/makechar::@9->makechar::@8#0] -- register_copy
|
|
// makechar::@8
|
|
__b8:
|
|
// for (ii = 0; ii < 8; ++ii)
|
|
// [109] (byte) makechar::ii#2 ← ++ (byte) makechar::ii#3 -- vbuyy=_inc_vbuyy
|
|
iny
|
|
// [94] phi from makechar::@8 to makechar::@5 [phi:makechar::@8->makechar::@5]
|
|
// [94] phi (byte) makechar::b#3 = (byte) makechar::b#7 [phi:makechar::@8->makechar::@5#0] -- register_copy
|
|
// [94] phi (byte) makechar::ii#3 = (byte) makechar::ii#2 [phi:makechar::@8->makechar::@5#1] -- register_copy
|
|
jmp __b5
|
|
}
|
|
// rand
|
|
rand: {
|
|
.label RAND_SEED = rand_seed
|
|
// asm
|
|
// asm { ldx#8 ldaRAND_SEED+0 __rand_loop: asl rolRAND_SEED+1 bcc__no_eor eor#$2D __no_eor: dex bne__rand_loop staRAND_SEED+0 }
|
|
ldx #8
|
|
lda RAND_SEED+0
|
|
__rand_loop:
|
|
asl
|
|
rol RAND_SEED+1
|
|
bcc __no_eor
|
|
eor #$2d
|
|
__no_eor:
|
|
dex
|
|
bne __rand_loop
|
|
sta RAND_SEED+0
|
|
// (char)rand_seed
|
|
// [111] (byte) rand::return#0 ← (byte)(word) rand_seed -- vbuaa=_byte_vwuz1
|
|
lda.z rand_seed
|
|
// rand::@return
|
|
// }
|
|
// [112] return
|
|
rts
|
|
}
|
|
// File Data
|
|
print_hextab: .text "0123456789abcdef"
|
|
.align $100
|
|
sinustable: .byte $80, $7d, $7a, $77, $74, $70, $6d, $6a, $67, $64, $61, $5e, $5b, $58, $55, $52, $4f, $4d, $4a, $47, $44, $41, $3f, $3c, $39, $37, $34, $32, $2f, $2d, $2b, $28, $26, $24, $22, $20, $1e, $1c, $1a, $18, $16, $15, $13, $11, $10, $f, $d, $c, $b, $a, 8, 7, 6, 6, 5, 4, 3, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 6, 7, 8, $a, $b, $c, $d, $f, $10, $11, $13, $15, $16, $18, $1a, $1c, $1e, $20, $22, $24, $26, $28, $2b, $2d, $2f, $32, $34, $37, $39, $3c, $3f, $41, $44, $47, $4a, $4d, $4f, $52, $55, $58, $5b, $5e, $61, $64, $67, $6a, $6d, $70, $74, $77, $7a, $7d, $80, $83, $86, $89, $8c, $90, $93, $96, $99, $9c, $9f, $a2, $a5, $a8, $ab, $ae, $b1, $b3, $b6, $b9, $bc, $bf, $c1, $c4, $c7, $c9, $cc, $ce, $d1, $d3, $d5, $d8, $da, $dc, $de, $e0, $e2, $e4, $e6, $e8, $ea, $eb, $ed, $ef, $f0, $f1, $f3, $f4, $f5, $f6, $f8, $f9, $fa, $fa, $fb, $fc, $fd, $fd, $fe, $fe, $fe, $ff, $ff, $ff, $ff, $ff, $ff, $ff, $fe, $fe, $fe, $fd, $fd, $fc, $fb, $fa, $fa, $f9, $f8, $f6, $f5, $f4, $f3, $f1, $f0, $ef, $ed, $eb, $ea, $e8, $e6, $e4, $e2, $e0, $de, $dc, $da, $d8, $d5, $d3, $d1, $ce, $cc, $c9, $c7, $c4, $c1, $bf, $bc, $b9, $b6, $b3, $b1, $ae, $ab, $a8, $a5, $a2, $9f, $9c, $99, $96, $93, $90, $8c, $89, $86, $83
|
|
xbuf: .fill $28, 0
|
|
ybuf: .fill $19, 0
|
|
bittab: .byte 1, 2, 4, 8, $10, $20, $40, $80
|
|
|