mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-08-08 13:25:12 +00:00
5998 lines
335 KiB
Plaintext
5998 lines
335 KiB
Plaintext
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
|
Inlined call call vicSelectGfxBank (byte*) SCREEN
|
|
Inlined call (byte~) main::$4 ← call toD018 (byte*) SCREEN (byte*) BITMAP
|
|
Inlined call (word~) point_init::$7 ← call abs16s (signed word) point_init::x_diff
|
|
Inlined call (word~) point_init::$8 ← call abs16s (signed word) point_init::y_diff
|
|
|
|
CONTROL FLOW GRAPH SSA
|
|
@begin: scope:[] from
|
|
(byte*) PROCPORT_DDR#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
(byte) PROCPORT_DDR_MEMORY_MASK#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
|
(byte*) PROCPORT#0 ← ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
(byte) PROCPORT_RAM_IO#0 ← (byte/signed byte/word/signed word/dword/signed dword) 53
|
|
(byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266
|
|
(byte*) BORDERCOL#0 ← ((byte*)) (word/dword/signed dword) 53280
|
|
(byte*) D011#0 ← ((byte*)) (word/dword/signed dword) 53265
|
|
(byte) VIC_BMM#0 ← (byte/signed byte/word/signed word/dword/signed dword) 32
|
|
(byte) VIC_DEN#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
|
(byte) VIC_RSEL#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
|
(byte*) D018#0 ← ((byte*)) (word/dword/signed dword) 53272
|
|
(byte*) CIA2_PORT_A#0 ← ((byte*)) (word/dword/signed dword) 56576
|
|
(byte*) CIA2_PORT_A_DDR#0 ← ((byte*)) (word/dword/signed dword) 56578
|
|
to:@11
|
|
divr16u: scope:[divr16u] from divr16s::@4
|
|
(word) divr16u::divisor#5 ← phi( divr16s::@4/(word) divr16u::divisor#0 )
|
|
(word) divr16u::dividend#4 ← phi( divr16s::@4/(word) divr16u::dividend#1 )
|
|
(word) divr16u::rem#8 ← phi( divr16s::@4/(word) divr16u::rem#3 )
|
|
(word) divr16u::quotient#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
(byte) divr16u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
to:divr16u::@1
|
|
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
|
(byte) divr16u::i#5 ← phi( divr16u/(byte) divr16u::i#0 divr16u::@3/(byte) divr16u::i#1 )
|
|
(word) divr16u::divisor#3 ← phi( divr16u/(word) divr16u::divisor#5 divr16u::@3/(word) divr16u::divisor#6 )
|
|
(word) divr16u::quotient#6 ← phi( divr16u/(word) divr16u::quotient#0 divr16u::@3/(word) divr16u::quotient#8 )
|
|
(word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#4 divr16u::@3/(word) divr16u::dividend#5 )
|
|
(word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#8 divr16u::@3/(word) divr16u::rem#9 )
|
|
(word~) divr16u::$0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
(word) divr16u::rem#0 ← (word~) divr16u::$0
|
|
(byte~) divr16u::$1 ← > (word) divr16u::dividend#2
|
|
(byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
|
|
(bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
(bool~) divr16u::$4 ← ! (bool~) divr16u::$3
|
|
if((bool~) divr16u::$4) goto divr16u::@2
|
|
to:divr16u::@4
|
|
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
|
(byte) divr16u::i#3 ← phi( divr16u::@1/(byte) divr16u::i#5 divr16u::@4/(byte) divr16u::i#6 )
|
|
(word) divr16u::divisor#1 ← phi( divr16u::@1/(word) divr16u::divisor#3 divr16u::@4/(word) divr16u::divisor#4 )
|
|
(word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
|
(word) divr16u::quotient#3 ← phi( divr16u::@1/(word) divr16u::quotient#6 divr16u::@4/(word) divr16u::quotient#7 )
|
|
(word) divr16u::dividend#3 ← phi( divr16u::@1/(word) divr16u::dividend#2 divr16u::@4/(word) divr16u::dividend#6 )
|
|
(word~) divr16u::$6 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
(word) divr16u::dividend#0 ← (word~) divr16u::$6
|
|
(word~) divr16u::$7 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
(word) divr16u::quotient#1 ← (word~) divr16u::$7
|
|
(bool~) divr16u::$8 ← (word) divr16u::rem#5 >= (word) divr16u::divisor#1
|
|
(bool~) divr16u::$9 ← ! (bool~) divr16u::$8
|
|
if((bool~) divr16u::$9) goto divr16u::@3
|
|
to:divr16u::@5
|
|
divr16u::@4: scope:[divr16u] from divr16u::@1
|
|
(byte) divr16u::i#6 ← phi( divr16u::@1/(byte) divr16u::i#5 )
|
|
(word) divr16u::divisor#4 ← phi( divr16u::@1/(word) divr16u::divisor#3 )
|
|
(word) divr16u::quotient#7 ← phi( divr16u::@1/(word) divr16u::quotient#6 )
|
|
(word) divr16u::dividend#6 ← phi( divr16u::@1/(word) divr16u::dividend#2 )
|
|
(word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 )
|
|
(word/dword~) divr16u::$5 ← (word) divr16u::rem#6 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
(word) divr16u::rem#1 ← (word/dword~) divr16u::$5
|
|
to:divr16u::@2
|
|
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
|
(word) divr16u::divisor#6 ← phi( divr16u::@2/(word) divr16u::divisor#1 divr16u::@5/(word) divr16u::divisor#2 )
|
|
(word) divr16u::quotient#8 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
|
(word) divr16u::dividend#5 ← phi( divr16u::@2/(word) divr16u::dividend#0 divr16u::@5/(word) divr16u::dividend#7 )
|
|
(word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 )
|
|
(byte) divr16u::i#2 ← phi( divr16u::@2/(byte) divr16u::i#3 divr16u::@5/(byte) divr16u::i#4 )
|
|
(byte) divr16u::i#1 ← (byte) divr16u::i#2 + rangenext(0,15)
|
|
(bool~) divr16u::$11 ← (byte) divr16u::i#1 != rangelast(0,15)
|
|
if((bool~) divr16u::$11) goto divr16u::@1
|
|
to:divr16u::@6
|
|
divr16u::@5: scope:[divr16u] from divr16u::@2
|
|
(word) divr16u::dividend#7 ← phi( divr16u::@2/(word) divr16u::dividend#0 )
|
|
(byte) divr16u::i#4 ← phi( divr16u::@2/(byte) divr16u::i#3 )
|
|
(word) divr16u::divisor#2 ← phi( divr16u::@2/(word) divr16u::divisor#1 )
|
|
(word) divr16u::rem#7 ← phi( divr16u::@2/(word) divr16u::rem#5 )
|
|
(word) divr16u::quotient#4 ← phi( divr16u::@2/(word) divr16u::quotient#1 )
|
|
(word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#4
|
|
(word~) divr16u::$10 ← (word) divr16u::rem#7 - (word) divr16u::divisor#2
|
|
(word) divr16u::rem#2 ← (word~) divr16u::$10
|
|
to:divr16u::@3
|
|
divr16u::@6: scope:[divr16u] from divr16u::@3
|
|
(word) divr16u::quotient#5 ← phi( divr16u::@3/(word) divr16u::quotient#8 )
|
|
(word) divr16u::return#0 ← (word) divr16u::quotient#5
|
|
to:divr16u::@return
|
|
divr16u::@return: scope:[divr16u] from divr16u::@6
|
|
(word) divr16u::return#3 ← phi( divr16u::@6/(word) divr16u::return#0 )
|
|
(word) divr16u::return#1 ← (word) divr16u::return#3
|
|
return
|
|
to:@return
|
|
divr16s: scope:[divr16s] from point_init::@4
|
|
(signed word) divr16s::divisor#6 ← phi( point_init::@4/(signed word) divr16s::divisor#0 )
|
|
(signed word) divr16s::rem#1 ← phi( point_init::@4/(signed word) divr16s::rem#0 )
|
|
(signed word) divr16s::dividend#1 ← phi( point_init::@4/(signed word) divr16s::dividend#0 )
|
|
(byte) divr16s::neg#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
(word) divr16s::dividendu#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
(word) divr16s::remu#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
(bool~) divr16s::$0 ← (signed word) divr16s::dividend#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
(bool~) divr16s::$1 ← (signed word) divr16s::rem#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
(bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1
|
|
if((bool~) divr16s::$2) goto divr16s::@1
|
|
to:divr16s::@7
|
|
divr16s::@1: scope:[divr16s] from divr16s
|
|
(signed word) divr16s::divisor#4 ← phi( divr16s/(signed word) divr16s::divisor#6 )
|
|
(signed word) divr16s::rem#2 ← phi( divr16s/(signed word) divr16s::rem#1 )
|
|
(signed word) divr16s::dividend#2 ← phi( divr16s/(signed word) divr16s::dividend#1 )
|
|
(signed word~) divr16s::$5 ← - (signed word) divr16s::dividend#2
|
|
(word~) divr16s::$6 ← ((word)) (signed word~) divr16s::$5
|
|
(word) divr16s::dividendu#1 ← (word~) divr16s::$6
|
|
(signed word~) divr16s::$7 ← - (signed word) divr16s::rem#2
|
|
(word~) divr16s::$8 ← ((word)) (signed word~) divr16s::$7
|
|
(word) divr16s::remu#1 ← (word~) divr16s::$8
|
|
(byte) divr16s::neg#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
to:divr16s::@2
|
|
divr16s::@7: scope:[divr16s] from divr16s
|
|
(byte) divr16s::neg#7 ← phi( divr16s/(byte) divr16s::neg#0 )
|
|
(signed word) divr16s::divisor#5 ← phi( divr16s/(signed word) divr16s::divisor#6 )
|
|
(signed word) divr16s::rem#3 ← phi( divr16s/(signed word) divr16s::rem#1 )
|
|
(signed word) divr16s::dividend#3 ← phi( divr16s/(signed word) divr16s::dividend#1 )
|
|
(word~) divr16s::$3 ← ((word)) (signed word) divr16s::dividend#3
|
|
(word) divr16s::dividendu#2 ← (word~) divr16s::$3
|
|
(word~) divr16s::$4 ← ((word)) (signed word) divr16s::rem#3
|
|
(word) divr16s::remu#2 ← (word~) divr16s::$4
|
|
to:divr16s::@2
|
|
divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@7
|
|
(word) divr16s::remu#6 ← phi( divr16s::@1/(word) divr16s::remu#1 divr16s::@7/(word) divr16s::remu#2 )
|
|
(word) divr16s::dividendu#6 ← phi( divr16s::@1/(word) divr16s::dividendu#1 divr16s::@7/(word) divr16s::dividendu#2 )
|
|
(byte) divr16s::neg#5 ← phi( divr16s::@1/(byte) divr16s::neg#1 divr16s::@7/(byte) divr16s::neg#7 )
|
|
(signed word) divr16s::divisor#1 ← phi( divr16s::@1/(signed word) divr16s::divisor#4 divr16s::@7/(signed word) divr16s::divisor#5 )
|
|
(word) divr16s::divisoru#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
(bool~) divr16s::$9 ← (signed word) divr16s::divisor#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
if((bool~) divr16s::$9) goto divr16s::@3
|
|
to:divr16s::@9
|
|
divr16s::@3: scope:[divr16s] from divr16s::@2
|
|
(word) divr16s::remu#4 ← phi( divr16s::@2/(word) divr16s::remu#6 )
|
|
(word) divr16s::dividendu#4 ← phi( divr16s::@2/(word) divr16s::dividendu#6 )
|
|
(byte) divr16s::neg#3 ← phi( divr16s::@2/(byte) divr16s::neg#5 )
|
|
(signed word) divr16s::divisor#2 ← phi( divr16s::@2/(signed word) divr16s::divisor#1 )
|
|
(signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#2
|
|
(word~) divr16s::$12 ← ((word)) (signed word~) divr16s::$11
|
|
(word) divr16s::divisoru#1 ← (word~) divr16s::$12
|
|
(byte/word/dword~) divr16s::$13 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
(byte) divr16s::neg#2 ← (byte/word/dword~) divr16s::$13
|
|
to:divr16s::@4
|
|
divr16s::@9: scope:[divr16s] from divr16s::@2
|
|
(byte) divr16s::neg#8 ← phi( divr16s::@2/(byte) divr16s::neg#5 )
|
|
(word) divr16s::remu#5 ← phi( divr16s::@2/(word) divr16s::remu#6 )
|
|
(word) divr16s::dividendu#5 ← phi( divr16s::@2/(word) divr16s::dividendu#6 )
|
|
(signed word) divr16s::divisor#3 ← phi( divr16s::@2/(signed word) divr16s::divisor#1 )
|
|
(word~) divr16s::$10 ← ((word)) (signed word) divr16s::divisor#3
|
|
(word) divr16s::divisoru#2 ← (word~) divr16s::$10
|
|
to:divr16s::@4
|
|
divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@9
|
|
(byte) divr16s::neg#6 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@9/(byte) divr16s::neg#8 )
|
|
(word) divr16s::remu#3 ← phi( divr16s::@3/(word) divr16s::remu#4 divr16s::@9/(word) divr16s::remu#5 )
|
|
(word) divr16s::divisoru#3 ← phi( divr16s::@3/(word) divr16s::divisoru#1 divr16s::@9/(word) divr16s::divisoru#2 )
|
|
(word) divr16s::dividendu#3 ← phi( divr16s::@3/(word) divr16s::dividendu#4 divr16s::@9/(word) divr16s::dividendu#5 )
|
|
(word) divr16u::dividend#1 ← (word) divr16s::dividendu#3
|
|
(word) divr16u::divisor#0 ← (word) divr16s::divisoru#3
|
|
(word) divr16u::rem#3 ← (word) divr16s::remu#3
|
|
call divr16u
|
|
(word) divr16u::return#2 ← (word) divr16u::return#1
|
|
to:divr16s::@15
|
|
divr16s::@15: scope:[divr16s] from divr16s::@4
|
|
(byte) divr16s::neg#4 ← phi( divr16s::@4/(byte) divr16s::neg#6 )
|
|
(word) divr16u::return#4 ← phi( divr16s::@4/(word) divr16u::return#2 )
|
|
(word~) divr16s::$14 ← (word) divr16u::return#4
|
|
(word) divr16s::resultu#0 ← (word~) divr16s::$14
|
|
(bool~) divr16s::$15 ← (byte) divr16s::neg#4 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
if((bool~) divr16s::$15) goto divr16s::@5
|
|
to:divr16s::@11
|
|
divr16s::@5: scope:[divr16s] from divr16s::@15
|
|
(word) divr16s::resultu#1 ← phi( divr16s::@15/(word) divr16s::resultu#0 )
|
|
(signed word~) divr16s::$21 ← ((signed word)) (word) divr16s::resultu#1
|
|
(signed word) divr16s::return#0 ← (signed word~) divr16s::$21
|
|
to:divr16s::@return
|
|
divr16s::@11: scope:[divr16s] from divr16s::@15
|
|
(word) divr16s::resultu#2 ← phi( divr16s::@15/(word) divr16s::resultu#0 )
|
|
(signed word~) divr16s::$18 ← ((signed word)) (word) divr16s::resultu#2
|
|
(signed word~) divr16s::$19 ← - (signed word~) divr16s::$18
|
|
(signed word) divr16s::return#1 ← (signed word~) divr16s::$19
|
|
to:divr16s::@return
|
|
divr16s::@return: scope:[divr16s] from divr16s::@11 divr16s::@5
|
|
(signed word) divr16s::return#4 ← phi( divr16s::@11/(signed word) divr16s::return#1 divr16s::@5/(signed word) divr16s::return#0 )
|
|
(signed word) divr16s::return#2 ← (signed word) divr16s::return#4
|
|
return
|
|
to:@return
|
|
@11: scope:[] from @begin
|
|
(byte*) BITMAP#0 ← ((byte*)) (word/dword/signed dword) 40960
|
|
(byte*) SCREEN#0 ← ((byte*)) (word/dword/signed dword) 34816
|
|
(byte) DELAY#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
|
(word[4]) x_start#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 30, (byte/signed byte/word/signed word/dword/signed dword) 30 }
|
|
(byte[4]) y_start#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 }
|
|
(word[4]) x_end#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20 }
|
|
(byte[4]) y_end#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 }
|
|
(word[4]) x_cur#0 ← { fill( 4, 0) }
|
|
(word[4]) y_cur#0 ← { fill( 4, 0) }
|
|
(signed byte[4]) x_add#0 ← { fill( 4, 0) }
|
|
(signed byte[4]) y_add#0 ← { fill( 4, 0) }
|
|
(byte[4]) delay#0 ← { fill( 4, 0) }
|
|
to:@15
|
|
main: scope:[main] from @18
|
|
(byte*) BITMAP#9 ← phi( @18/(byte*) BITMAP#10 )
|
|
(byte*) SCREEN#1 ← phi( @18/(byte*) SCREEN#4 )
|
|
asm { sei }
|
|
*((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0
|
|
*((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0
|
|
(byte~) main::$0 ← (byte) VIC_BMM#0 | (byte) VIC_DEN#0
|
|
(byte~) main::$1 ← (byte~) main::$0 | (byte) VIC_RSEL#0
|
|
(byte/word/dword~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word/dword/signed dword) 3
|
|
*((byte*) D011#0) ← (byte/word/dword~) main::$2
|
|
(byte*) main::vicSelectGfxBank1_gfx#0 ← (byte*) SCREEN#1
|
|
to:main::vicSelectGfxBank1
|
|
main::vicSelectGfxBank1: scope:[main] from main
|
|
(byte*) BITMAP#8 ← phi( main/(byte*) BITMAP#9 )
|
|
(byte*) SCREEN#12 ← phi( main/(byte*) SCREEN#1 )
|
|
(byte*) main::vicSelectGfxBank1_gfx#1 ← phi( main/(byte*) main::vicSelectGfxBank1_gfx#0 )
|
|
*((byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
|
(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ← (byte*) main::vicSelectGfxBank1_gfx#1
|
|
to:main::vicSelectGfxBank1_toDd001
|
|
main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1
|
|
(byte*) BITMAP#7 ← phi( main::vicSelectGfxBank1/(byte*) BITMAP#8 )
|
|
(byte*) SCREEN#10 ← phi( main::vicSelectGfxBank1/(byte*) SCREEN#12 )
|
|
(byte*) main::vicSelectGfxBank1_toDd001_gfx#1 ← phi( main::vicSelectGfxBank1/(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 )
|
|
(word) main::vicSelectGfxBank1_toDd001_$0#0 ← ((word)) (byte*) main::vicSelectGfxBank1_toDd001_gfx#1
|
|
(byte) main::vicSelectGfxBank1_toDd001_$1#0 ← > (word) main::vicSelectGfxBank1_toDd001_$0#0
|
|
(byte) main::vicSelectGfxBank1_toDd001_$2#0 ← (byte) main::vicSelectGfxBank1_toDd001_$1#0 >> (byte/signed byte/word/signed word/dword/signed dword) 6
|
|
(byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3 ^ (byte) main::vicSelectGfxBank1_toDd001_$2#0
|
|
(byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0
|
|
to:main::vicSelectGfxBank1_toDd001_@return
|
|
main::vicSelectGfxBank1_toDd001_@return: scope:[main] from main::vicSelectGfxBank1_toDd001
|
|
(byte*) BITMAP#5 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) BITMAP#7 )
|
|
(byte*) SCREEN#7 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) SCREEN#10 )
|
|
(byte) main::vicSelectGfxBank1_toDd001_return#2 ← phi( main::vicSelectGfxBank1_toDd001/(byte) main::vicSelectGfxBank1_toDd001_return#0 )
|
|
(byte) main::vicSelectGfxBank1_toDd001_return#1 ← (byte) main::vicSelectGfxBank1_toDd001_return#2
|
|
to:main::vicSelectGfxBank1_@1
|
|
main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001_@return
|
|
(byte*) BITMAP#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) BITMAP#5 )
|
|
(byte*) SCREEN#5 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) SCREEN#7 )
|
|
(byte) main::vicSelectGfxBank1_toDd001_return#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte) main::vicSelectGfxBank1_toDd001_return#1 )
|
|
(byte) main::vicSelectGfxBank1_$0#0 ← (byte) main::vicSelectGfxBank1_toDd001_return#3
|
|
*((byte*) CIA2_PORT_A#0) ← (byte) main::vicSelectGfxBank1_$0#0
|
|
to:main::@15
|
|
main::@15: scope:[main] from main::vicSelectGfxBank1_@1
|
|
(byte*) BITMAP#1 ← phi( main::vicSelectGfxBank1_@1/(byte*) BITMAP#3 )
|
|
(byte*) SCREEN#2 ← phi( main::vicSelectGfxBank1_@1/(byte*) SCREEN#5 )
|
|
(byte*) main::toD0181_screen#0 ← (byte*) SCREEN#2
|
|
(byte*) main::toD0181_gfx#0 ← (byte*) BITMAP#1
|
|
to:main::toD0181
|
|
main::toD0181: scope:[main] from main::@15
|
|
(byte*) SCREEN#13 ← phi( main::@15/(byte*) SCREEN#2 )
|
|
(byte*) BITMAP#6 ← phi( main::@15/(byte*) BITMAP#1 )
|
|
(byte*) main::toD0181_gfx#1 ← phi( main::@15/(byte*) main::toD0181_gfx#0 )
|
|
(byte*) main::toD0181_screen#1 ← phi( main::@15/(byte*) main::toD0181_screen#0 )
|
|
(word) main::toD0181_$0#0 ← ((word)) (byte*) main::toD0181_screen#1
|
|
(word) main::toD0181_$1#0 ← (word) main::toD0181_$0#0 & (word/signed word/dword/signed dword) 16383
|
|
(word) main::toD0181_$2#0 ← (word) main::toD0181_$1#0 << (byte/signed byte/word/signed word/dword/signed dword) 2
|
|
(byte) main::toD0181_$3#0 ← > (word) main::toD0181_$2#0
|
|
(word) main::toD0181_$4#0 ← ((word)) (byte*) main::toD0181_gfx#1
|
|
(byte) main::toD0181_$5#0 ← > (word) main::toD0181_$4#0
|
|
(byte) main::toD0181_$6#0 ← (byte) main::toD0181_$5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 2
|
|
(byte) main::toD0181_$7#0 ← (byte) main::toD0181_$6#0 & (byte/signed byte/word/signed word/dword/signed dword) 15
|
|
(byte) main::toD0181_$8#0 ← (byte) main::toD0181_$3#0 | (byte) main::toD0181_$7#0
|
|
(byte) main::toD0181_return#0 ← (byte) main::toD0181_$8#0
|
|
to:main::toD0181_@return
|
|
main::toD0181_@return: scope:[main] from main::toD0181
|
|
(byte*) SCREEN#11 ← phi( main::toD0181/(byte*) SCREEN#13 )
|
|
(byte*) BITMAP#4 ← phi( main::toD0181/(byte*) BITMAP#6 )
|
|
(byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 )
|
|
(byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2
|
|
to:main::@16
|
|
main::@16: scope:[main] from main::toD0181_@return
|
|
(byte*) SCREEN#8 ← phi( main::toD0181_@return/(byte*) SCREEN#11 )
|
|
(byte*) BITMAP#2 ← phi( main::toD0181_@return/(byte*) BITMAP#4 )
|
|
(byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 )
|
|
(byte~) main::$4 ← (byte) main::toD0181_return#3
|
|
*((byte*) D018#0) ← (byte~) main::$4
|
|
(byte*) bitmap_init::bitmap#0 ← (byte*) BITMAP#2
|
|
call bitmap_init
|
|
to:main::@17
|
|
main::@17: scope:[main] from main::@16
|
|
(byte*) SCREEN#6 ← phi( main::@16/(byte*) SCREEN#8 )
|
|
call bitmap_clear
|
|
to:main::@18
|
|
main::@18: scope:[main] from main::@17
|
|
(byte*) SCREEN#3 ← phi( main::@17/(byte*) SCREEN#6 )
|
|
(byte*) screen_fill::screen#0 ← (byte*) SCREEN#3
|
|
(byte) screen_fill::ch#0 ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
|
call screen_fill
|
|
to:main::@19
|
|
main::@19: scope:[main] from main::@18
|
|
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
to:main::@1
|
|
main::@1: scope:[main] from main::@19 main::@21
|
|
(byte) main::i#2 ← phi( main::@19/(byte) main::i#0 main::@21/(byte) main::i#1 )
|
|
(byte) point_init::point_idx#0 ← (byte) main::i#2
|
|
call point_init
|
|
to:main::@20
|
|
main::@20: scope:[main] from main::@1
|
|
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 )
|
|
(byte~) main::$9 ← (byte) main::i#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
(word) bitmap_plot::x#0 ← *((word[4]) x_start#0 + (byte) main::i#3)
|
|
(byte) bitmap_plot::y#0 ← *((byte[4]) y_start#0 + (byte~) main::$9)
|
|
call bitmap_plot
|
|
to:main::@21
|
|
main::@21: scope:[main] from main::@20
|
|
(byte) main::i#4 ← phi( main::@20/(byte) main::i#3 )
|
|
(byte) main::i#1 ← (byte) main::i#4 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
|
(bool~) main::$11 ← (byte) main::i#1 != (byte/signed byte/word/signed word/dword/signed dword) 8
|
|
if((bool~) main::$11) goto main::@1
|
|
to:main::@2
|
|
main::@2: scope:[main] from main::@21 main::@7
|
|
if(true) goto main::@3
|
|
to:main::@return
|
|
main::@3: scope:[main] from main::@2
|
|
to:main::@5
|
|
main::@5: scope:[main] from main::@3 main::@6
|
|
(bool~) main::$12 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) 255
|
|
if((bool~) main::$12) goto main::@6
|
|
to:main::@7
|
|
main::@6: scope:[main] from main::@5
|
|
to:main::@5
|
|
main::@7: scope:[main] from main::@5
|
|
*((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0)
|
|
to:main::@2
|
|
main::@return: scope:[main] from main::@2
|
|
return
|
|
to:@return
|
|
point_init: scope:[point_init] from main::@1
|
|
(byte) point_init::point_idx#1 ← phi( main::@1/(byte) point_init::point_idx#0 )
|
|
(byte~) point_init::$0 ← (byte) point_init::point_idx#1 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
(byte) point_init::point_idx1#0 ← (byte~) point_init::$0
|
|
(signed word~) point_init::$1 ← ((signed word)) *((word[4]) x_end#0 + (byte) point_init::point_idx#1)
|
|
(signed word~) point_init::$2 ← ((signed word)) *((word[4]) x_start#0 + (byte) point_init::point_idx#1)
|
|
(signed word~) point_init::$3 ← (signed word~) point_init::$1 - (signed word~) point_init::$2
|
|
(signed word) point_init::x_diff#0 ← (signed word~) point_init::$3
|
|
(signed word~) point_init::$4 ← ((signed word)) *((byte[4]) y_end#0 + (byte) point_init::point_idx1#0)
|
|
(signed word~) point_init::$5 ← ((signed word)) *((byte[4]) y_start#0 + (byte) point_init::point_idx1#0)
|
|
(signed word~) point_init::$6 ← (signed word~) point_init::$4 - (signed word~) point_init::$5
|
|
(signed word) point_init::y_diff#0 ← (signed word~) point_init::$6
|
|
(signed word) point_init::abs16s1_w#0 ← (signed word) point_init::x_diff#0
|
|
to:point_init::abs16s1
|
|
point_init::abs16s1: scope:[point_init] from point_init
|
|
(byte) point_init::point_idx1#16 ← phi( point_init/(byte) point_init::point_idx1#0 )
|
|
(byte) point_init::point_idx#17 ← phi( point_init/(byte) point_init::point_idx#1 )
|
|
(signed word) point_init::x_diff#14 ← phi( point_init/(signed word) point_init::x_diff#0 )
|
|
(signed word) point_init::y_diff#9 ← phi( point_init/(signed word) point_init::y_diff#0 )
|
|
(signed word) point_init::abs16s1_w#1 ← phi( point_init/(signed word) point_init::abs16s1_w#0 )
|
|
(bool) point_init::abs16s1_$0#0 ← (signed word) point_init::abs16s1_w#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
if((bool) point_init::abs16s1_$0#0) goto point_init::abs16s1_@1
|
|
to:point_init::abs16s1_@3
|
|
point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1
|
|
(byte) point_init::point_idx1#14 ← phi( point_init::abs16s1/(byte) point_init::point_idx1#16 )
|
|
(byte) point_init::point_idx#15 ← phi( point_init::abs16s1/(byte) point_init::point_idx#17 )
|
|
(signed word) point_init::x_diff#12 ← phi( point_init::abs16s1/(signed word) point_init::x_diff#14 )
|
|
(signed word) point_init::y_diff#6 ← phi( point_init::abs16s1/(signed word) point_init::y_diff#9 )
|
|
(signed word) point_init::abs16s1_w#2 ← phi( point_init::abs16s1/(signed word) point_init::abs16s1_w#1 )
|
|
(signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::abs16s1_w#2
|
|
(word) point_init::abs16s1_$3#0 ← ((word)) (signed word) point_init::abs16s1_$2#0
|
|
(word) point_init::abs16s1_return#0 ← (word) point_init::abs16s1_$3#0
|
|
to:point_init::abs16s1_@return
|
|
point_init::abs16s1_@3: scope:[point_init] from point_init::abs16s1
|
|
(byte) point_init::point_idx1#15 ← phi( point_init::abs16s1/(byte) point_init::point_idx1#16 )
|
|
(byte) point_init::point_idx#16 ← phi( point_init::abs16s1/(byte) point_init::point_idx#17 )
|
|
(signed word) point_init::x_diff#13 ← phi( point_init::abs16s1/(signed word) point_init::x_diff#14 )
|
|
(signed word) point_init::y_diff#7 ← phi( point_init::abs16s1/(signed word) point_init::y_diff#9 )
|
|
(signed word) point_init::abs16s1_w#3 ← phi( point_init::abs16s1/(signed word) point_init::abs16s1_w#1 )
|
|
(word) point_init::abs16s1_$1#0 ← ((word)) (signed word) point_init::abs16s1_w#3
|
|
(word) point_init::abs16s1_return#1 ← (word) point_init::abs16s1_$1#0
|
|
to:point_init::abs16s1_@return
|
|
point_init::abs16s1_@return: scope:[point_init] from point_init::abs16s1_@1 point_init::abs16s1_@3
|
|
(byte) point_init::point_idx1#13 ← phi( point_init::abs16s1_@1/(byte) point_init::point_idx1#14 point_init::abs16s1_@3/(byte) point_init::point_idx1#15 )
|
|
(byte) point_init::point_idx#14 ← phi( point_init::abs16s1_@1/(byte) point_init::point_idx#15 point_init::abs16s1_@3/(byte) point_init::point_idx#16 )
|
|
(signed word) point_init::x_diff#11 ← phi( point_init::abs16s1_@1/(signed word) point_init::x_diff#12 point_init::abs16s1_@3/(signed word) point_init::x_diff#13 )
|
|
(signed word) point_init::y_diff#3 ← phi( point_init::abs16s1_@1/(signed word) point_init::y_diff#6 point_init::abs16s1_@3/(signed word) point_init::y_diff#7 )
|
|
(word) point_init::abs16s1_return#3 ← phi( point_init::abs16s1_@1/(word) point_init::abs16s1_return#0 point_init::abs16s1_@3/(word) point_init::abs16s1_return#1 )
|
|
(word) point_init::abs16s1_return#2 ← (word) point_init::abs16s1_return#3
|
|
to:point_init::@9
|
|
point_init::@9: scope:[point_init] from point_init::abs16s1_@return
|
|
(byte) point_init::point_idx1#12 ← phi( point_init::abs16s1_@return/(byte) point_init::point_idx1#13 )
|
|
(byte) point_init::point_idx#13 ← phi( point_init::abs16s1_@return/(byte) point_init::point_idx#14 )
|
|
(signed word) point_init::x_diff#10 ← phi( point_init::abs16s1_@return/(signed word) point_init::x_diff#11 )
|
|
(signed word) point_init::y_diff#1 ← phi( point_init::abs16s1_@return/(signed word) point_init::y_diff#3 )
|
|
(word) point_init::abs16s1_return#4 ← phi( point_init::abs16s1_@return/(word) point_init::abs16s1_return#2 )
|
|
(word~) point_init::$7 ← (word) point_init::abs16s1_return#4
|
|
(signed word) point_init::abs16s2_w#0 ← (signed word) point_init::y_diff#1
|
|
to:point_init::abs16s2
|
|
point_init::abs16s2: scope:[point_init] from point_init::@9
|
|
(signed word) point_init::y_diff#14 ← phi( point_init::@9/(signed word) point_init::y_diff#1 )
|
|
(byte) point_init::point_idx1#11 ← phi( point_init::@9/(byte) point_init::point_idx1#12 )
|
|
(byte) point_init::point_idx#12 ← phi( point_init::@9/(byte) point_init::point_idx#13 )
|
|
(signed word) point_init::x_diff#9 ← phi( point_init::@9/(signed word) point_init::x_diff#10 )
|
|
(signed word) point_init::abs16s2_w#1 ← phi( point_init::@9/(signed word) point_init::abs16s2_w#0 )
|
|
(bool) point_init::abs16s2_$0#0 ← (signed word) point_init::abs16s2_w#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
if((bool) point_init::abs16s2_$0#0) goto point_init::abs16s2_@1
|
|
to:point_init::abs16s2_@3
|
|
point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2
|
|
(signed word) point_init::y_diff#12 ← phi( point_init::abs16s2/(signed word) point_init::y_diff#14 )
|
|
(byte) point_init::point_idx1#8 ← phi( point_init::abs16s2/(byte) point_init::point_idx1#11 )
|
|
(byte) point_init::point_idx#10 ← phi( point_init::abs16s2/(byte) point_init::point_idx#12 )
|
|
(signed word) point_init::x_diff#7 ← phi( point_init::abs16s2/(signed word) point_init::x_diff#9 )
|
|
(signed word) point_init::abs16s2_w#2 ← phi( point_init::abs16s2/(signed word) point_init::abs16s2_w#1 )
|
|
(signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::abs16s2_w#2
|
|
(word) point_init::abs16s2_$3#0 ← ((word)) (signed word) point_init::abs16s2_$2#0
|
|
(word) point_init::abs16s2_return#0 ← (word) point_init::abs16s2_$3#0
|
|
to:point_init::abs16s2_@return
|
|
point_init::abs16s2_@3: scope:[point_init] from point_init::abs16s2
|
|
(signed word) point_init::y_diff#13 ← phi( point_init::abs16s2/(signed word) point_init::y_diff#14 )
|
|
(byte) point_init::point_idx1#9 ← phi( point_init::abs16s2/(byte) point_init::point_idx1#11 )
|
|
(byte) point_init::point_idx#11 ← phi( point_init::abs16s2/(byte) point_init::point_idx#12 )
|
|
(signed word) point_init::x_diff#8 ← phi( point_init::abs16s2/(signed word) point_init::x_diff#9 )
|
|
(signed word) point_init::abs16s2_w#3 ← phi( point_init::abs16s2/(signed word) point_init::abs16s2_w#1 )
|
|
(word) point_init::abs16s2_$1#0 ← ((word)) (signed word) point_init::abs16s2_w#3
|
|
(word) point_init::abs16s2_return#1 ← (word) point_init::abs16s2_$1#0
|
|
to:point_init::abs16s2_@return
|
|
point_init::abs16s2_@return: scope:[point_init] from point_init::abs16s2_@1 point_init::abs16s2_@3
|
|
(signed word) point_init::y_diff#11 ← phi( point_init::abs16s2_@1/(signed word) point_init::y_diff#12 point_init::abs16s2_@3/(signed word) point_init::y_diff#13 )
|
|
(byte) point_init::point_idx1#5 ← phi( point_init::abs16s2_@1/(byte) point_init::point_idx1#8 point_init::abs16s2_@3/(byte) point_init::point_idx1#9 )
|
|
(byte) point_init::point_idx#8 ← phi( point_init::abs16s2_@1/(byte) point_init::point_idx#10 point_init::abs16s2_@3/(byte) point_init::point_idx#11 )
|
|
(signed word) point_init::x_diff#6 ← phi( point_init::abs16s2_@1/(signed word) point_init::x_diff#7 point_init::abs16s2_@3/(signed word) point_init::x_diff#8 )
|
|
(word) point_init::abs16s2_return#3 ← phi( point_init::abs16s2_@1/(word) point_init::abs16s2_return#0 point_init::abs16s2_@3/(word) point_init::abs16s2_return#1 )
|
|
(word) point_init::abs16s2_return#2 ← (word) point_init::abs16s2_return#3
|
|
to:point_init::@10
|
|
point_init::@10: scope:[point_init] from point_init::abs16s2_@return
|
|
(signed word) point_init::y_diff#10 ← phi( point_init::abs16s2_@return/(signed word) point_init::y_diff#11 )
|
|
(byte) point_init::point_idx1#3 ← phi( point_init::abs16s2_@return/(byte) point_init::point_idx1#5 )
|
|
(byte) point_init::point_idx#5 ← phi( point_init::abs16s2_@return/(byte) point_init::point_idx#8 )
|
|
(signed word) point_init::x_diff#3 ← phi( point_init::abs16s2_@return/(signed word) point_init::x_diff#6 )
|
|
(word) point_init::abs16s2_return#4 ← phi( point_init::abs16s2_@return/(word) point_init::abs16s2_return#2 )
|
|
(word~) point_init::$8 ← (word) point_init::abs16s2_return#4
|
|
(bool~) point_init::$9 ← (word~) point_init::$7 > (word~) point_init::$8
|
|
if((bool~) point_init::$9) goto point_init::@1
|
|
to:point_init::@2
|
|
point_init::@1: scope:[point_init] from point_init::@10
|
|
(byte) point_init::point_idx1#10 ← phi( point_init::@10/(byte) point_init::point_idx1#3 )
|
|
(signed word) point_init::y_diff#8 ← phi( point_init::@10/(signed word) point_init::y_diff#10 )
|
|
(byte) point_init::point_idx#7 ← phi( point_init::@10/(byte) point_init::point_idx#5 )
|
|
(signed word) point_init::x_diff#1 ← phi( point_init::@10/(signed word) point_init::x_diff#3 )
|
|
(bool~) point_init::$10 ← (signed word) point_init::x_diff#1 < (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
if((bool~) point_init::$10) goto point_init::@3
|
|
to:point_init::@7
|
|
point_init::@2: scope:[point_init] from point_init::@10 point_init::@11
|
|
(byte) point_init::point_idx1#1 ← phi( point_init::@10/(byte) point_init::point_idx1#3 point_init::@11/(byte) point_init::point_idx1#2 )
|
|
(byte) point_init::point_idx#2 ← phi( point_init::@10/(byte) point_init::point_idx#5 point_init::@11/(byte) point_init::point_idx#6 )
|
|
(word~) point_init::$16 ← *((word[4]) x_start#0 + (byte) point_init::point_idx#2) << (byte/signed byte/word/signed word/dword/signed dword) 4
|
|
*((word[4]) x_cur#0 + (byte) point_init::point_idx#2) ← (word~) point_init::$16
|
|
(word~) point_init::$17 ← ((word)) *((byte[4]) y_start#0 + (byte) point_init::point_idx1#1)
|
|
(word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4
|
|
*((word[4]) y_cur#0 + (byte) point_init::point_idx#2) ← (word~) point_init::$18
|
|
*((byte[4]) delay#0 + (byte) point_init::point_idx1#1) ← (byte) DELAY#0
|
|
to:point_init::@return
|
|
point_init::@3: scope:[point_init] from point_init::@1
|
|
(byte) point_init::point_idx1#6 ← phi( point_init::@1/(byte) point_init::point_idx1#10 )
|
|
(signed word) point_init::y_diff#4 ← phi( point_init::@1/(signed word) point_init::y_diff#8 )
|
|
(signed word) point_init::x_diff#4 ← phi( point_init::@1/(signed word) point_init::x_diff#1 )
|
|
(byte) point_init::point_idx#3 ← phi( point_init::@1/(byte) point_init::point_idx#7 )
|
|
(signed byte/signed word/signed dword~) point_init::$11 ← - (byte/signed byte/word/signed word/dword/signed dword) 16
|
|
*((signed byte[4]) x_add#0 + (byte) point_init::point_idx#3) ← (signed byte/signed word/signed dword~) point_init::$11
|
|
to:point_init::@4
|
|
point_init::@7: scope:[point_init] from point_init::@1
|
|
(byte) point_init::point_idx1#7 ← phi( point_init::@1/(byte) point_init::point_idx1#10 )
|
|
(signed word) point_init::y_diff#5 ← phi( point_init::@1/(signed word) point_init::y_diff#8 )
|
|
(signed word) point_init::x_diff#5 ← phi( point_init::@1/(signed word) point_init::x_diff#1 )
|
|
(byte) point_init::point_idx#4 ← phi( point_init::@1/(byte) point_init::point_idx#7 )
|
|
*((signed byte[4]) x_add#0 + (byte) point_init::point_idx#4) ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
|
to:point_init::@4
|
|
point_init::@4: scope:[point_init] from point_init::@3 point_init::@7
|
|
(byte) point_init::point_idx#9 ← phi( point_init::@3/(byte) point_init::point_idx#3 point_init::@7/(byte) point_init::point_idx#4 )
|
|
(byte) point_init::point_idx1#4 ← phi( point_init::@3/(byte) point_init::point_idx1#6 point_init::@7/(byte) point_init::point_idx1#7 )
|
|
(signed word) point_init::y_diff#2 ← phi( point_init::@3/(signed word) point_init::y_diff#4 point_init::@7/(signed word) point_init::y_diff#5 )
|
|
(signed word) point_init::x_diff#2 ← phi( point_init::@3/(signed word) point_init::x_diff#4 point_init::@7/(signed word) point_init::x_diff#5 )
|
|
(signed word) divr16s::dividend#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
(signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#2
|
|
(signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#2
|
|
call divr16s
|
|
(signed word) divr16s::return#3 ← (signed word) divr16s::return#2
|
|
to:point_init::@11
|
|
point_init::@11: scope:[point_init] from point_init::@4
|
|
(byte) point_init::point_idx#6 ← phi( point_init::@4/(byte) point_init::point_idx#9 )
|
|
(byte) point_init::point_idx1#2 ← phi( point_init::@4/(byte) point_init::point_idx1#4 )
|
|
(signed word) divr16s::return#5 ← phi( point_init::@4/(signed word) divr16s::return#3 )
|
|
(signed word~) point_init::$12 ← (signed word) divr16s::return#5
|
|
(signed word) point_init::x_stepf#0 ← (signed word~) point_init::$12
|
|
(byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0
|
|
(byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
|
(signed byte~) point_init::$15 ← ((signed byte)) (byte~) point_init::$14
|
|
*((signed byte[4]) y_add#0 + (byte) point_init::point_idx1#2) ← (signed byte~) point_init::$15
|
|
to:point_init::@2
|
|
point_init::@return: scope:[point_init] from point_init::@2
|
|
return
|
|
to:@return
|
|
screen_fill: scope:[screen_fill] from main::@18
|
|
(byte*) screen_fill::screen#4 ← phi( main::@18/(byte*) screen_fill::screen#0 )
|
|
(byte) screen_fill::ch#3 ← phi( main::@18/(byte) screen_fill::ch#0 )
|
|
(byte) screen_fill::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
to:screen_fill::@1
|
|
screen_fill::@1: scope:[screen_fill] from screen_fill screen_fill::@3
|
|
(byte) screen_fill::y#4 ← phi( screen_fill/(byte) screen_fill::y#0 screen_fill::@3/(byte) screen_fill::y#1 )
|
|
(byte*) screen_fill::screen#3 ← phi( screen_fill/(byte*) screen_fill::screen#4 screen_fill::@3/(byte*) screen_fill::screen#5 )
|
|
(byte) screen_fill::ch#2 ← phi( screen_fill/(byte) screen_fill::ch#3 screen_fill::@3/(byte) screen_fill::ch#4 )
|
|
(byte) screen_fill::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
to:screen_fill::@2
|
|
screen_fill::@2: scope:[screen_fill] from screen_fill::@1 screen_fill::@2
|
|
(byte) screen_fill::y#3 ← phi( screen_fill::@1/(byte) screen_fill::y#4 screen_fill::@2/(byte) screen_fill::y#3 )
|
|
(byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte) screen_fill::x#0 screen_fill::@2/(byte) screen_fill::x#1 )
|
|
(byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 )
|
|
(byte) screen_fill::ch#1 ← phi( screen_fill::@1/(byte) screen_fill::ch#2 screen_fill::@2/(byte) screen_fill::ch#1 )
|
|
*((byte*) screen_fill::screen#2) ← (byte) screen_fill::ch#1
|
|
(byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2
|
|
(byte) screen_fill::x#1 ← (byte) screen_fill::x#2 + rangenext(0,39)
|
|
(bool~) screen_fill::$0 ← (byte) screen_fill::x#1 != rangelast(0,39)
|
|
if((bool~) screen_fill::$0) goto screen_fill::@2
|
|
to:screen_fill::@3
|
|
screen_fill::@3: scope:[screen_fill] from screen_fill::@2
|
|
(byte*) screen_fill::screen#5 ← phi( screen_fill::@2/(byte*) screen_fill::screen#1 )
|
|
(byte) screen_fill::ch#4 ← phi( screen_fill::@2/(byte) screen_fill::ch#1 )
|
|
(byte) screen_fill::y#2 ← phi( screen_fill::@2/(byte) screen_fill::y#3 )
|
|
(byte) screen_fill::y#1 ← (byte) screen_fill::y#2 + rangenext(0,24)
|
|
(bool~) screen_fill::$1 ← (byte) screen_fill::y#1 != rangelast(0,24)
|
|
if((bool~) screen_fill::$1) goto screen_fill::@1
|
|
to:screen_fill::@return
|
|
screen_fill::@return: scope:[screen_fill] from screen_fill::@3
|
|
return
|
|
to:@return
|
|
@15: scope:[] from @11
|
|
(byte*) BITMAP#11 ← phi( @11/(byte*) BITMAP#0 )
|
|
(byte*) SCREEN#9 ← phi( @11/(byte*) SCREEN#0 )
|
|
(byte[256]) bitmap_plot_ylo#0 ← { fill( 256, 0) }
|
|
(byte[256]) bitmap_plot_yhi#0 ← { fill( 256, 0) }
|
|
(byte[256]) bitmap_plot_bit#0 ← { fill( 256, 0) }
|
|
to:@18
|
|
bitmap_init: scope:[bitmap_init] from main::@16
|
|
(byte*) bitmap_init::bitmap#5 ← phi( main::@16/(byte*) bitmap_init::bitmap#0 )
|
|
(byte) bitmap_init::bits#0 ← (byte/word/signed word/dword/signed dword) 128
|
|
(byte) bitmap_init::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
to:bitmap_init::@1
|
|
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
|
|
(byte*) bitmap_init::bitmap#3 ← phi( bitmap_init/(byte*) bitmap_init::bitmap#5 bitmap_init::@2/(byte*) bitmap_init::bitmap#2 )
|
|
(byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) bitmap_init::x#0 bitmap_init::@2/(byte) bitmap_init::x#1 )
|
|
(byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) bitmap_init::bits#0 bitmap_init::@2/(byte) bitmap_init::bits#4 )
|
|
*((byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
|
|
(byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
(bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
(bool~) bitmap_init::$1 ← ! (bool~) bitmap_init::$0
|
|
if((bool~) bitmap_init::$1) goto bitmap_init::@2
|
|
to:bitmap_init::@5
|
|
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@5
|
|
(byte*) bitmap_init::bitmap#2 ← phi( bitmap_init::@1/(byte*) bitmap_init::bitmap#3 bitmap_init::@5/(byte*) bitmap_init::bitmap#4 )
|
|
(byte) bitmap_init::bits#4 ← phi( bitmap_init::@1/(byte) bitmap_init::bits#1 bitmap_init::@5/(byte) bitmap_init::bits#2 )
|
|
(byte) bitmap_init::x#3 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 bitmap_init::@5/(byte) bitmap_init::x#4 )
|
|
(byte) bitmap_init::x#1 ← (byte) bitmap_init::x#3 + rangenext(0,255)
|
|
(bool~) bitmap_init::$2 ← (byte) bitmap_init::x#1 != rangelast(0,255)
|
|
if((bool~) bitmap_init::$2) goto bitmap_init::@1
|
|
to:bitmap_init::@6
|
|
bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@1
|
|
(byte*) bitmap_init::bitmap#4 ← phi( bitmap_init::@1/(byte*) bitmap_init::bitmap#3 )
|
|
(byte) bitmap_init::x#4 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 )
|
|
(byte) bitmap_init::bits#2 ← (byte/word/signed word/dword/signed dword) 128
|
|
to:bitmap_init::@2
|
|
bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@2
|
|
(byte*) bitmap_init::bitmap#1 ← phi( bitmap_init::@2/(byte*) bitmap_init::bitmap#2 )
|
|
(byte*) bitmap_init::yoffs#0 ← (byte*) bitmap_init::bitmap#1
|
|
(byte) bitmap_init::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
to:bitmap_init::@3
|
|
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@4 bitmap_init::@6
|
|
(byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@6/(byte*) bitmap_init::yoffs#0 )
|
|
(byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@6/(byte) bitmap_init::y#0 )
|
|
(byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
|
(byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
|
|
(byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4
|
|
*((byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
|
|
(byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
|
|
*((byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
|
|
(byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
|
(bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte/signed byte/word/signed word/dword/signed dword) 7
|
|
(bool~) bitmap_init::$9 ← ! (bool~) bitmap_init::$8
|
|
if((bool~) bitmap_init::$9) goto bitmap_init::@4
|
|
to:bitmap_init::@7
|
|
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7
|
|
(byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 )
|
|
(byte) bitmap_init::y#3 ← phi( bitmap_init::@3/(byte) bitmap_init::y#2 bitmap_init::@7/(byte) bitmap_init::y#4 )
|
|
(byte) bitmap_init::y#1 ← (byte) bitmap_init::y#3 + rangenext(0,255)
|
|
(bool~) bitmap_init::$12 ← (byte) bitmap_init::y#1 != rangelast(0,255)
|
|
if((bool~) bitmap_init::$12) goto bitmap_init::@3
|
|
to:bitmap_init::@return
|
|
bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3
|
|
(byte) bitmap_init::y#4 ← phi( bitmap_init::@3/(byte) bitmap_init::y#2 )
|
|
(byte*) bitmap_init::yoffs#3 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 )
|
|
(word/signed word/dword/signed dword~) bitmap_init::$10 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 8
|
|
(byte*~) bitmap_init::$11 ← (byte*) bitmap_init::yoffs#3 + (word/signed word/dword/signed dword~) bitmap_init::$10
|
|
(byte*) bitmap_init::yoffs#1 ← (byte*~) bitmap_init::$11
|
|
to:bitmap_init::@4
|
|
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
|
|
return
|
|
to:@return
|
|
bitmap_clear: scope:[bitmap_clear] from main::@17
|
|
(byte*~) bitmap_clear::$0 ← ((byte*)) { *((byte[256]) bitmap_plot_yhi#0 + (byte/signed byte/word/signed word/dword/signed dword) 0), *((byte[256]) bitmap_plot_ylo#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) }
|
|
(byte*) bitmap_clear::bitmap#0 ← (byte*~) bitmap_clear::$0
|
|
(byte) bitmap_clear::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
to:bitmap_clear::@1
|
|
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3
|
|
(byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte) bitmap_clear::y#0 bitmap_clear::@3/(byte) bitmap_clear::y#1 )
|
|
(byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*) bitmap_clear::bitmap#0 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#4 )
|
|
(byte) bitmap_clear::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
to:bitmap_clear::@2
|
|
bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2
|
|
(byte) bitmap_clear::y#3 ← phi( bitmap_clear::@1/(byte) bitmap_clear::y#4 bitmap_clear::@2/(byte) bitmap_clear::y#3 )
|
|
(byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte) bitmap_clear::x#0 bitmap_clear::@2/(byte) bitmap_clear::x#1 )
|
|
(byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 )
|
|
*((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
(byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2
|
|
(byte) bitmap_clear::x#1 ← (byte) bitmap_clear::x#2 + rangenext(0,199)
|
|
(bool~) bitmap_clear::$1 ← (byte) bitmap_clear::x#1 != rangelast(0,199)
|
|
if((bool~) bitmap_clear::$1) goto bitmap_clear::@2
|
|
to:bitmap_clear::@3
|
|
bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2
|
|
(byte*) bitmap_clear::bitmap#4 ← phi( bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 )
|
|
(byte) bitmap_clear::y#2 ← phi( bitmap_clear::@2/(byte) bitmap_clear::y#3 )
|
|
(byte) bitmap_clear::y#1 ← (byte) bitmap_clear::y#2 + rangenext(0,39)
|
|
(bool~) bitmap_clear::$2 ← (byte) bitmap_clear::y#1 != rangelast(0,39)
|
|
if((bool~) bitmap_clear::$2) goto bitmap_clear::@1
|
|
to:bitmap_clear::@return
|
|
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
|
|
return
|
|
to:@return
|
|
bitmap_plot: scope:[bitmap_plot] from main::@20
|
|
(word) bitmap_plot::x#1 ← phi( main::@20/(word) bitmap_plot::x#0 )
|
|
(byte) bitmap_plot::y#1 ← phi( main::@20/(byte) bitmap_plot::y#0 )
|
|
(byte*~) bitmap_plot::$0 ← ((byte*)) { *((byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#1), *((byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#1) }
|
|
(byte*) bitmap_plot::plotter#0 ← (byte*~) bitmap_plot::$0
|
|
(word~) bitmap_plot::$1 ← (word) bitmap_plot::x#1 & (word/dword/signed dword) 65528
|
|
(byte*) bitmap_plot::plotter#1 ← (byte*) bitmap_plot::plotter#0 + (word~) bitmap_plot::$1
|
|
(byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#1
|
|
*((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2)
|
|
to:bitmap_plot::@return
|
|
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
|
return
|
|
to:@return
|
|
@18: scope:[] from @15
|
|
(byte*) BITMAP#10 ← phi( @15/(byte*) BITMAP#11 )
|
|
(byte*) SCREEN#4 ← phi( @15/(byte*) SCREEN#9 )
|
|
call main
|
|
to:@19
|
|
@19: scope:[] from @18
|
|
to:@end
|
|
@end: scope:[] from @19
|
|
|
|
SYMBOL TABLE SSA
|
|
(label) @11
|
|
(label) @15
|
|
(label) @18
|
|
(label) @19
|
|
(label) @begin
|
|
(label) @end
|
|
(byte*) BITMAP
|
|
(byte*) BITMAP#0
|
|
(byte*) BITMAP#1
|
|
(byte*) BITMAP#10
|
|
(byte*) BITMAP#11
|
|
(byte*) BITMAP#2
|
|
(byte*) BITMAP#3
|
|
(byte*) BITMAP#4
|
|
(byte*) BITMAP#5
|
|
(byte*) BITMAP#6
|
|
(byte*) BITMAP#7
|
|
(byte*) BITMAP#8
|
|
(byte*) BITMAP#9
|
|
(byte*) BORDERCOL
|
|
(byte*) BORDERCOL#0
|
|
(byte*) CIA2_PORT_A
|
|
(byte*) CIA2_PORT_A#0
|
|
(byte*) CIA2_PORT_A_DDR
|
|
(byte*) CIA2_PORT_A_DDR#0
|
|
(byte*) D011
|
|
(byte*) D011#0
|
|
(byte*) D018
|
|
(byte*) D018#0
|
|
(byte) DELAY
|
|
(byte) DELAY#0
|
|
(byte*) PROCPORT
|
|
(byte*) PROCPORT#0
|
|
(byte*) PROCPORT_DDR
|
|
(byte*) PROCPORT_DDR#0
|
|
(byte) PROCPORT_DDR_MEMORY_MASK
|
|
(byte) PROCPORT_DDR_MEMORY_MASK#0
|
|
(byte) PROCPORT_RAM_IO
|
|
(byte) PROCPORT_RAM_IO#0
|
|
(byte*) RASTER
|
|
(byte*) RASTER#0
|
|
(byte*) SCREEN
|
|
(byte*) SCREEN#0
|
|
(byte*) SCREEN#1
|
|
(byte*) SCREEN#10
|
|
(byte*) SCREEN#11
|
|
(byte*) SCREEN#12
|
|
(byte*) SCREEN#13
|
|
(byte*) SCREEN#2
|
|
(byte*) SCREEN#3
|
|
(byte*) SCREEN#4
|
|
(byte*) SCREEN#5
|
|
(byte*) SCREEN#6
|
|
(byte*) SCREEN#7
|
|
(byte*) SCREEN#8
|
|
(byte*) SCREEN#9
|
|
(byte) VIC_BMM
|
|
(byte) VIC_BMM#0
|
|
(byte) VIC_DEN
|
|
(byte) VIC_DEN#0
|
|
(byte) VIC_RSEL
|
|
(byte) VIC_RSEL#0
|
|
(void()) bitmap_clear()
|
|
(byte*~) bitmap_clear::$0
|
|
(bool~) bitmap_clear::$1
|
|
(bool~) bitmap_clear::$2
|
|
(label) bitmap_clear::@1
|
|
(label) bitmap_clear::@2
|
|
(label) bitmap_clear::@3
|
|
(label) bitmap_clear::@return
|
|
(byte*) bitmap_clear::bitmap
|
|
(byte*) bitmap_clear::bitmap#0
|
|
(byte*) bitmap_clear::bitmap#1
|
|
(byte*) bitmap_clear::bitmap#2
|
|
(byte*) bitmap_clear::bitmap#3
|
|
(byte*) bitmap_clear::bitmap#4
|
|
(byte) bitmap_clear::x
|
|
(byte) bitmap_clear::x#0
|
|
(byte) bitmap_clear::x#1
|
|
(byte) bitmap_clear::x#2
|
|
(byte) bitmap_clear::y
|
|
(byte) bitmap_clear::y#0
|
|
(byte) bitmap_clear::y#1
|
|
(byte) bitmap_clear::y#2
|
|
(byte) bitmap_clear::y#3
|
|
(byte) bitmap_clear::y#4
|
|
(void()) bitmap_init((byte*) bitmap_init::bitmap)
|
|
(bool~) bitmap_init::$0
|
|
(bool~) bitmap_init::$1
|
|
(word/signed word/dword/signed dword~) bitmap_init::$10
|
|
(byte*~) bitmap_init::$11
|
|
(bool~) bitmap_init::$12
|
|
(bool~) bitmap_init::$2
|
|
(byte~) bitmap_init::$3
|
|
(byte~) bitmap_init::$4
|
|
(byte~) bitmap_init::$5
|
|
(byte~) bitmap_init::$6
|
|
(byte~) bitmap_init::$7
|
|
(bool~) bitmap_init::$8
|
|
(bool~) bitmap_init::$9
|
|
(label) bitmap_init::@1
|
|
(label) bitmap_init::@2
|
|
(label) bitmap_init::@3
|
|
(label) bitmap_init::@4
|
|
(label) bitmap_init::@5
|
|
(label) bitmap_init::@6
|
|
(label) bitmap_init::@7
|
|
(label) bitmap_init::@return
|
|
(byte*) bitmap_init::bitmap
|
|
(byte*) bitmap_init::bitmap#0
|
|
(byte*) bitmap_init::bitmap#1
|
|
(byte*) bitmap_init::bitmap#2
|
|
(byte*) bitmap_init::bitmap#3
|
|
(byte*) bitmap_init::bitmap#4
|
|
(byte*) bitmap_init::bitmap#5
|
|
(byte) bitmap_init::bits
|
|
(byte) bitmap_init::bits#0
|
|
(byte) bitmap_init::bits#1
|
|
(byte) bitmap_init::bits#2
|
|
(byte) bitmap_init::bits#3
|
|
(byte) bitmap_init::bits#4
|
|
(byte) bitmap_init::x
|
|
(byte) bitmap_init::x#0
|
|
(byte) bitmap_init::x#1
|
|
(byte) bitmap_init::x#2
|
|
(byte) bitmap_init::x#3
|
|
(byte) bitmap_init::x#4
|
|
(byte) bitmap_init::y
|
|
(byte) bitmap_init::y#0
|
|
(byte) bitmap_init::y#1
|
|
(byte) bitmap_init::y#2
|
|
(byte) bitmap_init::y#3
|
|
(byte) bitmap_init::y#4
|
|
(byte*) bitmap_init::yoffs
|
|
(byte*) bitmap_init::yoffs#0
|
|
(byte*) bitmap_init::yoffs#1
|
|
(byte*) bitmap_init::yoffs#2
|
|
(byte*) bitmap_init::yoffs#3
|
|
(byte*) bitmap_init::yoffs#4
|
|
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
|
(byte*~) bitmap_plot::$0
|
|
(word~) bitmap_plot::$1
|
|
(byte~) bitmap_plot::$2
|
|
(label) bitmap_plot::@return
|
|
(byte*) bitmap_plot::plotter
|
|
(byte*) bitmap_plot::plotter#0
|
|
(byte*) bitmap_plot::plotter#1
|
|
(word) bitmap_plot::x
|
|
(word) bitmap_plot::x#0
|
|
(word) bitmap_plot::x#1
|
|
(byte) bitmap_plot::y
|
|
(byte) bitmap_plot::y#0
|
|
(byte) bitmap_plot::y#1
|
|
(byte[256]) bitmap_plot_bit
|
|
(byte[256]) bitmap_plot_bit#0
|
|
(byte[256]) bitmap_plot_yhi
|
|
(byte[256]) bitmap_plot_yhi#0
|
|
(byte[256]) bitmap_plot_ylo
|
|
(byte[256]) bitmap_plot_ylo#0
|
|
(byte[4]) delay
|
|
(byte[4]) delay#0
|
|
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
|
|
(bool~) divr16s::$0
|
|
(bool~) divr16s::$1
|
|
(word~) divr16s::$10
|
|
(signed word~) divr16s::$11
|
|
(word~) divr16s::$12
|
|
(byte/word/dword~) divr16s::$13
|
|
(word~) divr16s::$14
|
|
(bool~) divr16s::$15
|
|
(signed word~) divr16s::$18
|
|
(signed word~) divr16s::$19
|
|
(bool~) divr16s::$2
|
|
(signed word~) divr16s::$21
|
|
(word~) divr16s::$3
|
|
(word~) divr16s::$4
|
|
(signed word~) divr16s::$5
|
|
(word~) divr16s::$6
|
|
(signed word~) divr16s::$7
|
|
(word~) divr16s::$8
|
|
(bool~) divr16s::$9
|
|
(label) divr16s::@1
|
|
(label) divr16s::@11
|
|
(label) divr16s::@15
|
|
(label) divr16s::@2
|
|
(label) divr16s::@3
|
|
(label) divr16s::@4
|
|
(label) divr16s::@5
|
|
(label) divr16s::@7
|
|
(label) divr16s::@9
|
|
(label) divr16s::@return
|
|
(signed word) divr16s::dividend
|
|
(signed word) divr16s::dividend#0
|
|
(signed word) divr16s::dividend#1
|
|
(signed word) divr16s::dividend#2
|
|
(signed word) divr16s::dividend#3
|
|
(word) divr16s::dividendu
|
|
(word) divr16s::dividendu#0
|
|
(word) divr16s::dividendu#1
|
|
(word) divr16s::dividendu#2
|
|
(word) divr16s::dividendu#3
|
|
(word) divr16s::dividendu#4
|
|
(word) divr16s::dividendu#5
|
|
(word) divr16s::dividendu#6
|
|
(signed word) divr16s::divisor
|
|
(signed word) divr16s::divisor#0
|
|
(signed word) divr16s::divisor#1
|
|
(signed word) divr16s::divisor#2
|
|
(signed word) divr16s::divisor#3
|
|
(signed word) divr16s::divisor#4
|
|
(signed word) divr16s::divisor#5
|
|
(signed word) divr16s::divisor#6
|
|
(word) divr16s::divisoru
|
|
(word) divr16s::divisoru#0
|
|
(word) divr16s::divisoru#1
|
|
(word) divr16s::divisoru#2
|
|
(word) divr16s::divisoru#3
|
|
(byte) divr16s::neg
|
|
(byte) divr16s::neg#0
|
|
(byte) divr16s::neg#1
|
|
(byte) divr16s::neg#2
|
|
(byte) divr16s::neg#3
|
|
(byte) divr16s::neg#4
|
|
(byte) divr16s::neg#5
|
|
(byte) divr16s::neg#6
|
|
(byte) divr16s::neg#7
|
|
(byte) divr16s::neg#8
|
|
(signed word) divr16s::rem
|
|
(signed word) divr16s::rem#0
|
|
(signed word) divr16s::rem#1
|
|
(signed word) divr16s::rem#2
|
|
(signed word) divr16s::rem#3
|
|
(word) divr16s::remu
|
|
(word) divr16s::remu#0
|
|
(word) divr16s::remu#1
|
|
(word) divr16s::remu#2
|
|
(word) divr16s::remu#3
|
|
(word) divr16s::remu#4
|
|
(word) divr16s::remu#5
|
|
(word) divr16s::remu#6
|
|
(word) divr16s::resultu
|
|
(word) divr16s::resultu#0
|
|
(word) divr16s::resultu#1
|
|
(word) divr16s::resultu#2
|
|
(signed word) divr16s::return
|
|
(signed word) divr16s::return#0
|
|
(signed word) divr16s::return#1
|
|
(signed word) divr16s::return#2
|
|
(signed word) divr16s::return#3
|
|
(signed word) divr16s::return#4
|
|
(signed word) divr16s::return#5
|
|
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
|
(word~) divr16u::$0
|
|
(byte~) divr16u::$1
|
|
(word~) divr16u::$10
|
|
(bool~) divr16u::$11
|
|
(byte~) divr16u::$2
|
|
(bool~) divr16u::$3
|
|
(bool~) divr16u::$4
|
|
(word/dword~) divr16u::$5
|
|
(word~) divr16u::$6
|
|
(word~) divr16u::$7
|
|
(bool~) divr16u::$8
|
|
(bool~) divr16u::$9
|
|
(label) divr16u::@1
|
|
(label) divr16u::@2
|
|
(label) divr16u::@3
|
|
(label) divr16u::@4
|
|
(label) divr16u::@5
|
|
(label) divr16u::@6
|
|
(label) divr16u::@return
|
|
(word) divr16u::dividend
|
|
(word) divr16u::dividend#0
|
|
(word) divr16u::dividend#1
|
|
(word) divr16u::dividend#2
|
|
(word) divr16u::dividend#3
|
|
(word) divr16u::dividend#4
|
|
(word) divr16u::dividend#5
|
|
(word) divr16u::dividend#6
|
|
(word) divr16u::dividend#7
|
|
(word) divr16u::divisor
|
|
(word) divr16u::divisor#0
|
|
(word) divr16u::divisor#1
|
|
(word) divr16u::divisor#2
|
|
(word) divr16u::divisor#3
|
|
(word) divr16u::divisor#4
|
|
(word) divr16u::divisor#5
|
|
(word) divr16u::divisor#6
|
|
(byte) divr16u::i
|
|
(byte) divr16u::i#0
|
|
(byte) divr16u::i#1
|
|
(byte) divr16u::i#2
|
|
(byte) divr16u::i#3
|
|
(byte) divr16u::i#4
|
|
(byte) divr16u::i#5
|
|
(byte) divr16u::i#6
|
|
(word) divr16u::quotient
|
|
(word) divr16u::quotient#0
|
|
(word) divr16u::quotient#1
|
|
(word) divr16u::quotient#2
|
|
(word) divr16u::quotient#3
|
|
(word) divr16u::quotient#4
|
|
(word) divr16u::quotient#5
|
|
(word) divr16u::quotient#6
|
|
(word) divr16u::quotient#7
|
|
(word) divr16u::quotient#8
|
|
(word) divr16u::rem
|
|
(word) divr16u::rem#0
|
|
(word) divr16u::rem#1
|
|
(word) divr16u::rem#2
|
|
(word) divr16u::rem#3
|
|
(word) divr16u::rem#4
|
|
(word) divr16u::rem#5
|
|
(word) divr16u::rem#6
|
|
(word) divr16u::rem#7
|
|
(word) divr16u::rem#8
|
|
(word) divr16u::rem#9
|
|
(word) divr16u::return
|
|
(word) divr16u::return#0
|
|
(word) divr16u::return#1
|
|
(word) divr16u::return#2
|
|
(word) divr16u::return#3
|
|
(word) divr16u::return#4
|
|
(void()) main()
|
|
(byte~) main::$0
|
|
(byte~) main::$1
|
|
(bool~) main::$11
|
|
(bool~) main::$12
|
|
(byte/word/dword~) main::$2
|
|
(byte~) main::$4
|
|
(byte~) main::$9
|
|
(label) main::@1
|
|
(label) main::@15
|
|
(label) main::@16
|
|
(label) main::@17
|
|
(label) main::@18
|
|
(label) main::@19
|
|
(label) main::@2
|
|
(label) main::@20
|
|
(label) main::@21
|
|
(label) main::@3
|
|
(label) main::@5
|
|
(label) main::@6
|
|
(label) main::@7
|
|
(label) main::@return
|
|
(byte) main::i
|
|
(byte) main::i#0
|
|
(byte) main::i#1
|
|
(byte) main::i#2
|
|
(byte) main::i#3
|
|
(byte) main::i#4
|
|
(label) main::toD0181
|
|
(word~) main::toD0181_$0
|
|
(word) main::toD0181_$0#0
|
|
(word~) main::toD0181_$1
|
|
(word) main::toD0181_$1#0
|
|
(word~) main::toD0181_$2
|
|
(word) main::toD0181_$2#0
|
|
(byte~) main::toD0181_$3
|
|
(byte) main::toD0181_$3#0
|
|
(word~) main::toD0181_$4
|
|
(word) main::toD0181_$4#0
|
|
(byte~) main::toD0181_$5
|
|
(byte) main::toD0181_$5#0
|
|
(byte~) main::toD0181_$6
|
|
(byte) main::toD0181_$6#0
|
|
(byte~) main::toD0181_$7
|
|
(byte) main::toD0181_$7#0
|
|
(byte~) main::toD0181_$8
|
|
(byte) main::toD0181_$8#0
|
|
(label) main::toD0181_@return
|
|
(byte*) main::toD0181_gfx
|
|
(byte*) main::toD0181_gfx#0
|
|
(byte*) main::toD0181_gfx#1
|
|
(byte) main::toD0181_return
|
|
(byte) main::toD0181_return#0
|
|
(byte) main::toD0181_return#1
|
|
(byte) main::toD0181_return#2
|
|
(byte) main::toD0181_return#3
|
|
(byte*) main::toD0181_screen
|
|
(byte*) main::toD0181_screen#0
|
|
(byte*) main::toD0181_screen#1
|
|
(label) main::vicSelectGfxBank1
|
|
(byte~) main::vicSelectGfxBank1_$0
|
|
(byte) main::vicSelectGfxBank1_$0#0
|
|
(label) main::vicSelectGfxBank1_@1
|
|
(byte*) main::vicSelectGfxBank1_gfx
|
|
(byte*) main::vicSelectGfxBank1_gfx#0
|
|
(byte*) main::vicSelectGfxBank1_gfx#1
|
|
(label) main::vicSelectGfxBank1_toDd001
|
|
(word~) main::vicSelectGfxBank1_toDd001_$0
|
|
(word) main::vicSelectGfxBank1_toDd001_$0#0
|
|
(byte~) main::vicSelectGfxBank1_toDd001_$1
|
|
(byte) main::vicSelectGfxBank1_toDd001_$1#0
|
|
(byte~) main::vicSelectGfxBank1_toDd001_$2
|
|
(byte) main::vicSelectGfxBank1_toDd001_$2#0
|
|
(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3
|
|
(byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0
|
|
(label) main::vicSelectGfxBank1_toDd001_@return
|
|
(byte*) main::vicSelectGfxBank1_toDd001_gfx
|
|
(byte*) main::vicSelectGfxBank1_toDd001_gfx#0
|
|
(byte*) main::vicSelectGfxBank1_toDd001_gfx#1
|
|
(byte) main::vicSelectGfxBank1_toDd001_return
|
|
(byte) main::vicSelectGfxBank1_toDd001_return#0
|
|
(byte) main::vicSelectGfxBank1_toDd001_return#1
|
|
(byte) main::vicSelectGfxBank1_toDd001_return#2
|
|
(byte) main::vicSelectGfxBank1_toDd001_return#3
|
|
(void()) point_init((byte) point_init::point_idx)
|
|
(byte~) point_init::$0
|
|
(signed word~) point_init::$1
|
|
(bool~) point_init::$10
|
|
(signed byte/signed word/signed dword~) point_init::$11
|
|
(signed word~) point_init::$12
|
|
(byte~) point_init::$13
|
|
(byte~) point_init::$14
|
|
(signed byte~) point_init::$15
|
|
(word~) point_init::$16
|
|
(word~) point_init::$17
|
|
(word~) point_init::$18
|
|
(signed word~) point_init::$2
|
|
(signed word~) point_init::$3
|
|
(signed word~) point_init::$4
|
|
(signed word~) point_init::$5
|
|
(signed word~) point_init::$6
|
|
(word~) point_init::$7
|
|
(word~) point_init::$8
|
|
(bool~) point_init::$9
|
|
(label) point_init::@1
|
|
(label) point_init::@10
|
|
(label) point_init::@11
|
|
(label) point_init::@2
|
|
(label) point_init::@3
|
|
(label) point_init::@4
|
|
(label) point_init::@7
|
|
(label) point_init::@9
|
|
(label) point_init::@return
|
|
(label) point_init::abs16s1
|
|
(bool~) point_init::abs16s1_$0
|
|
(bool) point_init::abs16s1_$0#0
|
|
(word~) point_init::abs16s1_$1
|
|
(word) point_init::abs16s1_$1#0
|
|
(signed word~) point_init::abs16s1_$2
|
|
(signed word) point_init::abs16s1_$2#0
|
|
(word~) point_init::abs16s1_$3
|
|
(word) point_init::abs16s1_$3#0
|
|
(label) point_init::abs16s1_@1
|
|
(label) point_init::abs16s1_@3
|
|
(label) point_init::abs16s1_@return
|
|
(word) point_init::abs16s1_return
|
|
(word) point_init::abs16s1_return#0
|
|
(word) point_init::abs16s1_return#1
|
|
(word) point_init::abs16s1_return#2
|
|
(word) point_init::abs16s1_return#3
|
|
(word) point_init::abs16s1_return#4
|
|
(signed word) point_init::abs16s1_w
|
|
(signed word) point_init::abs16s1_w#0
|
|
(signed word) point_init::abs16s1_w#1
|
|
(signed word) point_init::abs16s1_w#2
|
|
(signed word) point_init::abs16s1_w#3
|
|
(label) point_init::abs16s2
|
|
(bool~) point_init::abs16s2_$0
|
|
(bool) point_init::abs16s2_$0#0
|
|
(word~) point_init::abs16s2_$1
|
|
(word) point_init::abs16s2_$1#0
|
|
(signed word~) point_init::abs16s2_$2
|
|
(signed word) point_init::abs16s2_$2#0
|
|
(word~) point_init::abs16s2_$3
|
|
(word) point_init::abs16s2_$3#0
|
|
(label) point_init::abs16s2_@1
|
|
(label) point_init::abs16s2_@3
|
|
(label) point_init::abs16s2_@return
|
|
(word) point_init::abs16s2_return
|
|
(word) point_init::abs16s2_return#0
|
|
(word) point_init::abs16s2_return#1
|
|
(word) point_init::abs16s2_return#2
|
|
(word) point_init::abs16s2_return#3
|
|
(word) point_init::abs16s2_return#4
|
|
(signed word) point_init::abs16s2_w
|
|
(signed word) point_init::abs16s2_w#0
|
|
(signed word) point_init::abs16s2_w#1
|
|
(signed word) point_init::abs16s2_w#2
|
|
(signed word) point_init::abs16s2_w#3
|
|
(byte) point_init::point_idx
|
|
(byte) point_init::point_idx#0
|
|
(byte) point_init::point_idx#1
|
|
(byte) point_init::point_idx#10
|
|
(byte) point_init::point_idx#11
|
|
(byte) point_init::point_idx#12
|
|
(byte) point_init::point_idx#13
|
|
(byte) point_init::point_idx#14
|
|
(byte) point_init::point_idx#15
|
|
(byte) point_init::point_idx#16
|
|
(byte) point_init::point_idx#17
|
|
(byte) point_init::point_idx#2
|
|
(byte) point_init::point_idx#3
|
|
(byte) point_init::point_idx#4
|
|
(byte) point_init::point_idx#5
|
|
(byte) point_init::point_idx#6
|
|
(byte) point_init::point_idx#7
|
|
(byte) point_init::point_idx#8
|
|
(byte) point_init::point_idx#9
|
|
(byte) point_init::point_idx1
|
|
(byte) point_init::point_idx1#0
|
|
(byte) point_init::point_idx1#1
|
|
(byte) point_init::point_idx1#10
|
|
(byte) point_init::point_idx1#11
|
|
(byte) point_init::point_idx1#12
|
|
(byte) point_init::point_idx1#13
|
|
(byte) point_init::point_idx1#14
|
|
(byte) point_init::point_idx1#15
|
|
(byte) point_init::point_idx1#16
|
|
(byte) point_init::point_idx1#2
|
|
(byte) point_init::point_idx1#3
|
|
(byte) point_init::point_idx1#4
|
|
(byte) point_init::point_idx1#5
|
|
(byte) point_init::point_idx1#6
|
|
(byte) point_init::point_idx1#7
|
|
(byte) point_init::point_idx1#8
|
|
(byte) point_init::point_idx1#9
|
|
(signed word) point_init::x_diff
|
|
(signed word) point_init::x_diff#0
|
|
(signed word) point_init::x_diff#1
|
|
(signed word) point_init::x_diff#10
|
|
(signed word) point_init::x_diff#11
|
|
(signed word) point_init::x_diff#12
|
|
(signed word) point_init::x_diff#13
|
|
(signed word) point_init::x_diff#14
|
|
(signed word) point_init::x_diff#2
|
|
(signed word) point_init::x_diff#3
|
|
(signed word) point_init::x_diff#4
|
|
(signed word) point_init::x_diff#5
|
|
(signed word) point_init::x_diff#6
|
|
(signed word) point_init::x_diff#7
|
|
(signed word) point_init::x_diff#8
|
|
(signed word) point_init::x_diff#9
|
|
(signed word) point_init::x_stepf
|
|
(signed word) point_init::x_stepf#0
|
|
(signed word) point_init::y_diff
|
|
(signed word) point_init::y_diff#0
|
|
(signed word) point_init::y_diff#1
|
|
(signed word) point_init::y_diff#10
|
|
(signed word) point_init::y_diff#11
|
|
(signed word) point_init::y_diff#12
|
|
(signed word) point_init::y_diff#13
|
|
(signed word) point_init::y_diff#14
|
|
(signed word) point_init::y_diff#2
|
|
(signed word) point_init::y_diff#3
|
|
(signed word) point_init::y_diff#4
|
|
(signed word) point_init::y_diff#5
|
|
(signed word) point_init::y_diff#6
|
|
(signed word) point_init::y_diff#7
|
|
(signed word) point_init::y_diff#8
|
|
(signed word) point_init::y_diff#9
|
|
(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch)
|
|
(bool~) screen_fill::$0
|
|
(bool~) screen_fill::$1
|
|
(label) screen_fill::@1
|
|
(label) screen_fill::@2
|
|
(label) screen_fill::@3
|
|
(label) screen_fill::@return
|
|
(byte) screen_fill::ch
|
|
(byte) screen_fill::ch#0
|
|
(byte) screen_fill::ch#1
|
|
(byte) screen_fill::ch#2
|
|
(byte) screen_fill::ch#3
|
|
(byte) screen_fill::ch#4
|
|
(byte*) screen_fill::screen
|
|
(byte*) screen_fill::screen#0
|
|
(byte*) screen_fill::screen#1
|
|
(byte*) screen_fill::screen#2
|
|
(byte*) screen_fill::screen#3
|
|
(byte*) screen_fill::screen#4
|
|
(byte*) screen_fill::screen#5
|
|
(byte) screen_fill::x
|
|
(byte) screen_fill::x#0
|
|
(byte) screen_fill::x#1
|
|
(byte) screen_fill::x#2
|
|
(byte) screen_fill::y
|
|
(byte) screen_fill::y#0
|
|
(byte) screen_fill::y#1
|
|
(byte) screen_fill::y#2
|
|
(byte) screen_fill::y#3
|
|
(byte) screen_fill::y#4
|
|
(signed byte[4]) x_add
|
|
(signed byte[4]) x_add#0
|
|
(word[4]) x_cur
|
|
(word[4]) x_cur#0
|
|
(word[4]) x_end
|
|
(word[4]) x_end#0
|
|
(word[4]) x_start
|
|
(word[4]) x_start#0
|
|
(signed byte[4]) y_add
|
|
(signed byte[4]) y_add#0
|
|
(word[4]) y_cur
|
|
(word[4]) y_cur#0
|
|
(byte[4]) y_end
|
|
(byte[4]) y_end#0
|
|
(byte[4]) y_start
|
|
(byte[4]) y_start#0
|
|
|
|
Culled Empty Block (label) main::@3
|
|
Culled Empty Block (label) main::@6
|
|
Culled Empty Block (label) @19
|
|
Successful SSA optimization Pass2CullEmptyBlocks
|
|
Inversing boolean not (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
Inversing boolean not (bool~) divr16u::$9 ← (word) divr16u::rem#5 < (word) divr16u::divisor#1 from (bool~) divr16u::$8 ← (word) divr16u::rem#5 >= (word) divr16u::divisor#1
|
|
Inversing boolean not (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
Inversing boolean not (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte/signed byte/word/signed word/dword/signed dword) 7 from (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte/signed byte/word/signed word/dword/signed dword) 7
|
|
Successful SSA optimization Pass2UnaryNotSimplification
|
|
Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#6
|
|
Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#7
|
|
Alias (word) divr16u::quotient#1 = (word~) divr16u::$7 (word) divr16u::quotient#4
|
|
Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#6
|
|
Alias (word) divr16u::quotient#6 = (word) divr16u::quotient#7
|
|
Alias (word) divr16u::divisor#3 = (word) divr16u::divisor#4
|
|
Alias (byte) divr16u::i#5 = (byte) divr16u::i#6
|
|
Alias (word) divr16u::rem#1 = (word/dword~) divr16u::$5
|
|
Alias (word) divr16u::rem#5 = (word) divr16u::rem#7
|
|
Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#2
|
|
Alias (byte) divr16u::i#3 = (byte) divr16u::i#4
|
|
Alias (word) divr16u::rem#2 = (word~) divr16u::$10
|
|
Alias (word) divr16u::return#0 = (word) divr16u::quotient#5 (word) divr16u::quotient#8 (word) divr16u::return#3 (word) divr16u::return#1
|
|
Alias (signed word) divr16s::dividend#1 = (signed word) divr16s::dividend#2 (signed word) divr16s::dividend#3
|
|
Alias (signed word) divr16s::rem#1 = (signed word) divr16s::rem#2 (signed word) divr16s::rem#3
|
|
Alias (signed word) divr16s::divisor#4 = (signed word) divr16s::divisor#6 (signed word) divr16s::divisor#5
|
|
Alias (word) divr16s::dividendu#1 = (word~) divr16s::$6
|
|
Alias (word) divr16s::remu#1 = (word~) divr16s::$8
|
|
Alias (byte) divr16s::neg#0 = (byte) divr16s::neg#7
|
|
Alias (word) divr16s::dividendu#2 = (word~) divr16s::$3
|
|
Alias (word) divr16s::remu#2 = (word~) divr16s::$4
|
|
Alias (signed word) divr16s::divisor#1 = (signed word) divr16s::divisor#2 (signed word) divr16s::divisor#3
|
|
Alias (byte) divr16s::neg#3 = (byte) divr16s::neg#5 (byte) divr16s::neg#8
|
|
Alias (word) divr16s::dividendu#4 = (word) divr16s::dividendu#6 (word) divr16s::dividendu#5
|
|
Alias (word) divr16s::remu#4 = (word) divr16s::remu#6 (word) divr16s::remu#5
|
|
Alias (word) divr16s::divisoru#1 = (word~) divr16s::$12
|
|
Alias (byte) divr16s::neg#2 = (byte/word/dword~) divr16s::$13
|
|
Alias (word) divr16s::divisoru#2 = (word~) divr16s::$10
|
|
Alias (word) divr16u::return#2 = (word) divr16u::return#4
|
|
Alias (byte) divr16s::neg#4 = (byte) divr16s::neg#6
|
|
Alias (word) divr16s::resultu#0 = (word~) divr16s::$14 (word) divr16s::resultu#1 (word) divr16s::resultu#2
|
|
Alias (signed word) divr16s::return#0 = (signed word~) divr16s::$21
|
|
Alias (signed word) divr16s::return#1 = (signed word~) divr16s::$19
|
|
Alias (signed word) divr16s::return#2 = (signed word) divr16s::return#4
|
|
Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1
|
|
Alias (byte*) SCREEN#1 = (byte*) SCREEN#12 (byte*) SCREEN#10 (byte*) SCREEN#7 (byte*) SCREEN#5 (byte*) SCREEN#2 (byte*) SCREEN#13 (byte*) SCREEN#11 (byte*) SCREEN#8 (byte*) SCREEN#6 (byte*) SCREEN#3
|
|
Alias (byte*) BITMAP#1 = (byte*) BITMAP#8 (byte*) BITMAP#9 (byte*) BITMAP#7 (byte*) BITMAP#5 (byte*) BITMAP#3 (byte*) BITMAP#6 (byte*) BITMAP#4 (byte*) BITMAP#2
|
|
Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte) main::vicSelectGfxBank1_$0#0
|
|
Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1
|
|
Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1
|
|
Alias (byte) main::toD0181_return#0 = (byte) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$4
|
|
Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4
|
|
Alias (byte) point_init::point_idx1#0 = (byte~) point_init::$0 (byte) point_init::point_idx1#16 (byte) point_init::point_idx1#14 (byte) point_init::point_idx1#15
|
|
Alias (signed word) point_init::abs16s1_w#0 = (signed word) point_init::x_diff#0 (signed word~) point_init::$3 (signed word) point_init::abs16s1_w#1 (signed word) point_init::x_diff#14 (signed word) point_init::abs16s1_w#2 (signed word) point_init::x_diff#12 (signed word) point_init::abs16s1_w#3 (signed word) point_init::x_diff#13
|
|
Alias (signed word) point_init::y_diff#0 = (signed word~) point_init::$6 (signed word) point_init::y_diff#9 (signed word) point_init::y_diff#6 (signed word) point_init::y_diff#7
|
|
Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#17 (byte) point_init::point_idx#15 (byte) point_init::point_idx#16
|
|
Alias (word) point_init::abs16s1_return#0 = (word) point_init::abs16s1_$3#0
|
|
Alias (word) point_init::abs16s1_return#1 = (word) point_init::abs16s1_$1#0
|
|
Alias (word) point_init::abs16s1_return#2 = (word) point_init::abs16s1_return#3 (word) point_init::abs16s1_return#4 (word~) point_init::$7
|
|
Alias (signed word) point_init::y_diff#1 = (signed word) point_init::y_diff#3 (signed word) point_init::abs16s2_w#0 (signed word) point_init::abs16s2_w#1 (signed word) point_init::y_diff#14 (signed word) point_init::abs16s2_w#2 (signed word) point_init::y_diff#12 (signed word) point_init::abs16s2_w#3 (signed word) point_init::y_diff#13
|
|
Alias (signed word) point_init::x_diff#10 = (signed word) point_init::x_diff#11 (signed word) point_init::x_diff#9 (signed word) point_init::x_diff#7 (signed word) point_init::x_diff#8
|
|
Alias (byte) point_init::point_idx#10 = (byte) point_init::point_idx#13 (byte) point_init::point_idx#14 (byte) point_init::point_idx#12 (byte) point_init::point_idx#11
|
|
Alias (byte) point_init::point_idx1#11 = (byte) point_init::point_idx1#12 (byte) point_init::point_idx1#13 (byte) point_init::point_idx1#8 (byte) point_init::point_idx1#9
|
|
Alias (word) point_init::abs16s2_return#0 = (word) point_init::abs16s2_$3#0
|
|
Alias (word) point_init::abs16s2_return#1 = (word) point_init::abs16s2_$1#0
|
|
Alias (word) point_init::abs16s2_return#2 = (word) point_init::abs16s2_return#3 (word) point_init::abs16s2_return#4 (word~) point_init::$8
|
|
Alias (signed word) point_init::x_diff#1 = (signed word) point_init::x_diff#3 (signed word) point_init::x_diff#6 (signed word) point_init::x_diff#4 (signed word) point_init::x_diff#5
|
|
Alias (byte) point_init::point_idx#3 = (byte) point_init::point_idx#5 (byte) point_init::point_idx#8 (byte) point_init::point_idx#7 (byte) point_init::point_idx#4
|
|
Alias (byte) point_init::point_idx1#10 = (byte) point_init::point_idx1#3 (byte) point_init::point_idx1#5 (byte) point_init::point_idx1#6 (byte) point_init::point_idx1#7
|
|
Alias (signed word) point_init::y_diff#10 = (signed word) point_init::y_diff#11 (signed word) point_init::y_diff#8 (signed word) point_init::y_diff#4 (signed word) point_init::y_diff#5
|
|
Alias (signed word) divr16s::return#3 = (signed word) divr16s::return#5
|
|
Alias (byte) point_init::point_idx1#2 = (byte) point_init::point_idx1#4
|
|
Alias (byte) point_init::point_idx#6 = (byte) point_init::point_idx#9
|
|
Alias (signed word) point_init::x_stepf#0 = (signed word~) point_init::$12
|
|
Alias (byte) screen_fill::y#2 = (byte) screen_fill::y#3
|
|
Alias (byte) screen_fill::ch#1 = (byte) screen_fill::ch#4
|
|
Alias (byte*) screen_fill::screen#1 = (byte*) screen_fill::screen#5
|
|
Alias (byte*) SCREEN#0 = (byte*) SCREEN#9 (byte*) SCREEN#4
|
|
Alias (byte*) BITMAP#0 = (byte*) BITMAP#11 (byte*) BITMAP#10
|
|
Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#4
|
|
Alias (byte*) bitmap_init::bitmap#3 = (byte*) bitmap_init::bitmap#4
|
|
Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#2 (byte*) bitmap_init::yoffs#0
|
|
Alias (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#3
|
|
Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#4
|
|
Alias (byte*) bitmap_init::yoffs#1 = (byte*~) bitmap_init::$11
|
|
Alias (byte*) bitmap_clear::bitmap#0 = (byte*~) bitmap_clear::$0
|
|
Alias (byte) bitmap_clear::y#2 = (byte) bitmap_clear::y#3
|
|
Alias (byte*) bitmap_clear::bitmap#1 = (byte*) bitmap_clear::bitmap#4
|
|
Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias (word) divr16u::dividend#2 = (word) divr16u::dividend#3
|
|
Alias (word) divr16u::quotient#3 = (word) divr16u::quotient#6
|
|
Alias (word) divr16u::divisor#1 = (word) divr16u::divisor#3 (word) divr16u::divisor#6
|
|
Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5
|
|
Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#5
|
|
Alias (signed word) divr16s::divisor#1 = (signed word) divr16s::divisor#4
|
|
Alias (word) divr16s::dividendu#3 = (word) divr16s::dividendu#4
|
|
Alias (word) divr16s::remu#3 = (word) divr16s::remu#4
|
|
Alias (signed word) point_init::y_diff#0 = (signed word) point_init::y_diff#1 (signed word) point_init::y_diff#10 (signed word) point_init::y_diff#2
|
|
Alias (signed word) point_init::x_diff#1 = (signed word) point_init::x_diff#10 (signed word) point_init::abs16s1_w#0 (signed word) point_init::x_diff#2
|
|
Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#10 (byte) point_init::point_idx#3 (byte) point_init::point_idx#6
|
|
Alias (byte) point_init::point_idx1#0 = (byte) point_init::point_idx1#11 (byte) point_init::point_idx1#10 (byte) point_init::point_idx1#2
|
|
Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3
|
|
Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#3
|
|
Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#2
|
|
Alias (byte) point_init::point_idx1#0 = (byte) point_init::point_idx1#1
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Self Phi Eliminated (word) divr16u::divisor#1
|
|
Self Phi Eliminated (byte) screen_fill::ch#1
|
|
Self Phi Eliminated (byte) screen_fill::y#2
|
|
Self Phi Eliminated (byte*) bitmap_init::bitmap#1
|
|
Self Phi Eliminated (byte) bitmap_clear::y#2
|
|
Successful SSA optimization Pass2SelfPhiElimination
|
|
Redundant Phi (word) divr16u::rem#8 (word) divr16u::rem#3
|
|
Redundant Phi (word) divr16u::dividend#4 (word) divr16u::dividend#1
|
|
Redundant Phi (word) divr16u::divisor#5 (word) divr16u::divisor#0
|
|
Redundant Phi (word) divr16u::divisor#1 (word) divr16u::divisor#5
|
|
Redundant Phi (signed word) divr16s::dividend#1 (signed word) divr16s::dividend#0
|
|
Redundant Phi (signed word) divr16s::rem#1 (signed word) divr16s::rem#0
|
|
Redundant Phi (signed word) divr16s::divisor#1 (signed word) divr16s::divisor#0
|
|
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
|
|
Redundant Phi (byte*) BITMAP#1 (byte*) BITMAP#0
|
|
Redundant Phi (byte) point_init::point_idx#1 (byte) point_init::point_idx#0
|
|
Redundant Phi (byte) screen_fill::ch#3 (byte) screen_fill::ch#0
|
|
Redundant Phi (byte*) screen_fill::screen#4 (byte*) screen_fill::screen#0
|
|
Redundant Phi (byte) screen_fill::ch#1 (byte) screen_fill::ch#2
|
|
Redundant Phi (byte) screen_fill::y#2 (byte) screen_fill::y#4
|
|
Redundant Phi (byte*) bitmap_init::bitmap#5 (byte*) bitmap_init::bitmap#0
|
|
Redundant Phi (byte*) bitmap_init::bitmap#1 (byte*) bitmap_init::bitmap#5
|
|
Redundant Phi (byte) bitmap_clear::y#2 (byte) bitmap_clear::y#4
|
|
Redundant Phi (byte) bitmap_plot::y#1 (byte) bitmap_plot::y#0
|
|
Redundant Phi (word) bitmap_plot::x#1 (word) bitmap_plot::x#0
|
|
Successful SSA optimization Pass2RedundantPhiElimination
|
|
Simple Condition (bool~) divr16u::$4 if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
|
Simple Condition (bool~) divr16u::$9 if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3
|
|
Simple Condition (bool~) divr16u::$11 if((byte) divr16u::i#1!=rangelast(0,15)) goto divr16u::@1
|
|
Simple Condition (bool~) divr16s::$9 if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3
|
|
Simple Condition (bool~) divr16s::$15 if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@5
|
|
Simple Condition (bool~) main::$11 if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1
|
|
Simple Condition (bool~) main::$12 if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5
|
|
Simple Condition (bool) point_init::abs16s1_$0#0 if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1
|
|
Simple Condition (bool) point_init::abs16s2_$0#0 if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1
|
|
Simple Condition (bool~) point_init::$9 if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1
|
|
Simple Condition (bool~) point_init::$10 if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3
|
|
Simple Condition (bool~) screen_fill::$0 if((byte) screen_fill::x#1!=rangelast(0,39)) goto screen_fill::@2
|
|
Simple Condition (bool~) screen_fill::$1 if((byte) screen_fill::y#1!=rangelast(0,24)) goto screen_fill::@1
|
|
Simple Condition (bool~) bitmap_init::$1 if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@2
|
|
Simple Condition (bool~) bitmap_init::$2 if((byte) bitmap_init::x#1!=rangelast(0,255)) goto bitmap_init::@1
|
|
Simple Condition (bool~) bitmap_init::$9 if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4
|
|
Simple Condition (bool~) bitmap_init::$12 if((byte) bitmap_init::y#1!=rangelast(0,255)) goto bitmap_init::@3
|
|
Simple Condition (bool~) bitmap_clear::$1 if((byte) bitmap_clear::x#1!=rangelast(0,199)) goto bitmap_clear::@2
|
|
Simple Condition (bool~) bitmap_clear::$2 if((byte) bitmap_clear::y#1!=rangelast(0,39)) goto bitmap_clear::@1
|
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
|
Rewriting || if()-condition to two if()s (bool~) divr16s::$2 ← (bool~) divr16s::$0 || (bool~) divr16s::$1
|
|
Successful SSA optimization Pass2ConditionalAndOrRewriting
|
|
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
|
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
|
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
|
Constant (const byte) PROCPORT_RAM_IO#0 = 53
|
|
Constant (const byte*) RASTER#0 = ((byte*))53266
|
|
Constant (const byte*) BORDERCOL#0 = ((byte*))53280
|
|
Constant (const byte*) D011#0 = ((byte*))53265
|
|
Constant (const byte) VIC_BMM#0 = 32
|
|
Constant (const byte) VIC_DEN#0 = 16
|
|
Constant (const byte) VIC_RSEL#0 = 8
|
|
Constant (const byte*) D018#0 = ((byte*))53272
|
|
Constant (const byte*) CIA2_PORT_A#0 = ((byte*))56576
|
|
Constant (const byte*) CIA2_PORT_A_DDR#0 = ((byte*))56578
|
|
Constant (const word) divr16u::quotient#0 = 0
|
|
Constant (const byte) divr16u::i#0 = 0
|
|
Constant (const byte) divr16s::neg#0 = 0
|
|
Constant (const word) divr16s::dividendu#0 = 0
|
|
Constant (const word) divr16s::remu#0 = 0
|
|
Constant (const byte) divr16s::neg#1 = 1
|
|
Constant (const word) divr16s::divisoru#0 = 0
|
|
Constant (const byte*) BITMAP#0 = ((byte*))40960
|
|
Constant (const byte*) SCREEN#0 = ((byte*))34816
|
|
Constant (const byte) DELAY#0 = 8
|
|
Constant (const word[4]) x_start#0 = { 10, 20, 30, 30 }
|
|
Constant (const byte[4]) y_start#0 = { 10, 10, 10, 20 }
|
|
Constant (const word[4]) x_end#0 = { 20, 10, 20, 20 }
|
|
Constant (const byte[4]) y_end#0 = { 20, 20, 10, 20 }
|
|
Constant (const word[4]) x_cur#0 = { fill( 4, 0) }
|
|
Constant (const word[4]) y_cur#0 = { fill( 4, 0) }
|
|
Constant (const signed byte[4]) x_add#0 = { fill( 4, 0) }
|
|
Constant (const signed byte[4]) y_add#0 = { fill( 4, 0) }
|
|
Constant (const byte[4]) delay#0 = { fill( 4, 0) }
|
|
Constant (const byte) screen_fill::ch#0 = 16
|
|
Constant (const byte) main::i#0 = 0
|
|
Constant (const signed byte/signed word/signed dword) point_init::$11 = -16
|
|
Constant (const signed word) divr16s::dividend#0 = 0
|
|
Constant (const byte) screen_fill::y#0 = 0
|
|
Constant (const byte) screen_fill::x#0 = 0
|
|
Constant (const byte[256]) bitmap_plot_ylo#0 = { fill( 256, 0) }
|
|
Constant (const byte[256]) bitmap_plot_yhi#0 = { fill( 256, 0) }
|
|
Constant (const byte[256]) bitmap_plot_bit#0 = { fill( 256, 0) }
|
|
Constant (const byte) bitmap_init::bits#0 = 128
|
|
Constant (const byte) bitmap_init::x#0 = 0
|
|
Constant (const byte) bitmap_init::bits#2 = 128
|
|
Constant (const byte) bitmap_init::y#0 = 0
|
|
Constant (const word/signed word/dword/signed dword) bitmap_init::$10 = 40*8
|
|
Constant (const byte) bitmap_clear::y#0 = 0
|
|
Constant (const byte) bitmap_clear::x#0 = 0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant (const bool) divr16s::$0 = divr16s::dividend#0<0
|
|
Constant (const signed word) divr16s::$5 = -divr16s::dividend#0
|
|
Constant (const word) divr16s::dividendu#2 = ((word))divr16s::dividend#0
|
|
Constant (const byte) main::$0 = VIC_BMM#0|VIC_DEN#0
|
|
Constant (const byte*) main::vicSelectGfxBank1_gfx#0 = SCREEN#0
|
|
Constant (const byte*) main::toD0181_screen#0 = SCREEN#0
|
|
Constant (const byte*) main::toD0181_gfx#0 = BITMAP#0
|
|
Constant (const byte*) bitmap_init::bitmap#0 = BITMAP#0
|
|
Constant (const byte*) screen_fill::screen#0 = SCREEN#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant (const word) divr16s::dividendu#1 = ((word))divr16s::$5
|
|
Constant (const byte) main::$1 = main::$0|VIC_RSEL#0
|
|
Constant (const word) main::vicSelectGfxBank1_toDd001_$0#0 = ((word))main::vicSelectGfxBank1_gfx#0
|
|
Constant (const word) main::toD0181_$0#0 = ((word))main::toD0181_screen#0
|
|
Constant (const word) main::toD0181_$4#0 = ((word))main::toD0181_gfx#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant (const byte/word/dword) main::$2 = main::$1|3
|
|
Constant (const byte) main::vicSelectGfxBank1_toDd001_$1#0 = >main::vicSelectGfxBank1_toDd001_$0#0
|
|
Constant (const word) main::toD0181_$1#0 = main::toD0181_$0#0&16383
|
|
Constant (const byte) main::toD0181_$5#0 = >main::toD0181_$4#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant (const byte) main::vicSelectGfxBank1_toDd001_$2#0 = main::vicSelectGfxBank1_toDd001_$1#0>>6
|
|
Constant (const word) main::toD0181_$2#0 = main::toD0181_$1#0<<2
|
|
Constant (const byte) main::toD0181_$6#0 = main::toD0181_$5#0>>2
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant (const byte) main::vicSelectGfxBank1_toDd001_return#0 = 3^main::vicSelectGfxBank1_toDd001_$2#0
|
|
Constant (const byte) main::toD0181_$3#0 = >main::toD0181_$2#0
|
|
Constant (const byte) main::toD0181_$7#0 = main::toD0181_$6#0&15
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant (const byte) main::toD0181_return#0 = main::toD0181_$3#0|main::toD0181_$7#0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
if() condition always false - eliminating if((const bool) divr16s::$0) goto divr16s::@1
|
|
if() condition always true - replacing block destination if(true) goto main::@5
|
|
Successful SSA optimization Pass2ConstantIfs
|
|
Fixing inline constructor with bitmap_clear::$3 ← *(bitmap_plot_yhi#0 + 0) w= *(bitmap_plot_ylo#0 + 0)
|
|
Fixing inline constructor with bitmap_plot::$3 ← *(bitmap_plot_yhi#0 + bitmap_plot::y#0) w= *(bitmap_plot_ylo#0 + bitmap_plot::y#0)
|
|
Successful SSA optimization Pass2FixInlineConstructors
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Eliminating Noop Cast (word) divr16s::remu#1 ← ((word)) (signed word~) divr16s::$7
|
|
Eliminating Noop Cast (word) divr16s::remu#2 ← ((word)) (signed word) divr16s::rem#0
|
|
Eliminating Noop Cast (word) divr16s::divisoru#1 ← ((word)) (signed word~) divr16s::$11
|
|
Eliminating Noop Cast (word) divr16s::divisoru#2 ← ((word)) (signed word) divr16s::divisor#0
|
|
Eliminating Noop Cast (signed word) divr16s::return#0 ← ((signed word)) (word) divr16s::resultu#0
|
|
Eliminating Noop Cast (signed word~) divr16s::$18 ← ((signed word)) (word) divr16s::resultu#0
|
|
Eliminating Noop Cast (signed word~) point_init::$1 ← ((signed word)) *((const word[4]) x_end#0 + (byte) point_init::point_idx#0)
|
|
Eliminating Noop Cast (signed word~) point_init::$2 ← ((signed word)) *((const word[4]) x_start#0 + (byte) point_init::point_idx#0)
|
|
Eliminating Noop Cast (word) point_init::abs16s1_return#0 ← ((word)) (signed word) point_init::abs16s1_$2#0
|
|
Eliminating Noop Cast (word) point_init::abs16s1_return#1 ← ((word)) (signed word) point_init::x_diff#1
|
|
Eliminating Noop Cast (word) point_init::abs16s2_return#0 ← ((word)) (signed word) point_init::abs16s2_$2#0
|
|
Eliminating Noop Cast (word) point_init::abs16s2_return#1 ← ((word)) (signed word) point_init::y_diff#0
|
|
Eliminating Noop Cast (signed byte~) point_init::$15 ← ((signed byte)) (byte~) point_init::$14
|
|
Eliminating Noop Cast (byte*) bitmap_clear::bitmap#0 ← ((byte*)) (word~) bitmap_clear::$3
|
|
Eliminating Noop Cast (byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitmap_plot::$3
|
|
Successful SSA optimization Pass2NopCastElimination
|
|
Removing unused block main::@return
|
|
Successful SSA optimization Pass2EliminateUnusedBlocks
|
|
Resolved ranged next value divr16u::i#1 ← ++ divr16u::i#2 to ++
|
|
Resolved ranged comparison value if(divr16u::i#1!=rangelast(0,15)) goto divr16u::@1 to (byte/signed byte/word/signed word/dword/signed dword) 16
|
|
Resolved ranged next value screen_fill::x#1 ← ++ screen_fill::x#2 to ++
|
|
Resolved ranged comparison value if(screen_fill::x#1!=rangelast(0,39)) goto screen_fill::@2 to (byte/signed byte/word/signed word/dword/signed dword) 40
|
|
Resolved ranged next value screen_fill::y#1 ← ++ screen_fill::y#4 to ++
|
|
Resolved ranged comparison value if(screen_fill::y#1!=rangelast(0,24)) goto screen_fill::@1 to (byte/signed byte/word/signed word/dword/signed dword) 25
|
|
Resolved ranged next value bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++
|
|
Resolved ranged comparison value if(bitmap_init::x#1!=rangelast(0,255)) goto bitmap_init::@1 to (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
Resolved ranged next value bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++
|
|
Resolved ranged comparison value if(bitmap_init::y#1!=rangelast(0,255)) goto bitmap_init::@3 to (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
Resolved ranged next value bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++
|
|
Resolved ranged comparison value if(bitmap_clear::x#1!=rangelast(0,199)) goto bitmap_clear::@2 to (byte/word/signed word/dword/signed dword) 200
|
|
Resolved ranged next value bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++
|
|
Resolved ranged comparison value if(bitmap_clear::y#1!=rangelast(0,39)) goto bitmap_clear::@1 to (byte/signed byte/word/signed word/dword/signed dword) 40
|
|
Culled Empty Block (label) divr16u::@6
|
|
Culled Empty Block (label) divr16s::@7
|
|
Culled Empty Block (label) divr16s::@9
|
|
Culled Empty Block (label) divr16s::@5
|
|
Culled Empty Block (label) @11
|
|
Culled Empty Block (label) main::vicSelectGfxBank1_toDd001_@return
|
|
Culled Empty Block (label) main::@15
|
|
Culled Empty Block (label) main::toD0181_@return
|
|
Culled Empty Block (label) main::@19
|
|
Culled Empty Block (label) main::@2
|
|
Culled Empty Block (label) point_init::abs16s1_@3
|
|
Culled Empty Block (label) point_init::@9
|
|
Culled Empty Block (label) point_init::abs16s2_@3
|
|
Culled Empty Block (label) @15
|
|
Culled Empty Block (label) bitmap_init::@6
|
|
Successful SSA optimization Pass2CullEmptyBlocks
|
|
Self Phi Eliminated (byte) screen_fill::ch#2
|
|
Successful SSA optimization Pass2SelfPhiElimination
|
|
Redundant Phi (byte) screen_fill::ch#2 (const byte) screen_fill::ch#0
|
|
Successful SSA optimization Pass2RedundantPhiElimination
|
|
Simple Condition (bool~) divr16s::$1 if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1
|
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
|
Consolidated array index constant in *(bitmap_plot_yhi#0+0)
|
|
Consolidated array index constant in *(bitmap_plot_ylo#0+0)
|
|
Successful SSA optimization Pass2ConstantAdditionElimination
|
|
Inlining constant with var siblings (const word) divr16u::quotient#0
|
|
Inlining constant with var siblings (const byte) divr16u::i#0
|
|
Inlining constant with var siblings (const byte) divr16s::neg#0
|
|
Inlining constant with var siblings (const byte) divr16s::neg#1
|
|
Inlining constant with var siblings (const word) divr16s::dividendu#2
|
|
Inlining constant with var siblings (const word) divr16s::dividendu#1
|
|
Inlining constant with var siblings (const byte) main::i#0
|
|
Inlining constant with var siblings (const byte) screen_fill::y#0
|
|
Inlining constant with var siblings (const byte) screen_fill::x#0
|
|
Inlining constant with var siblings (const byte*) screen_fill::screen#0
|
|
Inlining constant with var siblings (const byte) bitmap_init::bits#0
|
|
Inlining constant with var siblings (const byte) bitmap_init::x#0
|
|
Inlining constant with var siblings (const byte) bitmap_init::bits#2
|
|
Inlining constant with var siblings (const byte) bitmap_init::y#0
|
|
Inlining constant with var siblings (const byte) bitmap_clear::y#0
|
|
Inlining constant with var siblings (const byte) bitmap_clear::x#0
|
|
Constant inlined main::toD0181_screen#0 = (const byte*) SCREEN#0
|
|
Constant inlined main::toD0181_gfx#0 = (const byte*) BITMAP#0
|
|
Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
Constant inlined divr16s::dividendu#1 = ((word))-(const signed word) divr16s::dividend#0
|
|
Constant inlined divr16s::dividendu#2 = ((word))(const signed word) divr16s::dividend#0
|
|
Constant inlined bitmap_init::bits#0 = (byte/word/signed word/dword/signed dword) 128
|
|
Constant inlined bitmap_init::bits#2 = (byte/word/signed word/dword/signed dword) 128
|
|
Constant inlined divr16s::neg#1 = (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
Constant inlined divr16s::neg#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
Constant inlined divr16u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
Constant inlined point_init::$11 = -(byte/signed byte/word/signed word/dword/signed dword) 16
|
|
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
Constant inlined bitmap_init::$10 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
|
|
Constant inlined main::vicSelectGfxBank1_toDd001_$2#0 = >((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6
|
|
Constant inlined screen_fill::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
Constant inlined main::vicSelectGfxBank1_toDd001_$1#0 = >((word))(const byte*) SCREEN#0
|
|
Constant inlined main::vicSelectGfxBank1_toDd001_$0#0 = ((word))(const byte*) SCREEN#0
|
|
Constant inlined bitmap_clear::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
Constant inlined bitmap_clear::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
Constant inlined main::toD0181_$0#0 = ((word))(const byte*) SCREEN#0
|
|
Constant inlined main::toD0181_$1#0 = ((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383
|
|
Constant inlined main::toD0181_$6#0 = >((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2
|
|
Constant inlined main::toD0181_$7#0 = >((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15
|
|
Constant inlined screen_fill::screen#0 = (const byte*) SCREEN#0
|
|
Constant inlined divr16s::$5 = -(const signed word) divr16s::dividend#0
|
|
Constant inlined main::$1 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0
|
|
Constant inlined main::toD0181_$2#0 = ((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2
|
|
Constant inlined main::$2 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3
|
|
Constant inlined main::toD0181_$3#0 = >((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2
|
|
Constant inlined main::toD0181_$4#0 = ((word))(const byte*) BITMAP#0
|
|
Constant inlined main::$0 = (const byte) VIC_BMM#0|(const byte) VIC_DEN#0
|
|
Constant inlined main::toD0181_$5#0 = >((word))(const byte*) BITMAP#0
|
|
Constant inlined main::vicSelectGfxBank1_gfx#0 = (const byte*) SCREEN#0
|
|
Constant inlined bitmap_init::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
Constant inlined screen_fill::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
Constant inlined bitmap_init::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
Constant inlined bitmap_init::bitmap#0 = (const byte*) BITMAP#0
|
|
Successful SSA optimization Pass2ConstantInlining
|
|
Simplifying constant plus zero bitmap_plot_yhi#0+0
|
|
Simplifying constant plus zero bitmap_plot_ylo#0+0
|
|
Added new block during phi lifting main::@22(between main::@21 and main::@1)
|
|
Added new block during phi lifting point_init::@12(between point_init::abs16s1 and point_init::abs16s1_@return)
|
|
Added new block during phi lifting point_init::@13(between point_init::abs16s2 and point_init::abs16s2_@return)
|
|
Added new block during phi lifting divr16s::@17(between divr16s::@16 and divr16s::@2)
|
|
Fixing phi predecessor for divr16s::neg#3 to new block ( divr16s::@16 -> divr16s::@17 ) during phi lifting.
|
|
Fixing phi predecessor for divr16s::dividendu#3 to new block ( divr16s::@16 -> divr16s::@17 ) during phi lifting.
|
|
Added new block during phi lifting divr16s::@18(between divr16s::@2 and divr16s::@4)
|
|
Added new block during phi lifting divr16s::@19(between divr16s::@15 and divr16s::@return)
|
|
Added new block during phi lifting divr16u::@8(between divr16u::@3 and divr16u::@1)
|
|
Added new block during phi lifting divr16u::@9(between divr16u::@1 and divr16u::@2)
|
|
Added new block during phi lifting divr16u::@10(between divr16u::@2 and divr16u::@3)
|
|
Added new block during phi lifting screen_fill::@5(between screen_fill::@3 and screen_fill::@1)
|
|
Added new block during phi lifting screen_fill::@6(between screen_fill::@2 and screen_fill::@2)
|
|
Added new block during phi lifting bitmap_clear::@5(between bitmap_clear::@3 and bitmap_clear::@1)
|
|
Added new block during phi lifting bitmap_clear::@6(between bitmap_clear::@2 and bitmap_clear::@2)
|
|
Added new block during phi lifting bitmap_init::@9(between bitmap_init::@2 and bitmap_init::@1)
|
|
Added new block during phi lifting bitmap_init::@10(between bitmap_init::@1 and bitmap_init::@2)
|
|
Added new block during phi lifting bitmap_init::@11(between bitmap_init::@4 and bitmap_init::@3)
|
|
Added new block during phi lifting bitmap_init::@12(between bitmap_init::@3 and bitmap_init::@4)
|
|
Adding NOP phi() at start of @begin
|
|
Adding NOP phi() at start of @18
|
|
Adding NOP phi() at start of @end
|
|
Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001
|
|
Adding NOP phi() at start of main::toD0181
|
|
Adding NOP phi() at start of main::@17
|
|
Adding NOP phi() at start of main::@18
|
|
Adding NOP phi() at start of divr16s
|
|
Adding NOP phi() at start of screen_fill
|
|
Adding NOP phi() at start of bitmap_init
|
|
Adding NOP phi() at start of bitmap_init::@5
|
|
CALL GRAPH
|
|
Calls in [] to main:2
|
|
Calls in [main] to bitmap_init:13 bitmap_clear:15 screen_fill:17 point_init:20 bitmap_plot:24
|
|
Calls in [point_init] to divr16s:59
|
|
Calls in [divr16s] to divr16u:81
|
|
|
|
Created 30 initial phi equivalence classes
|
|
Coalesced [29] main::i#5 ← main::i#1
|
|
Coalesced [76] divr16s::neg#10 ← divr16s::neg#3
|
|
Coalesced [86] divr16s::return#6 ← divr16s::return#1
|
|
Coalesced [93] divr16s::neg#9 ← divr16s::neg#2
|
|
Coalesced [96] divr16u::rem#10 ← divr16u::rem#3
|
|
Coalesced [97] divr16u::dividend#8 ← divr16u::dividend#1
|
|
Coalesced [104] divr16u::rem#13 ← divr16u::rem#1
|
|
Coalesced [111] divr16u::rem#15 ← divr16u::rem#2
|
|
Coalesced [112] divr16u::return#6 ← divr16u::quotient#2
|
|
Coalesced [117] divr16u::rem#11 ← divr16u::rem#9
|
|
Coalesced [118] divr16u::dividend#9 ← divr16u::dividend#0
|
|
Coalesced [119] divr16u::quotient#9 ← divr16u::return#0
|
|
Coalesced [120] divr16u::i#7 ← divr16u::i#1
|
|
Coalesced [121] divr16u::rem#14 ← divr16u::rem#5
|
|
Coalesced [122] divr16u::return#5 ← divr16u::quotient#1
|
|
Coalesced [123] divr16u::rem#12 ← divr16u::rem#0
|
|
Coalesced [126] screen_fill::screen#7 ← screen_fill::screen#3
|
|
Coalesced [135] screen_fill::screen#6 ← screen_fill::screen#1
|
|
Coalesced [136] screen_fill::y#5 ← screen_fill::y#1
|
|
Coalesced (already) [137] screen_fill::screen#8 ← screen_fill::screen#1
|
|
Coalesced [138] screen_fill::x#3 ← screen_fill::x#1
|
|
Coalesced [142] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3
|
|
Coalesced [151] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1
|
|
Coalesced [152] bitmap_clear::y#5 ← bitmap_clear::y#1
|
|
Coalesced (already) [153] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1
|
|
Coalesced [154] bitmap_clear::x#3 ← bitmap_clear::x#1
|
|
Coalesced [174] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1
|
|
Coalesced [179] bitmap_init::y#5 ← bitmap_init::y#1
|
|
Coalesced [180] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4
|
|
Coalesced (already) [181] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2
|
|
Coalesced [182] bitmap_init::bits#5 ← bitmap_init::bits#4
|
|
Coalesced [183] bitmap_init::x#5 ← bitmap_init::x#1
|
|
Coalesced [184] bitmap_init::bits#6 ← bitmap_init::bits#1
|
|
Coalesced down to 22 phi equivalence classes
|
|
Culled Empty Block (label) main::@22
|
|
Culled Empty Block (label) divr16u::@8
|
|
Culled Empty Block (label) divr16u::@10
|
|
Culled Empty Block (label) divr16u::@9
|
|
Culled Empty Block (label) screen_fill::@5
|
|
Culled Empty Block (label) screen_fill::@6
|
|
Culled Empty Block (label) bitmap_clear::@5
|
|
Culled Empty Block (label) bitmap_clear::@6
|
|
Culled Empty Block (label) bitmap_init::@5
|
|
Culled Empty Block (label) bitmap_init::@11
|
|
Culled Empty Block (label) bitmap_init::@12
|
|
Culled Empty Block (label) bitmap_init::@9
|
|
Adding NOP phi() at start of @begin
|
|
Adding NOP phi() at start of @18
|
|
Adding NOP phi() at start of @end
|
|
Adding NOP phi() at start of main::vicSelectGfxBank1_toDd001
|
|
Adding NOP phi() at start of main::toD0181
|
|
Adding NOP phi() at start of main::@17
|
|
Adding NOP phi() at start of main::@18
|
|
Adding NOP phi() at start of divr16s
|
|
Adding NOP phi() at start of divr16u
|
|
Adding NOP phi() at start of screen_fill
|
|
Adding NOP phi() at start of bitmap_init
|
|
Adding NOP phi() at start of bitmap_init::@10
|
|
|
|
FINAL CONTROL FLOW GRAPH
|
|
@begin: scope:[] from
|
|
[0] phi()
|
|
to:@18
|
|
@18: scope:[] from @begin
|
|
[1] phi()
|
|
[2] call main
|
|
to:@end
|
|
@end: scope:[] from @18
|
|
[3] phi()
|
|
main: scope:[main] from @18
|
|
asm { sei }
|
|
[5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0
|
|
[6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0
|
|
[7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3
|
|
to:main::vicSelectGfxBank1
|
|
main::vicSelectGfxBank1: scope:[main] from main
|
|
[8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
|
to:main::vicSelectGfxBank1_toDd001
|
|
main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1
|
|
[9] phi()
|
|
to:main::vicSelectGfxBank1_@1
|
|
main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001
|
|
[10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0
|
|
to:main::toD0181
|
|
main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1
|
|
[11] phi()
|
|
to:main::@16
|
|
main::@16: scope:[main] from main::toD0181
|
|
[12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0
|
|
[13] call bitmap_init
|
|
to:main::@17
|
|
main::@17: scope:[main] from main::@16
|
|
[14] phi()
|
|
[15] call bitmap_clear
|
|
to:main::@18
|
|
main::@18: scope:[main] from main::@17
|
|
[16] phi()
|
|
[17] call screen_fill
|
|
to:main::@1
|
|
main::@1: scope:[main] from main::@18 main::@21
|
|
[18] (byte) main::i#2 ← phi( main::@18/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@21/(byte) main::i#1 )
|
|
[19] (byte) point_init::point_idx#0 ← (byte) main::i#2
|
|
[20] call point_init
|
|
to:main::@20
|
|
main::@20: scope:[main] from main::@1
|
|
[21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
[22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2)
|
|
[23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9)
|
|
[24] call bitmap_plot
|
|
to:main::@21
|
|
main::@21: scope:[main] from main::@20
|
|
[25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
|
[26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1
|
|
to:main::@5
|
|
main::@5: scope:[main] from main::@21 main::@5 main::@7
|
|
[27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5
|
|
to:main::@7
|
|
main::@7: scope:[main] from main::@5
|
|
[28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
|
|
to:main::@5
|
|
bitmap_plot: scope:[bitmap_plot] from main::@20
|
|
[29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0)
|
|
[30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528
|
|
[31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1
|
|
[32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0
|
|
[33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2)
|
|
to:bitmap_plot::@return
|
|
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
|
[34] return
|
|
to:@return
|
|
point_init: scope:[point_init] from main::@1
|
|
[35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
[36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0)
|
|
[37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0)
|
|
[38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0)
|
|
[39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5
|
|
to:point_init::abs16s1
|
|
point_init::abs16s1: scope:[point_init] from point_init
|
|
[40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1
|
|
to:point_init::@12
|
|
point_init::@12: scope:[point_init] from point_init::abs16s1
|
|
[41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1
|
|
to:point_init::abs16s1_@return
|
|
point_init::abs16s1_@return: scope:[point_init] from point_init::@12 point_init::abs16s1_@1
|
|
[42] (word) point_init::abs16s1_return#2 ← phi( point_init::abs16s1_@1/(word~) point_init::abs16s1_return#5 point_init::@12/(word~) point_init::abs16s1_return#6 )
|
|
to:point_init::abs16s2
|
|
point_init::abs16s2: scope:[point_init] from point_init::abs16s1_@return
|
|
[43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1
|
|
to:point_init::@13
|
|
point_init::@13: scope:[point_init] from point_init::abs16s2
|
|
[44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0
|
|
to:point_init::abs16s2_@return
|
|
point_init::abs16s2_@return: scope:[point_init] from point_init::@13 point_init::abs16s2_@1
|
|
[45] (word) point_init::abs16s2_return#2 ← phi( point_init::abs16s2_@1/(word~) point_init::abs16s2_return#5 point_init::@13/(word~) point_init::abs16s2_return#6 )
|
|
to:point_init::@10
|
|
point_init::@10: scope:[point_init] from point_init::abs16s2_@return
|
|
[46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1
|
|
to:point_init::@2
|
|
point_init::@2: scope:[point_init] from point_init::@10 point_init::@11
|
|
[47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4
|
|
[48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16
|
|
[49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0)
|
|
[50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4
|
|
[51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18
|
|
[52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0
|
|
to:point_init::@return
|
|
point_init::@return: scope:[point_init] from point_init::@2
|
|
[53] return
|
|
to:@return
|
|
point_init::@1: scope:[point_init] from point_init::@10
|
|
[54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3
|
|
to:point_init::@7
|
|
point_init::@7: scope:[point_init] from point_init::@1
|
|
[55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16
|
|
to:point_init::@4
|
|
point_init::@4: scope:[point_init] from point_init::@3 point_init::@7
|
|
[56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1
|
|
[57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0
|
|
[58] call divr16s
|
|
[59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
|
|
to:point_init::@11
|
|
point_init::@11: scope:[point_init] from point_init::@4
|
|
[60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3
|
|
[61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0
|
|
[62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
|
[63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14
|
|
to:point_init::@2
|
|
point_init::@3: scope:[point_init] from point_init::@1
|
|
[64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16
|
|
to:point_init::@4
|
|
point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2
|
|
[65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0
|
|
[66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0
|
|
to:point_init::abs16s2_@return
|
|
point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1
|
|
[67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1
|
|
[68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0
|
|
to:point_init::abs16s1_@return
|
|
divr16s: scope:[divr16s] from point_init::@4
|
|
[69] phi()
|
|
to:divr16s::@16
|
|
divr16s::@16: scope:[divr16s] from divr16s
|
|
[70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1
|
|
to:divr16s::@17
|
|
divr16s::@17: scope:[divr16s] from divr16s::@16
|
|
[71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0
|
|
to:divr16s::@2
|
|
divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@17
|
|
[72] (word) divr16s::remu#3 ← phi( divr16s::@1/(word~) divr16s::remu#7 divr16s::@17/(word~) divr16s::remu#8 )
|
|
[72] (word) divr16s::dividendu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::dividend#0 divr16s::@17/((word))(const signed word) divr16s::dividend#0 )
|
|
[72] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@17/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
|
[73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3
|
|
to:divr16s::@18
|
|
divr16s::@18: scope:[divr16s] from divr16s::@2
|
|
[74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
|
|
to:divr16s::@4
|
|
divr16s::@4: scope:[divr16s] from divr16s::@18 divr16s::@3
|
|
[75] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@18/(byte) divr16s::neg#3 )
|
|
[75] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@18/(word~) divr16s::divisoru#5 )
|
|
[76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3
|
|
[77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3
|
|
[78] (word) divr16u::rem#3 ← (word) divr16s::remu#3
|
|
[79] call divr16u
|
|
[80] (word) divr16u::return#2 ← (word) divr16u::return#0
|
|
to:divr16s::@15
|
|
divr16s::@15: scope:[divr16s] from divr16s::@4
|
|
[81] (word) divr16s::resultu#0 ← (word) divr16u::return#2
|
|
[82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19
|
|
to:divr16s::@11
|
|
divr16s::@11: scope:[divr16s] from divr16s::@15
|
|
[83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0
|
|
to:divr16s::@return
|
|
divr16s::@return: scope:[divr16s] from divr16s::@11 divr16s::@19
|
|
[84] (signed word) divr16s::return#2 ← phi( divr16s::@11/(signed word) divr16s::return#1 divr16s::@19/(signed word~) divr16s::return#7 )
|
|
[85] return
|
|
to:@return
|
|
divr16s::@19: scope:[divr16s] from divr16s::@15
|
|
[86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
|
|
to:divr16s::@return
|
|
divr16s::@3: scope:[divr16s] from divr16s::@2
|
|
[87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0
|
|
[88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
[89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11
|
|
to:divr16s::@4
|
|
divr16s::@1: scope:[divr16s] from divr16s::@16
|
|
[90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0
|
|
[91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7
|
|
to:divr16s::@2
|
|
divr16u: scope:[divr16u] from divr16s::@4
|
|
[92] phi()
|
|
to:divr16u::@1
|
|
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
|
[93] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
|
|
[93] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
|
|
[93] (word) divr16u::dividend#2 ← phi( divr16u/(word) divr16u::dividend#1 divr16u::@3/(word) divr16u::dividend#0 )
|
|
[93] (word) divr16u::rem#4 ← phi( divr16u/(word) divr16u::rem#3 divr16u::@3/(word) divr16u::rem#9 )
|
|
[94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
[95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2
|
|
[96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
|
|
[97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
|
to:divr16u::@4
|
|
divr16u::@4: scope:[divr16u] from divr16u::@1
|
|
[98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
to:divr16u::@2
|
|
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
|
[99] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
|
[100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
[101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
[102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3
|
|
to:divr16u::@5
|
|
divr16u::@5: scope:[divr16u] from divr16u::@2
|
|
[103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
|
[104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0
|
|
to:divr16u::@3
|
|
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
|
[105] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
|
[105] (word) divr16u::rem#9 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 )
|
|
[106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
|
[107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1
|
|
to:divr16u::@return
|
|
divr16u::@return: scope:[divr16u] from divr16u::@3
|
|
[108] return
|
|
to:@return
|
|
screen_fill: scope:[screen_fill] from main::@18
|
|
[109] phi()
|
|
to:screen_fill::@1
|
|
screen_fill::@1: scope:[screen_fill] from screen_fill screen_fill::@3
|
|
[110] (byte) screen_fill::y#4 ← phi( screen_fill/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@3/(byte) screen_fill::y#1 )
|
|
[110] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN#0 screen_fill::@3/(byte*) screen_fill::screen#1 )
|
|
to:screen_fill::@2
|
|
screen_fill::@2: scope:[screen_fill] from screen_fill::@1 screen_fill::@2
|
|
[111] (byte) screen_fill::x#2 ← phi( screen_fill::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 screen_fill::@2/(byte) screen_fill::x#1 )
|
|
[111] (byte*) screen_fill::screen#2 ← phi( screen_fill::@1/(byte*) screen_fill::screen#3 screen_fill::@2/(byte*) screen_fill::screen#1 )
|
|
[112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0
|
|
[113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2
|
|
[114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2
|
|
[115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2
|
|
to:screen_fill::@3
|
|
screen_fill::@3: scope:[screen_fill] from screen_fill::@2
|
|
[116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4
|
|
[117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1
|
|
to:screen_fill::@return
|
|
screen_fill::@return: scope:[screen_fill] from screen_fill::@3
|
|
[118] return
|
|
to:@return
|
|
bitmap_clear: scope:[bitmap_clear] from main::@17
|
|
[119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0)
|
|
[120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3
|
|
to:bitmap_clear::@1
|
|
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3
|
|
[121] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 )
|
|
[121] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 )
|
|
to:bitmap_clear::@2
|
|
bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2
|
|
[122] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 )
|
|
[122] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 )
|
|
[123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
[124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2
|
|
[125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2
|
|
[126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2
|
|
to:bitmap_clear::@3
|
|
bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2
|
|
[127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4
|
|
[128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1
|
|
to:bitmap_clear::@return
|
|
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
|
|
[129] return
|
|
to:@return
|
|
bitmap_init: scope:[bitmap_init] from main::@16
|
|
[130] phi()
|
|
to:bitmap_init::@1
|
|
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
|
|
[131] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
|
|
[131] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 )
|
|
[132] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
|
|
[133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
|
[134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10
|
|
to:bitmap_init::@2
|
|
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10
|
|
[135] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 )
|
|
[136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
|
|
[137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1
|
|
to:bitmap_init::@3
|
|
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4
|
|
[138] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 )
|
|
[138] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
|
[139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
|
[140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
|
|
[141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4
|
|
[142] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
|
|
[143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
|
|
[144] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
|
|
[145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
|
[146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4
|
|
to:bitmap_init::@7
|
|
bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3
|
|
[147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
|
|
to:bitmap_init::@4
|
|
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7
|
|
[148] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 )
|
|
[149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
|
|
[150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3
|
|
to:bitmap_init::@return
|
|
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
|
|
[151] return
|
|
to:@return
|
|
bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1
|
|
[152] phi()
|
|
to:bitmap_init::@2
|
|
|
|
|
|
VARIABLE REGISTER WEIGHTS
|
|
(byte*) BITMAP
|
|
(byte*) BORDERCOL
|
|
(byte*) CIA2_PORT_A
|
|
(byte*) CIA2_PORT_A_DDR
|
|
(byte*) D011
|
|
(byte*) D018
|
|
(byte) DELAY
|
|
(byte*) PROCPORT
|
|
(byte*) PROCPORT_DDR
|
|
(byte) PROCPORT_DDR_MEMORY_MASK
|
|
(byte) PROCPORT_RAM_IO
|
|
(byte*) RASTER
|
|
(byte*) SCREEN
|
|
(byte) VIC_BMM
|
|
(byte) VIC_DEN
|
|
(byte) VIC_RSEL
|
|
(void()) bitmap_clear()
|
|
(word~) bitmap_clear::$3 2.0
|
|
(byte*) bitmap_clear::bitmap
|
|
(byte*) bitmap_clear::bitmap#1 42.599999999999994
|
|
(byte*) bitmap_clear::bitmap#2 157.0
|
|
(byte*) bitmap_clear::bitmap#3 24.0
|
|
(byte*~) bitmap_clear::bitmap#5 4.0
|
|
(byte) bitmap_clear::x
|
|
(byte) bitmap_clear::x#1 151.5
|
|
(byte) bitmap_clear::x#2 67.33333333333333
|
|
(byte) bitmap_clear::y
|
|
(byte) bitmap_clear::y#1 16.5
|
|
(byte) bitmap_clear::y#4 3.6666666666666665
|
|
(void()) bitmap_init((byte*) bitmap_init::bitmap)
|
|
(byte~) bitmap_init::$3 11.0
|
|
(byte~) bitmap_init::$4 22.0
|
|
(byte~) bitmap_init::$5 22.0
|
|
(byte~) bitmap_init::$6 22.0
|
|
(byte~) bitmap_init::$7 22.0
|
|
(byte*) bitmap_init::bitmap
|
|
(byte) bitmap_init::bits
|
|
(byte) bitmap_init::bits#1 11.0
|
|
(byte) bitmap_init::bits#3 16.5
|
|
(byte) bitmap_init::bits#4 7.333333333333333
|
|
(byte) bitmap_init::x
|
|
(byte) bitmap_init::x#1 16.5
|
|
(byte) bitmap_init::x#2 5.5
|
|
(byte) bitmap_init::y
|
|
(byte) bitmap_init::y#1 16.5
|
|
(byte) bitmap_init::y#2 6.0
|
|
(byte*) bitmap_init::yoffs
|
|
(byte*) bitmap_init::yoffs#1 22.0
|
|
(byte*) bitmap_init::yoffs#2 6.111111111111112
|
|
(byte*) bitmap_init::yoffs#4 11.0
|
|
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
|
(word~) bitmap_plot::$1 4.0
|
|
(byte~) bitmap_plot::$2 4.0
|
|
(word~) bitmap_plot::$3 1.0
|
|
(byte*) bitmap_plot::plotter
|
|
(byte*) bitmap_plot::plotter#1 3.0
|
|
(word) bitmap_plot::x
|
|
(word) bitmap_plot::x#0 3.0
|
|
(byte) bitmap_plot::y
|
|
(byte) bitmap_plot::y#0 15.0
|
|
(byte[256]) bitmap_plot_bit
|
|
(byte[256]) bitmap_plot_yhi
|
|
(byte[256]) bitmap_plot_ylo
|
|
(byte[4]) delay
|
|
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
|
|
(signed word~) divr16s::$11 1.0
|
|
(signed word~) divr16s::$7 2.0
|
|
(signed word) divr16s::dividend
|
|
(word) divr16s::dividendu
|
|
(word) divr16s::dividendu#3 0.2857142857142857
|
|
(signed word) divr16s::divisor
|
|
(signed word) divr16s::divisor#0 0.6666666666666666
|
|
(word) divr16s::divisoru
|
|
(word) divr16s::divisoru#3 3.0
|
|
(word~) divr16s::divisoru#4 4.0
|
|
(word~) divr16s::divisoru#5 4.0
|
|
(byte) divr16s::neg
|
|
(byte) divr16s::neg#2 2.0
|
|
(byte) divr16s::neg#3 1.0
|
|
(byte) divr16s::neg#4 0.8571428571428571
|
|
(signed word) divr16s::rem
|
|
(signed word) divr16s::rem#0 2.0
|
|
(word) divr16s::remu
|
|
(word) divr16s::remu#3 0.6666666666666666
|
|
(word~) divr16s::remu#7 4.0
|
|
(word~) divr16s::remu#8 4.0
|
|
(word) divr16s::resultu
|
|
(word) divr16s::resultu#0 1.0
|
|
(signed word) divr16s::return
|
|
(signed word) divr16s::return#1 4.0
|
|
(signed word) divr16s::return#2 2.0
|
|
(signed word) divr16s::return#3 4.0
|
|
(signed word~) divr16s::return#7 4.0
|
|
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
|
(byte~) divr16u::$1 202.0
|
|
(byte~) divr16u::$2 202.0
|
|
(word) divr16u::dividend
|
|
(word) divr16u::dividend#0 25.25
|
|
(word) divr16u::dividend#1 1.0
|
|
(word) divr16u::dividend#2 43.57142857142858
|
|
(word) divr16u::divisor
|
|
(word) divr16u::divisor#0 11.333333333333332
|
|
(byte) divr16u::i
|
|
(byte) divr16u::i#1 151.5
|
|
(byte) divr16u::i#2 15.538461538461538
|
|
(word) divr16u::quotient
|
|
(word) divr16u::quotient#1 151.5
|
|
(word) divr16u::quotient#2 101.0
|
|
(word) divr16u::quotient#3 25.25
|
|
(word) divr16u::rem
|
|
(word) divr16u::rem#0 75.75
|
|
(word) divr16u::rem#1 202.0
|
|
(word) divr16u::rem#2 202.0
|
|
(word) divr16u::rem#3 2.0
|
|
(word) divr16u::rem#4 204.0
|
|
(word) divr16u::rem#5 101.0
|
|
(word) divr16u::rem#9 101.0
|
|
(word) divr16u::return
|
|
(word) divr16u::return#0 61.0
|
|
(word) divr16u::return#2 4.0
|
|
(void()) main()
|
|
(byte~) main::$9 11.0
|
|
(byte) main::i
|
|
(byte) main::i#1 16.5
|
|
(byte) main::i#2 7.857142857142857
|
|
(word~) main::toD0181_$0
|
|
(word~) main::toD0181_$1
|
|
(word~) main::toD0181_$2
|
|
(byte~) main::toD0181_$3
|
|
(word~) main::toD0181_$4
|
|
(byte~) main::toD0181_$5
|
|
(byte~) main::toD0181_$6
|
|
(byte~) main::toD0181_$7
|
|
(byte~) main::toD0181_$8
|
|
(byte*) main::toD0181_gfx
|
|
(byte) main::toD0181_return
|
|
(byte*) main::toD0181_screen
|
|
(byte~) main::vicSelectGfxBank1_$0
|
|
(byte*) main::vicSelectGfxBank1_gfx
|
|
(word~) main::vicSelectGfxBank1_toDd001_$0
|
|
(byte~) main::vicSelectGfxBank1_toDd001_$1
|
|
(byte~) main::vicSelectGfxBank1_toDd001_$2
|
|
(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3
|
|
(byte*) main::vicSelectGfxBank1_toDd001_gfx
|
|
(byte) main::vicSelectGfxBank1_toDd001_return
|
|
(void()) point_init((byte) point_init::point_idx)
|
|
(byte~) point_init::$13 4.0
|
|
(byte~) point_init::$14 2.0
|
|
(word~) point_init::$16 4.0
|
|
(word~) point_init::$17 4.0
|
|
(word~) point_init::$18 4.0
|
|
(signed word~) point_init::$4 2.0
|
|
(signed word~) point_init::$5 4.0
|
|
(bool~) point_init::abs16s1_$0
|
|
(word~) point_init::abs16s1_$1
|
|
(signed word~) point_init::abs16s1_$2
|
|
(signed word) point_init::abs16s1_$2#0 2.0
|
|
(word~) point_init::abs16s1_$3
|
|
(word) point_init::abs16s1_return
|
|
(word) point_init::abs16s1_return#2 1.0
|
|
(word~) point_init::abs16s1_return#5 4.0
|
|
(word~) point_init::abs16s1_return#6 4.0
|
|
(signed word) point_init::abs16s1_w
|
|
(bool~) point_init::abs16s2_$0
|
|
(word~) point_init::abs16s2_$1
|
|
(signed word~) point_init::abs16s2_$2
|
|
(signed word) point_init::abs16s2_$2#0 2.0
|
|
(word~) point_init::abs16s2_$3
|
|
(word) point_init::abs16s2_return
|
|
(word) point_init::abs16s2_return#2 6.0
|
|
(word~) point_init::abs16s2_return#5 4.0
|
|
(word~) point_init::abs16s2_return#6 4.0
|
|
(signed word) point_init::abs16s2_w
|
|
(byte) point_init::point_idx
|
|
(byte) point_init::point_idx#0 0.71875
|
|
(byte) point_init::point_idx1
|
|
(byte) point_init::point_idx1#0 0.375
|
|
(signed word) point_init::x_diff
|
|
(signed word) point_init::x_diff#1 0.5555555555555556
|
|
(signed word) point_init::x_stepf
|
|
(signed word) point_init::x_stepf#0 4.0
|
|
(signed word) point_init::y_diff
|
|
(signed word) point_init::y_diff#0 0.5
|
|
(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch)
|
|
(byte) screen_fill::ch
|
|
(byte*) screen_fill::screen
|
|
(byte*) screen_fill::screen#1 42.599999999999994
|
|
(byte*) screen_fill::screen#2 157.0
|
|
(byte*) screen_fill::screen#3 22.0
|
|
(byte) screen_fill::x
|
|
(byte) screen_fill::x#1 151.5
|
|
(byte) screen_fill::x#2 67.33333333333333
|
|
(byte) screen_fill::y
|
|
(byte) screen_fill::y#1 16.5
|
|
(byte) screen_fill::y#4 3.6666666666666665
|
|
(signed byte[4]) x_add
|
|
(word[4]) x_cur
|
|
(word[4]) x_end
|
|
(word[4]) x_start
|
|
(signed byte[4]) y_add
|
|
(word[4]) y_cur
|
|
(byte[4]) y_end
|
|
(byte[4]) y_start
|
|
|
|
Initial phi equivalence classes
|
|
[ main::i#2 main::i#1 ]
|
|
[ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ]
|
|
[ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ]
|
|
[ divr16s::dividendu#3 ]
|
|
[ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ]
|
|
[ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ]
|
|
[ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
|
|
[ divr16s::return#2 divr16s::return#1 divr16s::return#7 ]
|
|
[ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
|
|
[ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ]
|
|
[ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
|
|
[ divr16u::i#2 divr16u::i#1 ]
|
|
[ screen_fill::y#4 screen_fill::y#1 ]
|
|
[ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ]
|
|
[ screen_fill::x#2 screen_fill::x#1 ]
|
|
[ bitmap_clear::y#4 bitmap_clear::y#1 ]
|
|
[ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ]
|
|
[ bitmap_clear::x#2 bitmap_clear::x#1 ]
|
|
[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
|
[ bitmap_init::x#2 bitmap_init::x#1 ]
|
|
[ bitmap_init::y#2 bitmap_init::y#1 ]
|
|
[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
|
Added variable point_init::point_idx#0 to zero page equivalence class [ point_init::point_idx#0 ]
|
|
Added variable main::$9 to zero page equivalence class [ main::$9 ]
|
|
Added variable bitmap_plot::x#0 to zero page equivalence class [ bitmap_plot::x#0 ]
|
|
Added variable bitmap_plot::y#0 to zero page equivalence class [ bitmap_plot::y#0 ]
|
|
Added variable bitmap_plot::$3 to zero page equivalence class [ bitmap_plot::$3 ]
|
|
Added variable bitmap_plot::$1 to zero page equivalence class [ bitmap_plot::$1 ]
|
|
Added variable bitmap_plot::plotter#1 to zero page equivalence class [ bitmap_plot::plotter#1 ]
|
|
Added variable bitmap_plot::$2 to zero page equivalence class [ bitmap_plot::$2 ]
|
|
Added variable point_init::point_idx1#0 to zero page equivalence class [ point_init::point_idx1#0 ]
|
|
Added variable point_init::x_diff#1 to zero page equivalence class [ point_init::x_diff#1 ]
|
|
Added variable point_init::$4 to zero page equivalence class [ point_init::$4 ]
|
|
Added variable point_init::$5 to zero page equivalence class [ point_init::$5 ]
|
|
Added variable point_init::y_diff#0 to zero page equivalence class [ point_init::y_diff#0 ]
|
|
Added variable point_init::$16 to zero page equivalence class [ point_init::$16 ]
|
|
Added variable point_init::$17 to zero page equivalence class [ point_init::$17 ]
|
|
Added variable point_init::$18 to zero page equivalence class [ point_init::$18 ]
|
|
Added variable divr16s::divisor#0 to zero page equivalence class [ divr16s::divisor#0 ]
|
|
Added variable divr16s::rem#0 to zero page equivalence class [ divr16s::rem#0 ]
|
|
Added variable divr16s::return#3 to zero page equivalence class [ divr16s::return#3 ]
|
|
Added variable point_init::x_stepf#0 to zero page equivalence class [ point_init::x_stepf#0 ]
|
|
Added variable point_init::$13 to zero page equivalence class [ point_init::$13 ]
|
|
Added variable point_init::$14 to zero page equivalence class [ point_init::$14 ]
|
|
Added variable point_init::abs16s2_$2#0 to zero page equivalence class [ point_init::abs16s2_$2#0 ]
|
|
Added variable point_init::abs16s1_$2#0 to zero page equivalence class [ point_init::abs16s1_$2#0 ]
|
|
Added variable divr16u::divisor#0 to zero page equivalence class [ divr16u::divisor#0 ]
|
|
Added variable divr16u::return#2 to zero page equivalence class [ divr16u::return#2 ]
|
|
Added variable divr16s::resultu#0 to zero page equivalence class [ divr16s::resultu#0 ]
|
|
Added variable divr16s::$11 to zero page equivalence class [ divr16s::$11 ]
|
|
Added variable divr16s::$7 to zero page equivalence class [ divr16s::$7 ]
|
|
Added variable divr16u::$1 to zero page equivalence class [ divr16u::$1 ]
|
|
Added variable divr16u::$2 to zero page equivalence class [ divr16u::$2 ]
|
|
Added variable bitmap_clear::$3 to zero page equivalence class [ bitmap_clear::$3 ]
|
|
Added variable bitmap_init::$3 to zero page equivalence class [ bitmap_init::$3 ]
|
|
Added variable bitmap_init::$4 to zero page equivalence class [ bitmap_init::$4 ]
|
|
Added variable bitmap_init::$5 to zero page equivalence class [ bitmap_init::$5 ]
|
|
Added variable bitmap_init::$6 to zero page equivalence class [ bitmap_init::$6 ]
|
|
Added variable bitmap_init::$7 to zero page equivalence class [ bitmap_init::$7 ]
|
|
Complete equivalence classes
|
|
[ main::i#2 main::i#1 ]
|
|
[ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ]
|
|
[ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ]
|
|
[ divr16s::dividendu#3 ]
|
|
[ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ]
|
|
[ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ]
|
|
[ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
|
|
[ divr16s::return#2 divr16s::return#1 divr16s::return#7 ]
|
|
[ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
|
|
[ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ]
|
|
[ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
|
|
[ divr16u::i#2 divr16u::i#1 ]
|
|
[ screen_fill::y#4 screen_fill::y#1 ]
|
|
[ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ]
|
|
[ screen_fill::x#2 screen_fill::x#1 ]
|
|
[ bitmap_clear::y#4 bitmap_clear::y#1 ]
|
|
[ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ]
|
|
[ bitmap_clear::x#2 bitmap_clear::x#1 ]
|
|
[ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
|
[ bitmap_init::x#2 bitmap_init::x#1 ]
|
|
[ bitmap_init::y#2 bitmap_init::y#1 ]
|
|
[ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
|
[ point_init::point_idx#0 ]
|
|
[ main::$9 ]
|
|
[ bitmap_plot::x#0 ]
|
|
[ bitmap_plot::y#0 ]
|
|
[ bitmap_plot::$3 ]
|
|
[ bitmap_plot::$1 ]
|
|
[ bitmap_plot::plotter#1 ]
|
|
[ bitmap_plot::$2 ]
|
|
[ point_init::point_idx1#0 ]
|
|
[ point_init::x_diff#1 ]
|
|
[ point_init::$4 ]
|
|
[ point_init::$5 ]
|
|
[ point_init::y_diff#0 ]
|
|
[ point_init::$16 ]
|
|
[ point_init::$17 ]
|
|
[ point_init::$18 ]
|
|
[ divr16s::divisor#0 ]
|
|
[ divr16s::rem#0 ]
|
|
[ divr16s::return#3 ]
|
|
[ point_init::x_stepf#0 ]
|
|
[ point_init::$13 ]
|
|
[ point_init::$14 ]
|
|
[ point_init::abs16s2_$2#0 ]
|
|
[ point_init::abs16s1_$2#0 ]
|
|
[ divr16u::divisor#0 ]
|
|
[ divr16u::return#2 ]
|
|
[ divr16s::resultu#0 ]
|
|
[ divr16s::$11 ]
|
|
[ divr16s::$7 ]
|
|
[ divr16u::$1 ]
|
|
[ divr16u::$2 ]
|
|
[ bitmap_clear::$3 ]
|
|
[ bitmap_init::$3 ]
|
|
[ bitmap_init::$4 ]
|
|
[ bitmap_init::$5 ]
|
|
[ bitmap_init::$6 ]
|
|
[ bitmap_init::$7 ]
|
|
Allocated zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
|
|
Allocated zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ]
|
|
Allocated zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ]
|
|
Allocated zp ZP_WORD:7 [ divr16s::dividendu#3 ]
|
|
Allocated zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ]
|
|
Allocated zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ]
|
|
Allocated zp ZP_BYTE:13 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
|
|
Allocated zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ]
|
|
Allocated zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
|
|
Allocated zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ]
|
|
Allocated zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ]
|
|
Allocated zp ZP_BYTE:22 [ divr16u::i#2 divr16u::i#1 ]
|
|
Allocated zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ]
|
|
Allocated zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ]
|
|
Allocated zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ]
|
|
Allocated zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
|
|
Allocated zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ]
|
|
Allocated zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ]
|
|
Allocated zp ZP_BYTE:31 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
|
Allocated zp ZP_BYTE:32 [ bitmap_init::x#2 bitmap_init::x#1 ]
|
|
Allocated zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
|
Allocated zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
|
Allocated zp ZP_BYTE:36 [ point_init::point_idx#0 ]
|
|
Allocated zp ZP_BYTE:37 [ main::$9 ]
|
|
Allocated zp ZP_WORD:38 [ bitmap_plot::x#0 ]
|
|
Allocated zp ZP_BYTE:40 [ bitmap_plot::y#0 ]
|
|
Allocated zp ZP_WORD:41 [ bitmap_plot::$3 ]
|
|
Allocated zp ZP_WORD:43 [ bitmap_plot::$1 ]
|
|
Allocated zp ZP_WORD:45 [ bitmap_plot::plotter#1 ]
|
|
Allocated zp ZP_BYTE:47 [ bitmap_plot::$2 ]
|
|
Allocated zp ZP_BYTE:48 [ point_init::point_idx1#0 ]
|
|
Allocated zp ZP_WORD:49 [ point_init::x_diff#1 ]
|
|
Allocated zp ZP_WORD:51 [ point_init::$4 ]
|
|
Allocated zp ZP_WORD:53 [ point_init::$5 ]
|
|
Allocated zp ZP_WORD:55 [ point_init::y_diff#0 ]
|
|
Allocated zp ZP_WORD:57 [ point_init::$16 ]
|
|
Allocated zp ZP_WORD:59 [ point_init::$17 ]
|
|
Allocated zp ZP_WORD:61 [ point_init::$18 ]
|
|
Allocated zp ZP_WORD:63 [ divr16s::divisor#0 ]
|
|
Allocated zp ZP_WORD:65 [ divr16s::rem#0 ]
|
|
Allocated zp ZP_WORD:67 [ divr16s::return#3 ]
|
|
Allocated zp ZP_WORD:69 [ point_init::x_stepf#0 ]
|
|
Allocated zp ZP_BYTE:71 [ point_init::$13 ]
|
|
Allocated zp ZP_BYTE:72 [ point_init::$14 ]
|
|
Allocated zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ]
|
|
Allocated zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ]
|
|
Allocated zp ZP_WORD:77 [ divr16u::divisor#0 ]
|
|
Allocated zp ZP_WORD:79 [ divr16u::return#2 ]
|
|
Allocated zp ZP_WORD:81 [ divr16s::resultu#0 ]
|
|
Allocated zp ZP_WORD:83 [ divr16s::$11 ]
|
|
Allocated zp ZP_WORD:85 [ divr16s::$7 ]
|
|
Allocated zp ZP_BYTE:87 [ divr16u::$1 ]
|
|
Allocated zp ZP_BYTE:88 [ divr16u::$2 ]
|
|
Allocated zp ZP_WORD:89 [ bitmap_clear::$3 ]
|
|
Allocated zp ZP_BYTE:91 [ bitmap_init::$3 ]
|
|
Allocated zp ZP_BYTE:92 [ bitmap_init::$4 ]
|
|
Allocated zp ZP_BYTE:93 [ bitmap_init::$5 ]
|
|
Allocated zp ZP_BYTE:94 [ bitmap_init::$6 ]
|
|
Allocated zp ZP_BYTE:95 [ bitmap_init::$7 ]
|
|
|
|
INITIAL ASM
|
|
//SEG0 Basic Upstart
|
|
.pc = $801 "Basic"
|
|
:BasicUpstart(main)
|
|
.pc = $80d "Program"
|
|
//SEG1 Global Constants & labels
|
|
.label PROCPORT_DDR = 0
|
|
.const PROCPORT_DDR_MEMORY_MASK = 7
|
|
.label PROCPORT = 1
|
|
.const PROCPORT_RAM_IO = $35
|
|
.label RASTER = $d012
|
|
.label BORDERCOL = $d020
|
|
.label D011 = $d011
|
|
.const VIC_BMM = $20
|
|
.const VIC_DEN = $10
|
|
.const VIC_RSEL = 8
|
|
.label D018 = $d018
|
|
.label CIA2_PORT_A = $dd00
|
|
.label CIA2_PORT_A_DDR = $dd02
|
|
.label BITMAP = $a000
|
|
.label SCREEN = $8800
|
|
.const DELAY = 8
|
|
//SEG2 @begin
|
|
bbegin:
|
|
//SEG3 [1] phi from @begin to @18 [phi:@begin->@18]
|
|
b18_from_bbegin:
|
|
jmp b18
|
|
//SEG4 @18
|
|
b18:
|
|
//SEG5 [2] call main
|
|
jsr main
|
|
//SEG6 [3] phi from @18 to @end [phi:@18->@end]
|
|
bend_from_b18:
|
|
jmp bend
|
|
//SEG7 @end
|
|
bend:
|
|
//SEG8 main
|
|
main: {
|
|
.const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6
|
|
.const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f
|
|
.label _9 = $25
|
|
.label i = 2
|
|
//SEG9 asm { sei }
|
|
sei
|
|
//SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_DDR_MEMORY_MASK
|
|
sta PROCPORT_DDR
|
|
//SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_IO
|
|
sta PROCPORT
|
|
//SEG12 [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2
|
|
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
|
|
sta D011
|
|
jmp vicSelectGfxBank1
|
|
//SEG13 main::vicSelectGfxBank1
|
|
vicSelectGfxBank1:
|
|
//SEG14 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2
|
|
lda #3
|
|
sta CIA2_PORT_A_DDR
|
|
//SEG15 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001]
|
|
vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1:
|
|
jmp vicSelectGfxBank1_toDd001
|
|
//SEG16 main::vicSelectGfxBank1_toDd001
|
|
vicSelectGfxBank1_toDd001:
|
|
jmp vicSelectGfxBank1_b1
|
|
//SEG17 main::vicSelectGfxBank1_@1
|
|
vicSelectGfxBank1_b1:
|
|
//SEG18 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2
|
|
lda #vicSelectGfxBank1_toDd001_return
|
|
sta CIA2_PORT_A
|
|
//SEG19 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181]
|
|
toD0181_from_vicSelectGfxBank1_b1:
|
|
jmp toD0181
|
|
//SEG20 main::toD0181
|
|
toD0181:
|
|
jmp b16
|
|
//SEG21 main::@16
|
|
b16:
|
|
//SEG22 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2
|
|
lda #toD0181_return
|
|
sta D018
|
|
//SEG23 [13] call bitmap_init
|
|
//SEG24 [130] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init]
|
|
bitmap_init_from_b16:
|
|
jsr bitmap_init
|
|
//SEG25 [14] phi from main::@16 to main::@17 [phi:main::@16->main::@17]
|
|
b17_from_b16:
|
|
jmp b17
|
|
//SEG26 main::@17
|
|
b17:
|
|
//SEG27 [15] call bitmap_clear
|
|
jsr bitmap_clear
|
|
//SEG28 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18]
|
|
b18_from_b17:
|
|
jmp b18
|
|
//SEG29 main::@18
|
|
b18:
|
|
//SEG30 [17] call screen_fill
|
|
//SEG31 [109] phi from main::@18 to screen_fill [phi:main::@18->screen_fill]
|
|
screen_fill_from_b18:
|
|
jsr screen_fill
|
|
//SEG32 [18] phi from main::@18 to main::@1 [phi:main::@18->main::@1]
|
|
b1_from_b18:
|
|
//SEG33 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i
|
|
jmp b1
|
|
//SEG34 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1]
|
|
b1_from_b21:
|
|
//SEG35 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy
|
|
jmp b1
|
|
//SEG36 main::@1
|
|
b1:
|
|
//SEG37 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2 -- vbuz1=vbuz2
|
|
lda i
|
|
sta point_init.point_idx
|
|
//SEG38 [20] call point_init
|
|
jsr point_init
|
|
jmp b20
|
|
//SEG39 main::@20
|
|
b20:
|
|
//SEG40 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1
|
|
lda i
|
|
lsr
|
|
sta _9
|
|
//SEG41 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2
|
|
ldy i
|
|
lda x_start,y
|
|
sta bitmap_plot.x
|
|
lda x_start+1,y
|
|
sta bitmap_plot.x+1
|
|
//SEG42 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuz1=pbuc1_derefidx_vbuz2
|
|
ldy _9
|
|
lda y_start,y
|
|
sta bitmap_plot.y
|
|
//SEG43 [24] call bitmap_plot
|
|
jsr bitmap_plot
|
|
jmp b21
|
|
//SEG44 main::@21
|
|
b21:
|
|
//SEG45 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2
|
|
lda i
|
|
clc
|
|
adc #2
|
|
sta i
|
|
//SEG46 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda i
|
|
cmp #8
|
|
bne b1_from_b21
|
|
jmp b5
|
|
//SEG47 main::@5
|
|
b5:
|
|
//SEG48 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1
|
|
lda RASTER
|
|
cmp #$ff
|
|
bne b5
|
|
jmp b7
|
|
//SEG49 main::@7
|
|
b7:
|
|
//SEG50 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1
|
|
inc BORDERCOL
|
|
jmp b5
|
|
}
|
|
//SEG51 bitmap_plot
|
|
bitmap_plot: {
|
|
.label _1 = $2b
|
|
.label _2 = $2f
|
|
.label x = $26
|
|
.label y = $28
|
|
.label plotter = $2d
|
|
.label _3 = $29
|
|
//SEG52 [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2
|
|
ldy y
|
|
lda bitmap_plot_yhi,y
|
|
sta _3+1
|
|
lda bitmap_plot_ylo,y
|
|
sta _3
|
|
//SEG53 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1
|
|
lda x
|
|
and #<$fff8
|
|
sta _1
|
|
lda x+1
|
|
and #>$fff8
|
|
sta _1+1
|
|
//SEG54 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz2_plus_vwuz3
|
|
lda _3
|
|
clc
|
|
adc _1
|
|
sta plotter
|
|
lda _3+1
|
|
adc _1+1
|
|
sta plotter+1
|
|
//SEG55 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuz1=_lo_vwuz2
|
|
lda x
|
|
sta _2
|
|
//SEG56 [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuz2
|
|
ldy #0
|
|
lda (plotter),y
|
|
ldy _2
|
|
ora bitmap_plot_bit,y
|
|
ldy #0
|
|
sta (plotter),y
|
|
jmp breturn
|
|
//SEG57 bitmap_plot::@return
|
|
breturn:
|
|
//SEG58 [34] return
|
|
rts
|
|
}
|
|
//SEG59 point_init
|
|
point_init: {
|
|
.label _4 = $33
|
|
.label _5 = $35
|
|
.label _13 = $47
|
|
.label _14 = $48
|
|
.label _16 = $39
|
|
.label _17 = $3b
|
|
.label _18 = $3d
|
|
.label point_idx = $24
|
|
.label point_idx1 = $30
|
|
.label y_diff = $37
|
|
.label abs16s1__2 = $4b
|
|
.label abs16s1_return = 3
|
|
.label abs16s2__2 = $49
|
|
.label abs16s2_return = 5
|
|
.label x_stepf = $45
|
|
.label x_diff = $31
|
|
//SEG60 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1
|
|
lda point_idx
|
|
lsr
|
|
sta point_idx1
|
|
//SEG61 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2
|
|
ldy point_idx
|
|
sec
|
|
lda x_end,y
|
|
sbc x_start,y
|
|
sta x_diff
|
|
lda x_end+1,y
|
|
sbc x_start+1,y
|
|
sta x_diff+1
|
|
//SEG62 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2
|
|
ldy point_idx1
|
|
lda y_end,y
|
|
sta _4
|
|
lda #0
|
|
sta _4+1
|
|
//SEG63 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2
|
|
ldy point_idx1
|
|
lda y_start,y
|
|
sta _5
|
|
lda #0
|
|
sta _5+1
|
|
//SEG64 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz2_minus_vwsz3
|
|
lda _4
|
|
sec
|
|
sbc _5
|
|
sta y_diff
|
|
lda _4+1
|
|
sbc _5+1
|
|
sta y_diff+1
|
|
jmp abs16s1
|
|
//SEG65 point_init::abs16s1
|
|
abs16s1:
|
|
//SEG66 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1
|
|
lda x_diff+1
|
|
bmi abs16s1_b1
|
|
jmp b12
|
|
//SEG67 point_init::@12
|
|
b12:
|
|
//SEG68 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2
|
|
lda x_diff
|
|
sta abs16s1_return
|
|
lda x_diff+1
|
|
sta abs16s1_return+1
|
|
//SEG69 [42] phi from point_init::@12 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return]
|
|
abs16s1_breturn_from_b12:
|
|
abs16s1_breturn_from_abs16s1_b1:
|
|
//SEG70 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy
|
|
jmp abs16s1_breturn
|
|
//SEG71 point_init::abs16s1_@return
|
|
abs16s1_breturn:
|
|
jmp abs16s2
|
|
//SEG72 point_init::abs16s2
|
|
abs16s2:
|
|
//SEG73 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1
|
|
lda y_diff+1
|
|
bmi abs16s2_b1
|
|
jmp b13
|
|
//SEG74 point_init::@13
|
|
b13:
|
|
//SEG75 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2
|
|
lda y_diff
|
|
sta abs16s2_return
|
|
lda y_diff+1
|
|
sta abs16s2_return+1
|
|
//SEG76 [45] phi from point_init::@13 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return]
|
|
abs16s2_breturn_from_b13:
|
|
abs16s2_breturn_from_abs16s2_b1:
|
|
//SEG77 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy
|
|
jmp abs16s2_breturn
|
|
//SEG78 point_init::abs16s2_@return
|
|
abs16s2_breturn:
|
|
jmp b10
|
|
//SEG79 point_init::@10
|
|
b10:
|
|
//SEG80 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1
|
|
lda abs16s1_return
|
|
cmp abs16s2_return
|
|
lda abs16s1_return+1
|
|
sbc abs16s2_return+1
|
|
bvc !+
|
|
eor #$80
|
|
!:
|
|
bpl b1
|
|
jmp b2
|
|
//SEG81 point_init::@2
|
|
b2:
|
|
//SEG82 [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4
|
|
ldy point_idx
|
|
lda x_start,y
|
|
sta _16
|
|
lda x_start+1,y
|
|
sta _16+1
|
|
asl _16
|
|
rol _16+1
|
|
asl _16
|
|
rol _16+1
|
|
asl _16
|
|
rol _16+1
|
|
asl _16
|
|
rol _16+1
|
|
//SEG83 [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2
|
|
ldy point_idx
|
|
lda _16
|
|
sta x_cur,y
|
|
lda _16+1
|
|
sta x_cur+1,y
|
|
//SEG84 [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2
|
|
ldy point_idx1
|
|
lda y_start,y
|
|
sta _17
|
|
lda #0
|
|
sta _17+1
|
|
//SEG85 [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz2_rol_4
|
|
lda _17
|
|
asl
|
|
sta _18
|
|
lda _17+1
|
|
rol
|
|
sta _18+1
|
|
asl _18
|
|
rol _18+1
|
|
asl _18
|
|
rol _18+1
|
|
asl _18
|
|
rol _18+1
|
|
//SEG86 [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2
|
|
ldy point_idx
|
|
lda _18
|
|
sta y_cur,y
|
|
lda _18+1
|
|
sta y_cur+1,y
|
|
//SEG87 [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
|
ldy point_idx1
|
|
lda #DELAY
|
|
sta delay,y
|
|
jmp breturn
|
|
//SEG88 point_init::@return
|
|
breturn:
|
|
//SEG89 [53] return
|
|
rts
|
|
//SEG90 point_init::@1
|
|
b1:
|
|
//SEG91 [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 -- vwsz1_lt_0_then_la1
|
|
lda x_diff+1
|
|
bmi b3
|
|
jmp b7
|
|
//SEG92 point_init::@7
|
|
b7:
|
|
//SEG93 [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbuc2
|
|
ldy point_idx
|
|
lda #$10
|
|
sta x_add,y
|
|
jmp b4
|
|
//SEG94 point_init::@4
|
|
b4:
|
|
//SEG95 [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 -- vwsz1=vwsz2
|
|
lda x_diff
|
|
sta divr16s.divisor
|
|
lda x_diff+1
|
|
sta divr16s.divisor+1
|
|
//SEG96 [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 -- vwsz1=vwsz2
|
|
lda y_diff
|
|
sta divr16s.rem
|
|
lda y_diff+1
|
|
sta divr16s.rem+1
|
|
//SEG97 [58] call divr16s
|
|
//SEG98 [69] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s]
|
|
divr16s_from_b4:
|
|
jsr divr16s
|
|
//SEG99 [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 -- vwsz1=vwsz2
|
|
lda divr16s.return
|
|
sta divr16s.return_3
|
|
lda divr16s.return+1
|
|
sta divr16s.return_3+1
|
|
jmp b11
|
|
//SEG100 point_init::@11
|
|
b11:
|
|
//SEG101 [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 -- vwsz1=vwsz2
|
|
lda divr16s.return_3
|
|
sta x_stepf
|
|
lda divr16s.return_3+1
|
|
sta x_stepf+1
|
|
//SEG102 [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuz1=_hi_vwsz2
|
|
lda x_stepf+1
|
|
sta _13
|
|
//SEG103 [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuz1=vbuz2_ror_4
|
|
lda _13
|
|
lsr
|
|
lsr
|
|
lsr
|
|
lsr
|
|
sta _14
|
|
//SEG104 [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 -- pbsc1_derefidx_vbuz1=vbsz2
|
|
lda _14
|
|
ldy point_idx1
|
|
sta y_add,y
|
|
jmp b2
|
|
//SEG105 point_init::@3
|
|
b3:
|
|
//SEG106 [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbsc2
|
|
ldy point_idx
|
|
lda #-$10
|
|
sta x_add,y
|
|
jmp b4
|
|
//SEG107 point_init::abs16s2_@1
|
|
abs16s2_b1:
|
|
//SEG108 [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2
|
|
sec
|
|
lda y_diff
|
|
eor #$ff
|
|
adc #0
|
|
sta abs16s2__2
|
|
lda y_diff+1
|
|
eor #$ff
|
|
adc #0
|
|
sta abs16s2__2+1
|
|
//SEG109 [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 -- vwuz1=vwuz2
|
|
lda abs16s2__2
|
|
sta abs16s2_return
|
|
lda abs16s2__2+1
|
|
sta abs16s2_return+1
|
|
jmp abs16s2_breturn_from_abs16s2_b1
|
|
//SEG110 point_init::abs16s1_@1
|
|
abs16s1_b1:
|
|
//SEG111 [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2
|
|
sec
|
|
lda x_diff
|
|
eor #$ff
|
|
adc #0
|
|
sta abs16s1__2
|
|
lda x_diff+1
|
|
eor #$ff
|
|
adc #0
|
|
sta abs16s1__2+1
|
|
//SEG112 [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 -- vwuz1=vwuz2
|
|
lda abs16s1__2
|
|
sta abs16s1_return
|
|
lda abs16s1__2+1
|
|
sta abs16s1_return+1
|
|
jmp abs16s1_breturn_from_abs16s1_b1
|
|
}
|
|
//SEG113 divr16s
|
|
divr16s: {
|
|
.const dividend = 0
|
|
.label _7 = $55
|
|
.label _11 = $53
|
|
.label neg = $d
|
|
.label resultu = $51
|
|
.label return = $e
|
|
.label divisor = $3f
|
|
.label rem = $41
|
|
.label return_3 = $43
|
|
.label dividendu = 7
|
|
.label divisoru = $b
|
|
.label remu = 9
|
|
jmp b16
|
|
//SEG114 divr16s::@16
|
|
b16:
|
|
//SEG115 [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1
|
|
lda rem+1
|
|
bmi b1
|
|
jmp b17
|
|
//SEG116 divr16s::@17
|
|
b17:
|
|
//SEG117 [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 -- vwuz1=vwuz2
|
|
lda rem
|
|
sta remu
|
|
lda rem+1
|
|
sta remu+1
|
|
//SEG118 [72] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2]
|
|
b2_from_b17:
|
|
//SEG119 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy
|
|
//SEG120 [72] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@17->divr16s::@2#1] -- vwuz1=vbuc1
|
|
lda #<dividend
|
|
sta dividendu
|
|
lda #>dividend
|
|
sta dividendu+1
|
|
//SEG121 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta neg
|
|
jmp b2
|
|
//SEG122 divr16s::@2
|
|
b2:
|
|
//SEG123 [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1
|
|
lda divisor+1
|
|
bmi b3
|
|
jmp b18
|
|
//SEG124 divr16s::@18
|
|
b18:
|
|
//SEG125 [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 -- vwuz1=vwuz2
|
|
lda divisor
|
|
sta divisoru
|
|
lda divisor+1
|
|
sta divisoru+1
|
|
//SEG126 [75] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4]
|
|
b4_from_b18:
|
|
b4_from_b3:
|
|
//SEG127 [75] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy
|
|
//SEG128 [75] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy
|
|
jmp b4
|
|
//SEG129 divr16s::@4
|
|
b4:
|
|
//SEG130 [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 -- vwuz1=vwuz2
|
|
lda dividendu
|
|
sta divr16u.dividend
|
|
lda dividendu+1
|
|
sta divr16u.dividend+1
|
|
//SEG131 [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 -- vwuz1=vwuz2
|
|
lda divisoru
|
|
sta divr16u.divisor
|
|
lda divisoru+1
|
|
sta divr16u.divisor+1
|
|
//SEG132 [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 -- vwuz1=vwuz2
|
|
lda remu
|
|
sta divr16u.rem
|
|
lda remu+1
|
|
sta divr16u.rem+1
|
|
//SEG133 [79] call divr16u
|
|
//SEG134 [92] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u]
|
|
divr16u_from_b4:
|
|
jsr divr16u
|
|
//SEG135 [80] (word) divr16u::return#2 ← (word) divr16u::return#0 -- vwuz1=vwuz2
|
|
lda divr16u.return
|
|
sta divr16u.return_2
|
|
lda divr16u.return+1
|
|
sta divr16u.return_2+1
|
|
jmp b15
|
|
//SEG136 divr16s::@15
|
|
b15:
|
|
//SEG137 [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 -- vwuz1=vwuz2
|
|
lda divr16u.return_2
|
|
sta resultu
|
|
lda divr16u.return_2+1
|
|
sta resultu+1
|
|
//SEG138 [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuz1_eq_0_then_la1
|
|
lda neg
|
|
cmp #0
|
|
beq b19
|
|
jmp b11
|
|
//SEG139 divr16s::@11
|
|
b11:
|
|
//SEG140 [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz2
|
|
sec
|
|
lda resultu
|
|
eor #$ff
|
|
adc #0
|
|
sta return
|
|
lda resultu+1
|
|
eor #$ff
|
|
adc #0
|
|
sta return+1
|
|
//SEG141 [84] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return]
|
|
breturn_from_b11:
|
|
breturn_from_b19:
|
|
//SEG142 [84] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy
|
|
jmp breturn
|
|
//SEG143 divr16s::@return
|
|
breturn:
|
|
//SEG144 [85] return
|
|
rts
|
|
//SEG145 divr16s::@19
|
|
b19:
|
|
//SEG146 [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 -- vwsz1=vwsz2
|
|
lda resultu
|
|
sta return
|
|
lda resultu+1
|
|
sta return+1
|
|
jmp breturn_from_b19
|
|
//SEG147 divr16s::@3
|
|
b3:
|
|
//SEG148 [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz2
|
|
sec
|
|
lda divisor
|
|
eor #$ff
|
|
adc #0
|
|
sta _11
|
|
lda divisor+1
|
|
eor #$ff
|
|
adc #0
|
|
sta _11+1
|
|
//SEG149 [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_bxor_vbuc1
|
|
lda neg
|
|
eor #1
|
|
sta neg
|
|
//SEG150 [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 -- vwuz1=vwuz2
|
|
lda _11
|
|
sta divisoru
|
|
lda _11+1
|
|
sta divisoru+1
|
|
jmp b4_from_b3
|
|
//SEG151 divr16s::@1
|
|
b1:
|
|
//SEG152 [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz2
|
|
sec
|
|
lda rem
|
|
eor #$ff
|
|
adc #0
|
|
sta _7
|
|
lda rem+1
|
|
eor #$ff
|
|
adc #0
|
|
sta _7+1
|
|
//SEG153 [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 -- vwuz1=vwuz2
|
|
lda _7
|
|
sta remu
|
|
lda _7+1
|
|
sta remu+1
|
|
//SEG154 [72] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2]
|
|
b2_from_b1:
|
|
//SEG155 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy
|
|
//SEG156 [72] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1
|
|
lda #<-dividend
|
|
sta dividendu
|
|
lda #>-dividend
|
|
sta dividendu+1
|
|
//SEG157 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuz1=vbuc1
|
|
lda #1
|
|
sta neg
|
|
jmp b2
|
|
}
|
|
//SEG158 divr16u
|
|
divr16u: {
|
|
.label _1 = $57
|
|
.label _2 = $58
|
|
.label rem = $10
|
|
.label dividend = $12
|
|
.label quotient = $14
|
|
.label i = $16
|
|
.label return = $14
|
|
.label divisor = $4d
|
|
.label return_2 = $4f
|
|
//SEG159 [93] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
|
|
b1_from_divr16u:
|
|
//SEG160 [93] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i
|
|
//SEG161 [93] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta quotient
|
|
lda #>0
|
|
sta quotient+1
|
|
//SEG162 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy
|
|
//SEG163 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy
|
|
jmp b1
|
|
//SEG164 [93] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
|
|
b1_from_b3:
|
|
//SEG165 [93] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy
|
|
//SEG166 [93] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy
|
|
//SEG167 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy
|
|
//SEG168 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy
|
|
jmp b1
|
|
//SEG169 divr16u::@1
|
|
b1:
|
|
//SEG170 [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
|
|
asl rem
|
|
rol rem+1
|
|
//SEG171 [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuz1=_hi_vwuz2
|
|
lda dividend+1
|
|
sta _1
|
|
//SEG172 [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuz1=vbuz2_band_vbuc1
|
|
lda #$80
|
|
and _1
|
|
sta _2
|
|
//SEG173 [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuz1_eq_0_then_la1
|
|
lda _2
|
|
cmp #0
|
|
beq b2_from_b1
|
|
jmp b4
|
|
//SEG174 divr16u::@4
|
|
b4:
|
|
//SEG175 [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1
|
|
lda #1
|
|
ora rem
|
|
sta rem
|
|
//SEG176 [99] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
|
|
b2_from_b1:
|
|
b2_from_b4:
|
|
//SEG177 [99] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy
|
|
jmp b2
|
|
//SEG178 divr16u::@2
|
|
b2:
|
|
//SEG179 [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
|
|
asl dividend
|
|
rol dividend+1
|
|
//SEG180 [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
|
|
asl quotient
|
|
rol quotient+1
|
|
//SEG181 [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1
|
|
lda rem+1
|
|
cmp divisor+1
|
|
bcc b3_from_b2
|
|
bne !+
|
|
lda rem
|
|
cmp divisor
|
|
bcc b3_from_b2
|
|
!:
|
|
jmp b5
|
|
//SEG182 divr16u::@5
|
|
b5:
|
|
//SEG183 [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1
|
|
inc quotient
|
|
bne !+
|
|
inc quotient+1
|
|
!:
|
|
//SEG184 [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2
|
|
lda rem
|
|
sec
|
|
sbc divisor
|
|
sta rem
|
|
lda rem+1
|
|
sbc divisor+1
|
|
sta rem+1
|
|
//SEG185 [105] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
|
|
b3_from_b2:
|
|
b3_from_b5:
|
|
//SEG186 [105] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy
|
|
//SEG187 [105] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy
|
|
jmp b3
|
|
//SEG188 divr16u::@3
|
|
b3:
|
|
//SEG189 [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuz1=_inc_vbuz1
|
|
inc i
|
|
//SEG190 [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda i
|
|
cmp #$10
|
|
bne b1_from_b3
|
|
jmp breturn
|
|
//SEG191 divr16u::@return
|
|
breturn:
|
|
//SEG192 [108] return
|
|
rts
|
|
}
|
|
//SEG193 screen_fill
|
|
screen_fill: {
|
|
.const ch = $10
|
|
.label screen = $18
|
|
.label x = $1a
|
|
.label y = $17
|
|
//SEG194 [110] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1]
|
|
b1_from_screen_fill:
|
|
//SEG195 [110] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta y
|
|
//SEG196 [110] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1
|
|
lda #<SCREEN
|
|
sta screen
|
|
lda #>SCREEN
|
|
sta screen+1
|
|
jmp b1
|
|
//SEG197 [110] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1]
|
|
b1_from_b3:
|
|
//SEG198 [110] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy
|
|
//SEG199 [110] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy
|
|
jmp b1
|
|
//SEG200 screen_fill::@1
|
|
b1:
|
|
//SEG201 [111] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2]
|
|
b2_from_b1:
|
|
//SEG202 [111] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta x
|
|
//SEG203 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy
|
|
jmp b2
|
|
//SEG204 [111] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2]
|
|
b2_from_b2:
|
|
//SEG205 [111] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy
|
|
//SEG206 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy
|
|
jmp b2
|
|
//SEG207 screen_fill::@2
|
|
b2:
|
|
//SEG208 [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1
|
|
lda #ch
|
|
ldy #0
|
|
sta (screen),y
|
|
//SEG209 [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1
|
|
inc screen
|
|
bne !+
|
|
inc screen+1
|
|
!:
|
|
//SEG210 [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuz1=_inc_vbuz1
|
|
inc x
|
|
//SEG211 [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 -- vbuz1_neq_vbuc1_then_la1
|
|
lda x
|
|
cmp #$28
|
|
bne b2_from_b2
|
|
jmp b3
|
|
//SEG212 screen_fill::@3
|
|
b3:
|
|
//SEG213 [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1
|
|
inc y
|
|
//SEG214 [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda y
|
|
cmp #$19
|
|
bne b1_from_b3
|
|
jmp breturn
|
|
//SEG215 screen_fill::@return
|
|
breturn:
|
|
//SEG216 [118] return
|
|
rts
|
|
}
|
|
//SEG217 bitmap_clear
|
|
bitmap_clear: {
|
|
.label bitmap = $1c
|
|
.label x = $1e
|
|
.label y = $1b
|
|
.label _3 = $59
|
|
//SEG218 [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2
|
|
lda bitmap_plot_ylo
|
|
sta _3
|
|
lda bitmap_plot_yhi
|
|
sta _3+1
|
|
//SEG219 [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 -- pbuz1=pbuz2
|
|
lda _3
|
|
sta bitmap
|
|
lda _3+1
|
|
sta bitmap+1
|
|
//SEG220 [121] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1]
|
|
b1_from_bitmap_clear:
|
|
//SEG221 [121] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta y
|
|
//SEG222 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy
|
|
jmp b1
|
|
//SEG223 [121] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1]
|
|
b1_from_b3:
|
|
//SEG224 [121] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy
|
|
//SEG225 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy
|
|
jmp b1
|
|
//SEG226 bitmap_clear::@1
|
|
b1:
|
|
//SEG227 [122] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2]
|
|
b2_from_b1:
|
|
//SEG228 [122] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta x
|
|
//SEG229 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy
|
|
jmp b2
|
|
//SEG230 [122] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2]
|
|
b2_from_b2:
|
|
//SEG231 [122] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy
|
|
//SEG232 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy
|
|
jmp b2
|
|
//SEG233 bitmap_clear::@2
|
|
b2:
|
|
//SEG234 [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1
|
|
lda #0
|
|
ldy #0
|
|
sta (bitmap),y
|
|
//SEG235 [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1
|
|
inc bitmap
|
|
bne !+
|
|
inc bitmap+1
|
|
!:
|
|
//SEG236 [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1
|
|
inc x
|
|
//SEG237 [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1
|
|
lda x
|
|
cmp #$c8
|
|
bne b2_from_b2
|
|
jmp b3
|
|
//SEG238 bitmap_clear::@3
|
|
b3:
|
|
//SEG239 [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1
|
|
inc y
|
|
//SEG240 [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda y
|
|
cmp #$28
|
|
bne b1_from_b3
|
|
jmp breturn
|
|
//SEG241 bitmap_clear::@return
|
|
breturn:
|
|
//SEG242 [129] return
|
|
rts
|
|
}
|
|
//SEG243 bitmap_init
|
|
bitmap_init: {
|
|
.label _3 = $5b
|
|
.label _4 = $5c
|
|
.label _5 = $5d
|
|
.label _6 = $5e
|
|
.label _7 = $5f
|
|
.label bits = $1f
|
|
.label x = $20
|
|
.label y = $21
|
|
.label yoffs = $22
|
|
//SEG244 [131] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
|
b1_from_bitmap_init:
|
|
//SEG245 [131] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta x
|
|
//SEG246 [131] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1
|
|
lda #$80
|
|
sta bits
|
|
jmp b1
|
|
//SEG247 [131] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1]
|
|
b1_from_b2:
|
|
//SEG248 [131] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy
|
|
//SEG249 [131] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy
|
|
jmp b1
|
|
//SEG250 bitmap_init::@1
|
|
b1:
|
|
//SEG251 [132] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2
|
|
lda bits
|
|
ldy x
|
|
sta bitmap_plot_bit,y
|
|
//SEG252 [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz1_ror_1
|
|
lsr bits
|
|
//SEG253 [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuz1_neq_0_then_la1
|
|
lda bits
|
|
bne b10_from_b1
|
|
//SEG254 [135] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2]
|
|
b2_from_b1:
|
|
//SEG255 [135] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1
|
|
lda #$80
|
|
sta bits
|
|
jmp b2
|
|
//SEG256 bitmap_init::@2
|
|
b2:
|
|
//SEG257 [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1
|
|
inc x
|
|
//SEG258 [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1
|
|
lda x
|
|
bne b1_from_b2
|
|
//SEG259 [138] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3]
|
|
b3_from_b2:
|
|
//SEG260 [138] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1
|
|
lda #<BITMAP
|
|
sta yoffs
|
|
lda #>BITMAP
|
|
sta yoffs+1
|
|
//SEG261 [138] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta y
|
|
jmp b3
|
|
//SEG262 [138] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3]
|
|
b3_from_b4:
|
|
//SEG263 [138] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy
|
|
//SEG264 [138] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy
|
|
jmp b3
|
|
//SEG265 bitmap_init::@3
|
|
b3:
|
|
//SEG266 [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1
|
|
lda #7
|
|
and y
|
|
sta _3
|
|
//SEG267 [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2
|
|
lda yoffs
|
|
sta _4
|
|
//SEG268 [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuz1=vbuz2_bor_vbuz3
|
|
lda _3
|
|
ora _4
|
|
sta _5
|
|
//SEG269 [142] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuz1=vbuz2
|
|
lda _5
|
|
ldy y
|
|
sta bitmap_plot_ylo,y
|
|
//SEG270 [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2
|
|
lda yoffs+1
|
|
sta _6
|
|
//SEG271 [144] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuz1=vbuz2
|
|
lda _6
|
|
ldy y
|
|
sta bitmap_plot_yhi,y
|
|
//SEG272 [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuz2_band_vbuc1
|
|
lda #7
|
|
and y
|
|
sta _7
|
|
//SEG273 [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1
|
|
lda _7
|
|
cmp #7
|
|
bne b4_from_b3
|
|
jmp b7
|
|
//SEG274 bitmap_init::@7
|
|
b7:
|
|
//SEG275 [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1
|
|
clc
|
|
lda yoffs
|
|
adc #<$28*8
|
|
sta yoffs
|
|
lda yoffs+1
|
|
adc #>$28*8
|
|
sta yoffs+1
|
|
//SEG276 [148] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4]
|
|
b4_from_b3:
|
|
b4_from_b7:
|
|
//SEG277 [148] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy
|
|
jmp b4
|
|
//SEG278 bitmap_init::@4
|
|
b4:
|
|
//SEG279 [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1
|
|
inc y
|
|
//SEG280 [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1
|
|
lda y
|
|
bne b3_from_b4
|
|
jmp breturn
|
|
//SEG281 bitmap_init::@return
|
|
breturn:
|
|
//SEG282 [151] return
|
|
rts
|
|
//SEG283 [152] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10]
|
|
b10_from_b1:
|
|
jmp b10
|
|
//SEG284 bitmap_init::@10
|
|
b10:
|
|
//SEG285 [135] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2]
|
|
b2_from_b10:
|
|
//SEG286 [135] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy
|
|
jmp b2
|
|
}
|
|
x_start: .word $a, $14, $1e, $1e
|
|
y_start: .byte $a, $a, $a, $14
|
|
x_end: .word $14, $a, $14, $14
|
|
y_end: .byte $14, $14, $a, $14
|
|
x_cur: .fill 2*4, 0
|
|
y_cur: .fill 2*4, 0
|
|
x_add: .fill 4, 0
|
|
y_add: .fill 4, 0
|
|
delay: .fill 4, 0
|
|
bitmap_plot_ylo: .fill $100, 0
|
|
bitmap_plot_yhi: .fill $100, 0
|
|
bitmap_plot_bit: .fill $100, 0
|
|
|
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
|
Equivalence Class zp ZP_BYTE:92 [ bitmap_init::$4 ] has ALU potential.
|
|
Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
Statement [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
Statement [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
Statement [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$9 ] ( main:2 [ main::i#2 main::$9 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
|
|
Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 main::$9 bitmap_plot::x#0 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ main::$9 ]
|
|
Statement [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
Statement [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 ] ) always clobbers reg byte a
|
|
Statement [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) always clobbers reg byte a
|
|
Statement [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a
|
|
Statement [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a
|
|
Statement [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
|
|
Statement [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:36 [ point_init::point_idx#0 ]
|
|
Statement [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:48 [ point_init::point_idx1#0 ]
|
|
Statement [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ) always clobbers reg byte a
|
|
Statement [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ) always clobbers reg byte a
|
|
Statement [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
|
|
Statement [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
|
|
Statement [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ) always clobbers reg byte a
|
|
Statement [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ) always clobbers reg byte a
|
|
Statement [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ) always clobbers reg byte a
|
|
Statement [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
|
|
Statement [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ) always clobbers reg byte a
|
|
Statement [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a
|
|
Statement [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ) always clobbers reg byte a
|
|
Statement [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ) always clobbers reg byte a
|
|
Statement [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 [ point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx1#0 ] ) always clobbers reg byte a
|
|
Statement [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) always clobbers reg byte a
|
|
Statement [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
|
|
Statement [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
|
|
Statement [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a
|
|
Statement [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a
|
|
Statement [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ) always clobbers reg byte a
|
|
Statement [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ) always clobbers reg byte a
|
|
Statement [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$13 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$13 ] ) always clobbers reg byte a
|
|
Statement [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$14 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$14 ] ) always clobbers reg byte a
|
|
Statement [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
|
|
Statement [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ) always clobbers reg byte a
|
|
Statement [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a
|
|
Statement [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ) always clobbers reg byte a
|
|
Statement [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a
|
|
Statement [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a
|
|
Statement [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a
|
|
Statement [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:13 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
|
|
Statement [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a
|
|
Statement [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ) always clobbers reg byte a
|
|
Statement [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a
|
|
Statement [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a
|
|
Statement [80] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a
|
|
Statement [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a
|
|
Statement [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#1 ] ) always clobbers reg byte a
|
|
Statement [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#7 ] ) always clobbers reg byte a
|
|
Statement [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ) always clobbers reg byte a
|
|
Statement [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ) always clobbers reg byte a
|
|
Statement [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a
|
|
Statement [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::$7 ] ) always clobbers reg byte a
|
|
Statement [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a
|
|
Statement [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:22 [ divr16u::i#2 divr16u::i#1 ]
|
|
Statement [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a
|
|
Statement [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a
|
|
Statement [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a
|
|
Statement [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a
|
|
Statement [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ]
|
|
Statement [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a
|
|
Statement [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a
|
|
Statement [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ]
|
|
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ]
|
|
Statement [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a
|
|
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
|
Statement [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a
|
|
Statement [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a
|
|
Statement [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
Statement [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
Statement [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
Statement [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
Statement [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
Statement [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
Statement [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#2 main::$9 ] ( main:2 [ main::i#2 main::$9 ] ) always clobbers reg byte a
|
|
Statement [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) [ main::i#2 main::$9 bitmap_plot::x#0 ] ( main:2 [ main::i#2 main::$9 bitmap_plot::x#0 ] ) always clobbers reg byte a
|
|
Statement [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
|
Statement [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) [ bitmap_plot::x#0 bitmap_plot::$3 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 ] ) always clobbers reg byte a
|
|
Statement [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 [ bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::$3 bitmap_plot::$1 ] ) always clobbers reg byte a
|
|
Statement [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] ) always clobbers reg byte a
|
|
Statement [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 [ bitmap_plot::plotter#1 bitmap_plot::$2 ] ( main:2::bitmap_plot:24 [ main::i#2 bitmap_plot::plotter#1 bitmap_plot::$2 ] ) always clobbers reg byte a
|
|
Statement [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) [ ] ( main:2::bitmap_plot:24 [ main::i#2 ] ) always clobbers reg byte a reg byte y
|
|
Statement [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a
|
|
Statement [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 ] ) always clobbers reg byte a
|
|
Statement [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 ] ) always clobbers reg byte a
|
|
Statement [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::$4 point_init::$5 ] ) always clobbers reg byte a
|
|
Statement [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
|
|
Statement [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
|
|
Statement [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#6 ] ) always clobbers reg byte a
|
|
Statement [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 ] ) always clobbers reg byte a
|
|
Statement [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#6 ] ) always clobbers reg byte a
|
|
Statement [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
|
|
Statement [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$16 ] ) always clobbers reg byte a
|
|
Statement [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 [ point_init::point_idx#0 point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 ] ) always clobbers reg byte a
|
|
Statement [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$17 ] ) always clobbers reg byte a
|
|
Statement [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$18 ] ) always clobbers reg byte a
|
|
Statement [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 [ point_init::point_idx1#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx1#0 ] ) always clobbers reg byte a
|
|
Statement [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 [ ] ( main:2::point_init:20 [ main::i#2 ] ) always clobbers reg byte a
|
|
Statement [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
|
|
Statement [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
|
|
Statement [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::y_diff#0 divr16s::divisor#0 ] ) always clobbers reg byte a
|
|
Statement [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a
|
|
Statement [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 [ point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#3 ] ) always clobbers reg byte a
|
|
Statement [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_stepf#0 ] ) always clobbers reg byte a
|
|
Statement [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$13 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$13 ] ) always clobbers reg byte a
|
|
Statement [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::$14 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::$14 ] ) always clobbers reg byte a
|
|
Statement [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) always clobbers reg byte a
|
|
Statement [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_$2#0 ] ) always clobbers reg byte a
|
|
Statement [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#2 point_init::abs16s2_return#5 ] ) always clobbers reg byte a
|
|
Statement [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_$2#0 ] ) always clobbers reg byte a
|
|
Statement [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 point_init::abs16s1_return#5 ] ) always clobbers reg byte a
|
|
Statement [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 [ divr16s::divisor#0 divr16s::rem#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::rem#0 ] ) always clobbers reg byte a
|
|
Statement [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::remu#8 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#8 ] ) always clobbers reg byte a
|
|
Statement [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 [ divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 ] ) always clobbers reg byte a
|
|
Statement [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#5 ] ) always clobbers reg byte a
|
|
Statement [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3 [ divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::divisoru#3 divr16s::neg#4 divr16u::dividend#1 ] ) always clobbers reg byte a
|
|
Statement [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3 [ divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::remu#3 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 ] ) always clobbers reg byte a
|
|
Statement [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3 [ divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::dividend#1 divr16u::divisor#0 divr16u::rem#3 ] ) always clobbers reg byte a
|
|
Statement [80] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16s::neg#4 divr16u::return#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::return#2 ] ) always clobbers reg byte a
|
|
Statement [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2 [ divr16s::neg#4 divr16s::resultu#0 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16s::resultu#0 ] ) always clobbers reg byte a
|
|
Statement [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 [ divr16s::return#1 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#1 ] ) always clobbers reg byte a
|
|
Statement [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0 [ divr16s::return#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::return#7 ] ) always clobbers reg byte a
|
|
Statement [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 [ divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#3 divr16s::dividendu#3 divr16s::remu#3 divr16s::$11 ] ) always clobbers reg byte a
|
|
Statement [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::neg#2 divr16s::$11 ] ) always clobbers reg byte a
|
|
Statement [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11 [ divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::dividendu#3 divr16s::remu#3 divr16s::divisoru#4 divr16s::neg#2 ] ) always clobbers reg byte a
|
|
Statement [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 [ divr16s::divisor#0 divr16s::$7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::$7 ] ) always clobbers reg byte a
|
|
Statement [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7 [ divr16s::divisor#0 divr16s::remu#7 ] ( main:2::point_init:20::divr16s:58 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::divisor#0 divr16s::remu#7 ] ) always clobbers reg byte a
|
|
Statement [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) always clobbers reg byte a
|
|
Statement [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) always clobbers reg byte a
|
|
Statement [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::dividend#2 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) always clobbers reg byte a
|
|
Statement [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#5 divr16u::quotient#1 ] ) always clobbers reg byte a
|
|
Statement [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 [ divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::point_init:20::divr16s:58::divr16u:79 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 divr16s::neg#4 divr16u::divisor#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) always clobbers reg byte a
|
|
Statement [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ( main:2::screen_fill:17 [ screen_fill::y#4 screen_fill::screen#2 screen_fill::x#2 ] ) always clobbers reg byte a reg byte y
|
|
Statement [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) [ bitmap_clear::$3 ] ( main:2::bitmap_clear:15 [ bitmap_clear::$3 ] ) always clobbers reg byte a
|
|
Statement [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3 [ bitmap_clear::bitmap#5 ] ( main:2::bitmap_clear:15 [ bitmap_clear::bitmap#5 ] ) always clobbers reg byte a
|
|
Statement [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( main:2::bitmap_clear:15 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ) always clobbers reg byte a reg byte y
|
|
Statement [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$3 ] ) always clobbers reg byte a
|
|
Statement [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ) always clobbers reg byte a
|
|
Statement [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:2::bitmap_init:13 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ) always clobbers reg byte a
|
|
Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x ,
|
|
Potential registers zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] : zp ZP_WORD:3 ,
|
|
Potential registers zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] : zp ZP_WORD:5 ,
|
|
Potential registers zp ZP_WORD:7 [ divr16s::dividendu#3 ] : zp ZP_WORD:7 ,
|
|
Potential registers zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] : zp ZP_WORD:9 ,
|
|
Potential registers zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] : zp ZP_WORD:11 ,
|
|
Potential registers zp ZP_BYTE:13 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] : zp ZP_BYTE:13 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] : zp ZP_WORD:14 ,
|
|
Potential registers zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] : zp ZP_WORD:16 ,
|
|
Potential registers zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] : zp ZP_WORD:18 ,
|
|
Potential registers zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] : zp ZP_WORD:20 ,
|
|
Potential registers zp ZP_BYTE:22 [ divr16u::i#2 divr16u::i#1 ] : zp ZP_BYTE:22 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] : zp ZP_BYTE:23 , reg byte x ,
|
|
Potential registers zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] : zp ZP_WORD:24 ,
|
|
Potential registers zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ] : zp ZP_BYTE:26 , reg byte x ,
|
|
Potential registers zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] : zp ZP_BYTE:27 , reg byte x ,
|
|
Potential registers zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] : zp ZP_WORD:28 ,
|
|
Potential registers zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ] : zp ZP_BYTE:30 , reg byte x ,
|
|
Potential registers zp ZP_BYTE:31 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp ZP_BYTE:31 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:32 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp ZP_BYTE:32 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp ZP_BYTE:33 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp ZP_WORD:34 ,
|
|
Potential registers zp ZP_BYTE:36 [ point_init::point_idx#0 ] : zp ZP_BYTE:36 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:37 [ main::$9 ] : zp ZP_BYTE:37 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:38 [ bitmap_plot::x#0 ] : zp ZP_WORD:38 ,
|
|
Potential registers zp ZP_BYTE:40 [ bitmap_plot::y#0 ] : zp ZP_BYTE:40 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:41 [ bitmap_plot::$3 ] : zp ZP_WORD:41 ,
|
|
Potential registers zp ZP_WORD:43 [ bitmap_plot::$1 ] : zp ZP_WORD:43 ,
|
|
Potential registers zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] : zp ZP_WORD:45 ,
|
|
Potential registers zp ZP_BYTE:47 [ bitmap_plot::$2 ] : zp ZP_BYTE:47 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:48 [ point_init::point_idx1#0 ] : zp ZP_BYTE:48 , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:49 [ point_init::x_diff#1 ] : zp ZP_WORD:49 ,
|
|
Potential registers zp ZP_WORD:51 [ point_init::$4 ] : zp ZP_WORD:51 ,
|
|
Potential registers zp ZP_WORD:53 [ point_init::$5 ] : zp ZP_WORD:53 ,
|
|
Potential registers zp ZP_WORD:55 [ point_init::y_diff#0 ] : zp ZP_WORD:55 ,
|
|
Potential registers zp ZP_WORD:57 [ point_init::$16 ] : zp ZP_WORD:57 ,
|
|
Potential registers zp ZP_WORD:59 [ point_init::$17 ] : zp ZP_WORD:59 ,
|
|
Potential registers zp ZP_WORD:61 [ point_init::$18 ] : zp ZP_WORD:61 ,
|
|
Potential registers zp ZP_WORD:63 [ divr16s::divisor#0 ] : zp ZP_WORD:63 ,
|
|
Potential registers zp ZP_WORD:65 [ divr16s::rem#0 ] : zp ZP_WORD:65 ,
|
|
Potential registers zp ZP_WORD:67 [ divr16s::return#3 ] : zp ZP_WORD:67 ,
|
|
Potential registers zp ZP_WORD:69 [ point_init::x_stepf#0 ] : zp ZP_WORD:69 ,
|
|
Potential registers zp ZP_BYTE:71 [ point_init::$13 ] : zp ZP_BYTE:71 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:72 [ point_init::$14 ] : zp ZP_BYTE:72 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] : zp ZP_WORD:73 ,
|
|
Potential registers zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] : zp ZP_WORD:75 ,
|
|
Potential registers zp ZP_WORD:77 [ divr16u::divisor#0 ] : zp ZP_WORD:77 ,
|
|
Potential registers zp ZP_WORD:79 [ divr16u::return#2 ] : zp ZP_WORD:79 ,
|
|
Potential registers zp ZP_WORD:81 [ divr16s::resultu#0 ] : zp ZP_WORD:81 ,
|
|
Potential registers zp ZP_WORD:83 [ divr16s::$11 ] : zp ZP_WORD:83 ,
|
|
Potential registers zp ZP_WORD:85 [ divr16s::$7 ] : zp ZP_WORD:85 ,
|
|
Potential registers zp ZP_BYTE:87 [ divr16u::$1 ] : zp ZP_BYTE:87 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:88 [ divr16u::$2 ] : zp ZP_BYTE:88 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_WORD:89 [ bitmap_clear::$3 ] : zp ZP_WORD:89 ,
|
|
Potential registers zp ZP_BYTE:91 [ bitmap_init::$3 ] : zp ZP_BYTE:91 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:92 [ bitmap_init::$4 ] : zp ZP_BYTE:92 , reg byte a , reg byte x , reg byte y , reg byte alu ,
|
|
Potential registers zp ZP_BYTE:93 [ bitmap_init::$5 ] : zp ZP_BYTE:93 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:94 [ bitmap_init::$6 ] : zp ZP_BYTE:94 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp ZP_BYTE:95 [ bitmap_init::$7 ] : zp ZP_BYTE:95 , reg byte a , reg byte x , reg byte y ,
|
|
|
|
REGISTER UPLIFT SCOPES
|
|
Uplift Scope [divr16u] 887.75: zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] 338.75: zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] 202: zp ZP_BYTE:87 [ divr16u::$1 ] 202: zp ZP_BYTE:88 [ divr16u::$2 ] 167.04: zp ZP_BYTE:22 [ divr16u::i#2 divr16u::i#1 ] 69.82: zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] 11.33: zp ZP_WORD:77 [ divr16u::divisor#0 ] 4: zp ZP_WORD:79 [ divr16u::return#2 ]
|
|
Uplift Scope [bitmap_clear] 227.6: zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 218.83: zp ZP_BYTE:30 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 20.17: zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 2: zp ZP_WORD:89 [ bitmap_clear::$3 ]
|
|
Uplift Scope [screen_fill] 221.6: zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] 218.83: zp ZP_BYTE:26 [ screen_fill::x#2 screen_fill::x#1 ] 20.17: zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ]
|
|
Uplift Scope [bitmap_init] 39.11: zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 34.83: zp ZP_BYTE:31 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 22.5: zp ZP_BYTE:33 [ bitmap_init::y#2 bitmap_init::y#1 ] 22: zp ZP_BYTE:32 [ bitmap_init::x#2 bitmap_init::x#1 ] 22: zp ZP_BYTE:92 [ bitmap_init::$4 ] 22: zp ZP_BYTE:93 [ bitmap_init::$5 ] 22: zp ZP_BYTE:94 [ bitmap_init::$6 ] 22: zp ZP_BYTE:95 [ bitmap_init::$7 ] 11: zp ZP_BYTE:91 [ bitmap_init::$3 ]
|
|
Uplift Scope [point_init] 14: zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] 9: zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] 4: zp ZP_WORD:53 [ point_init::$5 ] 4: zp ZP_WORD:57 [ point_init::$16 ] 4: zp ZP_WORD:59 [ point_init::$17 ] 4: zp ZP_WORD:61 [ point_init::$18 ] 4: zp ZP_WORD:69 [ point_init::x_stepf#0 ] 4: zp ZP_BYTE:71 [ point_init::$13 ] 2: zp ZP_WORD:51 [ point_init::$4 ] 2: zp ZP_BYTE:72 [ point_init::$14 ] 2: zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] 2: zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] 0.72: zp ZP_BYTE:36 [ point_init::point_idx#0 ] 0.56: zp ZP_WORD:49 [ point_init::x_diff#1 ] 0.5: zp ZP_WORD:55 [ point_init::y_diff#0 ] 0.38: zp ZP_BYTE:48 [ point_init::point_idx1#0 ]
|
|
Uplift Scope [divr16s] 11: zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] 10: zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] 8.67: zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] 4: zp ZP_WORD:67 [ divr16s::return#3 ] 3.86: zp ZP_BYTE:13 [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] 2: zp ZP_WORD:65 [ divr16s::rem#0 ] 2: zp ZP_WORD:85 [ divr16s::$7 ] 1: zp ZP_WORD:81 [ divr16s::resultu#0 ] 1: zp ZP_WORD:83 [ divr16s::$11 ] 0.67: zp ZP_WORD:63 [ divr16s::divisor#0 ] 0.29: zp ZP_WORD:7 [ divr16s::dividendu#3 ]
|
|
Uplift Scope [main] 24.36: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 11: zp ZP_BYTE:37 [ main::$9 ]
|
|
Uplift Scope [bitmap_plot] 15: zp ZP_BYTE:40 [ bitmap_plot::y#0 ] 4: zp ZP_WORD:43 [ bitmap_plot::$1 ] 4: zp ZP_BYTE:47 [ bitmap_plot::$2 ] 3: zp ZP_WORD:38 [ bitmap_plot::x#0 ] 3: zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] 1: zp ZP_WORD:41 [ bitmap_plot::$3 ]
|
|
Uplift Scope []
|
|
|
|
Uplifting [divr16u] best 29551 combination zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] zp ZP_WORD:77 [ divr16u::divisor#0 ] zp ZP_WORD:79 [ divr16u::return#2 ]
|
|
Uplifting [bitmap_clear] best 28651 combination zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp ZP_WORD:89 [ bitmap_clear::$3 ]
|
|
Uplifting [screen_fill] best 27751 combination zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] reg byte x [ screen_fill::x#2 screen_fill::x#1 ] zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ]
|
|
Uplifting [bitmap_init] best 27311 combination zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte a [ bitmap_init::$4 ] zp ZP_BYTE:93 [ bitmap_init::$5 ] zp ZP_BYTE:94 [ bitmap_init::$6 ] zp ZP_BYTE:95 [ bitmap_init::$7 ] zp ZP_BYTE:91 [ bitmap_init::$3 ]
|
|
Limited combination testing to 100 combinations of 61440 possible.
|
|
Uplifting [point_init] best 27299 combination zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] zp ZP_WORD:53 [ point_init::$5 ] zp ZP_WORD:57 [ point_init::$16 ] zp ZP_WORD:59 [ point_init::$17 ] zp ZP_WORD:61 [ point_init::$18 ] zp ZP_WORD:69 [ point_init::x_stepf#0 ] reg byte a [ point_init::$13 ] zp ZP_WORD:51 [ point_init::$4 ] reg byte a [ point_init::$14 ] zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] zp ZP_BYTE:36 [ point_init::point_idx#0 ] zp ZP_WORD:49 [ point_init::x_diff#1 ] zp ZP_WORD:55 [ point_init::y_diff#0 ] zp ZP_BYTE:48 [ point_init::point_idx1#0 ]
|
|
Limited combination testing to 100 combinations of 144 possible.
|
|
Uplifting [divr16s] best 27288 combination zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] zp ZP_WORD:67 [ divr16s::return#3 ] reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ] zp ZP_WORD:65 [ divr16s::rem#0 ] zp ZP_WORD:85 [ divr16s::$7 ] zp ZP_WORD:81 [ divr16s::resultu#0 ] zp ZP_WORD:83 [ divr16s::$11 ] zp ZP_WORD:63 [ divr16s::divisor#0 ] zp ZP_WORD:7 [ divr16s::dividendu#3 ]
|
|
Uplifting [main] best 27248 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ] reg byte x [ main::$9 ]
|
|
Uplifting [bitmap_plot] best 27211 combination reg byte y [ bitmap_plot::y#0 ] zp ZP_WORD:43 [ bitmap_plot::$1 ] reg byte a [ bitmap_plot::$2 ] zp ZP_WORD:38 [ bitmap_plot::x#0 ] zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] zp ZP_WORD:41 [ bitmap_plot::$3 ]
|
|
Uplifting [] best 27211 combination
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ main::i#2 main::i#1 ]
|
|
Uplifting [main] best 27211 combination zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:93 [ bitmap_init::$5 ]
|
|
Uplifting [bitmap_init] best 27151 combination reg byte a [ bitmap_init::$5 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:94 [ bitmap_init::$6 ]
|
|
Uplifting [bitmap_init] best 27091 combination reg byte a [ bitmap_init::$6 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:95 [ bitmap_init::$7 ]
|
|
Uplifting [bitmap_init] best 27031 combination reg byte a [ bitmap_init::$7 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ]
|
|
Uplifting [screen_fill] best 27031 combination zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
|
|
Uplifting [bitmap_clear] best 27031 combination zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:91 [ bitmap_init::$3 ]
|
|
Uplifting [bitmap_init] best 27031 combination zp ZP_BYTE:91 [ bitmap_init::$3 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:36 [ point_init::point_idx#0 ]
|
|
Uplifting [point_init] best 27031 combination zp ZP_BYTE:36 [ point_init::point_idx#0 ]
|
|
Attempting to uplift remaining variables inzp ZP_BYTE:48 [ point_init::point_idx1#0 ]
|
|
Uplifting [point_init] best 27031 combination zp ZP_BYTE:48 [ point_init::point_idx1#0 ]
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 ] ] with [ zp ZP_WORD:81 [ divr16s::resultu#0 ] ] - score: 2
|
|
Coalescing zero page register with common assignment [ zp ZP_BYTE:2 [ main::i#2 main::i#1 ] ] with [ zp ZP_BYTE:36 [ point_init::point_idx#0 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 ] ] with [ zp ZP_WORD:75 [ point_init::abs16s1_$2#0 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 ] ] with [ zp ZP_WORD:73 [ point_init::abs16s2_$2#0 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:7 [ divr16s::dividendu#3 ] ] with [ zp ZP_WORD:18 [ divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 ] ] with [ zp ZP_WORD:16 [ divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp ZP_WORD:65 [ divr16s::rem#0 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 ] ] with [ zp ZP_WORD:85 [ divr16s::$7 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 ] ] with [ zp ZP_WORD:63 [ divr16s::divisor#0 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 ] ] with [ zp ZP_WORD:77 [ divr16u::divisor#0 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 ] ] with [ zp ZP_WORD:83 [ divr16s::$11 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 ] ] with [ zp ZP_WORD:67 [ divr16s::return#3 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] ] with [ zp ZP_WORD:79 [ divr16u::return#2 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp ZP_WORD:89 [ bitmap_clear::$3 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:41 [ bitmap_plot::$3 ] ] with [ zp ZP_WORD:45 [ bitmap_plot::plotter#1 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:51 [ point_init::$4 ] ] with [ zp ZP_WORD:55 [ point_init::y_diff#0 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:59 [ point_init::$17 ] ] with [ zp ZP_WORD:61 [ point_init::$18 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 ] ] with [ zp ZP_WORD:51 [ point_init::$4 point_init::y_diff#0 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:11 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 ] ] with [ zp ZP_WORD:49 [ point_init::x_diff#1 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 ] ] with [ zp ZP_WORD:20 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] - score: 1
|
|
Coalescing zero page register with common assignment [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 ] ] with [ zp ZP_WORD:69 [ point_init::x_stepf#0 ] ] - score: 1
|
|
Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 ] ] with [ zp ZP_BYTE:23 [ screen_fill::y#4 screen_fill::y#1 ] ]
|
|
Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 ] ] with [ zp ZP_BYTE:27 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ]
|
|
Coalescing zero page register [ zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp ZP_BYTE:91 [ bitmap_init::$3 ] ]
|
|
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 ] ] with [ zp ZP_WORD:7 [ divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ]
|
|
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 ] ] with [ zp ZP_WORD:24 [ screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ]
|
|
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 ] ] with [ zp ZP_WORD:28 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ]
|
|
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 ] ] with [ zp ZP_WORD:34 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ]
|
|
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] with [ zp ZP_WORD:38 [ bitmap_plot::x#0 ] ]
|
|
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 ] ] with [ zp ZP_WORD:53 [ point_init::$5 ] ]
|
|
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$5 ] ] with [ zp ZP_WORD:57 [ point_init::$16 ] ]
|
|
Coalescing zero page register [ zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$5 point_init::$16 ] ] with [ zp ZP_WORD:59 [ point_init::$17 point_init::$18 ] ]
|
|
Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 ] ] with [ zp ZP_WORD:14 [ divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 ] ]
|
|
Coalescing zero page register [ zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 ] ] with [ zp ZP_WORD:41 [ bitmap_plot::$3 bitmap_plot::plotter#1 ] ]
|
|
Coalescing zero page register [ zp ZP_WORD:9 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 point_init::$4 point_init::y_diff#0 ] ] with [ zp ZP_WORD:43 [ bitmap_plot::$1 ] ]
|
|
Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 point_init::$4 point_init::y_diff#0 bitmap_plot::$1 ]
|
|
Allocated (was zp ZP_WORD:11) zp ZP_WORD:9 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 point_init::x_diff#1 ]
|
|
Allocated (was zp ZP_BYTE:48) zp ZP_BYTE:11 [ point_init::point_idx1#0 ]
|
|
|
|
ASSEMBLER BEFORE OPTIMIZATION
|
|
//SEG0 Basic Upstart
|
|
.pc = $801 "Basic"
|
|
:BasicUpstart(main)
|
|
.pc = $80d "Program"
|
|
//SEG1 Global Constants & labels
|
|
.label PROCPORT_DDR = 0
|
|
.const PROCPORT_DDR_MEMORY_MASK = 7
|
|
.label PROCPORT = 1
|
|
.const PROCPORT_RAM_IO = $35
|
|
.label RASTER = $d012
|
|
.label BORDERCOL = $d020
|
|
.label D011 = $d011
|
|
.const VIC_BMM = $20
|
|
.const VIC_DEN = $10
|
|
.const VIC_RSEL = 8
|
|
.label D018 = $d018
|
|
.label CIA2_PORT_A = $dd00
|
|
.label CIA2_PORT_A_DDR = $dd02
|
|
.label BITMAP = $a000
|
|
.label SCREEN = $8800
|
|
.const DELAY = 8
|
|
//SEG2 @begin
|
|
bbegin:
|
|
//SEG3 [1] phi from @begin to @18 [phi:@begin->@18]
|
|
b18_from_bbegin:
|
|
jmp b18
|
|
//SEG4 @18
|
|
b18:
|
|
//SEG5 [2] call main
|
|
jsr main
|
|
//SEG6 [3] phi from @18 to @end [phi:@18->@end]
|
|
bend_from_b18:
|
|
jmp bend
|
|
//SEG7 @end
|
|
bend:
|
|
//SEG8 main
|
|
main: {
|
|
.const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6
|
|
.const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f
|
|
.label i = 2
|
|
//SEG9 asm { sei }
|
|
sei
|
|
//SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_DDR_MEMORY_MASK
|
|
sta PROCPORT_DDR
|
|
//SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_IO
|
|
sta PROCPORT
|
|
//SEG12 [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2
|
|
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
|
|
sta D011
|
|
jmp vicSelectGfxBank1
|
|
//SEG13 main::vicSelectGfxBank1
|
|
vicSelectGfxBank1:
|
|
//SEG14 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2
|
|
lda #3
|
|
sta CIA2_PORT_A_DDR
|
|
//SEG15 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001]
|
|
vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1:
|
|
jmp vicSelectGfxBank1_toDd001
|
|
//SEG16 main::vicSelectGfxBank1_toDd001
|
|
vicSelectGfxBank1_toDd001:
|
|
jmp vicSelectGfxBank1_b1
|
|
//SEG17 main::vicSelectGfxBank1_@1
|
|
vicSelectGfxBank1_b1:
|
|
//SEG18 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2
|
|
lda #vicSelectGfxBank1_toDd001_return
|
|
sta CIA2_PORT_A
|
|
//SEG19 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181]
|
|
toD0181_from_vicSelectGfxBank1_b1:
|
|
jmp toD0181
|
|
//SEG20 main::toD0181
|
|
toD0181:
|
|
jmp b16
|
|
//SEG21 main::@16
|
|
b16:
|
|
//SEG22 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2
|
|
lda #toD0181_return
|
|
sta D018
|
|
//SEG23 [13] call bitmap_init
|
|
//SEG24 [130] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init]
|
|
bitmap_init_from_b16:
|
|
jsr bitmap_init
|
|
//SEG25 [14] phi from main::@16 to main::@17 [phi:main::@16->main::@17]
|
|
b17_from_b16:
|
|
jmp b17
|
|
//SEG26 main::@17
|
|
b17:
|
|
//SEG27 [15] call bitmap_clear
|
|
jsr bitmap_clear
|
|
//SEG28 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18]
|
|
b18_from_b17:
|
|
jmp b18
|
|
//SEG29 main::@18
|
|
b18:
|
|
//SEG30 [17] call screen_fill
|
|
//SEG31 [109] phi from main::@18 to screen_fill [phi:main::@18->screen_fill]
|
|
screen_fill_from_b18:
|
|
jsr screen_fill
|
|
//SEG32 [18] phi from main::@18 to main::@1 [phi:main::@18->main::@1]
|
|
b1_from_b18:
|
|
//SEG33 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i
|
|
jmp b1
|
|
//SEG34 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1]
|
|
b1_from_b21:
|
|
//SEG35 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy
|
|
jmp b1
|
|
//SEG36 main::@1
|
|
b1:
|
|
//SEG37 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2
|
|
// (byte) point_init::point_idx#0 = (byte) main::i#2 // register copy zp ZP_BYTE:2
|
|
//SEG38 [20] call point_init
|
|
jsr point_init
|
|
jmp b20
|
|
//SEG39 main::@20
|
|
b20:
|
|
//SEG40 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_ror_1
|
|
lda i
|
|
lsr
|
|
tax
|
|
//SEG41 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2
|
|
ldy i
|
|
lda x_start,y
|
|
sta bitmap_plot.x
|
|
lda x_start+1,y
|
|
sta bitmap_plot.x+1
|
|
//SEG42 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx
|
|
ldy y_start,x
|
|
//SEG43 [24] call bitmap_plot
|
|
jsr bitmap_plot
|
|
jmp b21
|
|
//SEG44 main::@21
|
|
b21:
|
|
//SEG45 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2
|
|
lda i
|
|
clc
|
|
adc #2
|
|
sta i
|
|
//SEG46 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda i
|
|
cmp #8
|
|
bne b1_from_b21
|
|
jmp b5
|
|
//SEG47 main::@5
|
|
b5:
|
|
//SEG48 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1
|
|
lda RASTER
|
|
cmp #$ff
|
|
bne b5
|
|
jmp b7
|
|
//SEG49 main::@7
|
|
b7:
|
|
//SEG50 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1
|
|
inc BORDERCOL
|
|
jmp b5
|
|
}
|
|
//SEG51 bitmap_plot
|
|
bitmap_plot: {
|
|
.label _1 = 7
|
|
.label x = 3
|
|
.label plotter = 5
|
|
.label _3 = 5
|
|
//SEG52 [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy
|
|
lda bitmap_plot_yhi,y
|
|
sta _3+1
|
|
lda bitmap_plot_ylo,y
|
|
sta _3
|
|
//SEG53 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1
|
|
lda x
|
|
and #<$fff8
|
|
sta _1
|
|
lda x+1
|
|
and #>$fff8
|
|
sta _1+1
|
|
//SEG54 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2
|
|
lda plotter
|
|
clc
|
|
adc _1
|
|
sta plotter
|
|
lda plotter+1
|
|
adc _1+1
|
|
sta plotter+1
|
|
//SEG55 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1
|
|
lda x
|
|
//SEG56 [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa
|
|
tay
|
|
lda bitmap_plot_bit,y
|
|
ldy #0
|
|
ora (plotter),y
|
|
ldy #0
|
|
sta (plotter),y
|
|
jmp breturn
|
|
//SEG57 bitmap_plot::@return
|
|
breturn:
|
|
//SEG58 [34] return
|
|
rts
|
|
}
|
|
//SEG59 point_init
|
|
point_init: {
|
|
.label _4 = 7
|
|
.label _5 = 3
|
|
.label _16 = 3
|
|
.label _17 = 3
|
|
.label _18 = 3
|
|
.label point_idx = 2
|
|
.label point_idx1 = $b
|
|
.label y_diff = 7
|
|
.label abs16s1__2 = 3
|
|
.label abs16s1_return = 3
|
|
.label abs16s2__2 = 5
|
|
.label abs16s2_return = 5
|
|
.label x_stepf = 5
|
|
.label x_diff = 9
|
|
//SEG60 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1
|
|
lda point_idx
|
|
lsr
|
|
sta point_idx1
|
|
//SEG61 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2
|
|
ldy point_idx
|
|
sec
|
|
lda x_end,y
|
|
sbc x_start,y
|
|
sta x_diff
|
|
lda x_end+1,y
|
|
sbc x_start+1,y
|
|
sta x_diff+1
|
|
//SEG62 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2
|
|
ldy point_idx1
|
|
lda y_end,y
|
|
sta _4
|
|
lda #0
|
|
sta _4+1
|
|
//SEG63 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2
|
|
ldy point_idx1
|
|
lda y_start,y
|
|
sta _5
|
|
lda #0
|
|
sta _5+1
|
|
//SEG64 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz1_minus_vwsz2
|
|
lda y_diff
|
|
sec
|
|
sbc _5
|
|
sta y_diff
|
|
lda y_diff+1
|
|
sbc _5+1
|
|
sta y_diff+1
|
|
jmp abs16s1
|
|
//SEG65 point_init::abs16s1
|
|
abs16s1:
|
|
//SEG66 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1
|
|
lda x_diff+1
|
|
bmi abs16s1_b1
|
|
jmp b12
|
|
//SEG67 point_init::@12
|
|
b12:
|
|
//SEG68 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2
|
|
lda x_diff
|
|
sta abs16s1_return
|
|
lda x_diff+1
|
|
sta abs16s1_return+1
|
|
//SEG69 [42] phi from point_init::@12 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return]
|
|
abs16s1_breturn_from_b12:
|
|
abs16s1_breturn_from_abs16s1_b1:
|
|
//SEG70 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy
|
|
jmp abs16s1_breturn
|
|
//SEG71 point_init::abs16s1_@return
|
|
abs16s1_breturn:
|
|
jmp abs16s2
|
|
//SEG72 point_init::abs16s2
|
|
abs16s2:
|
|
//SEG73 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1
|
|
lda y_diff+1
|
|
bmi abs16s2_b1
|
|
jmp b13
|
|
//SEG74 point_init::@13
|
|
b13:
|
|
//SEG75 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2
|
|
lda y_diff
|
|
sta abs16s2_return
|
|
lda y_diff+1
|
|
sta abs16s2_return+1
|
|
//SEG76 [45] phi from point_init::@13 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return]
|
|
abs16s2_breturn_from_b13:
|
|
abs16s2_breturn_from_abs16s2_b1:
|
|
//SEG77 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy
|
|
jmp abs16s2_breturn
|
|
//SEG78 point_init::abs16s2_@return
|
|
abs16s2_breturn:
|
|
jmp b10
|
|
//SEG79 point_init::@10
|
|
b10:
|
|
//SEG80 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1
|
|
lda abs16s1_return
|
|
cmp abs16s2_return
|
|
lda abs16s1_return+1
|
|
sbc abs16s2_return+1
|
|
bvc !+
|
|
eor #$80
|
|
!:
|
|
bpl b1
|
|
jmp b2
|
|
//SEG81 point_init::@2
|
|
b2:
|
|
//SEG82 [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4
|
|
ldy point_idx
|
|
lda x_start,y
|
|
sta _16
|
|
lda x_start+1,y
|
|
sta _16+1
|
|
asl _16
|
|
rol _16+1
|
|
asl _16
|
|
rol _16+1
|
|
asl _16
|
|
rol _16+1
|
|
asl _16
|
|
rol _16+1
|
|
//SEG83 [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2
|
|
ldy point_idx
|
|
lda _16
|
|
sta x_cur,y
|
|
lda _16+1
|
|
sta x_cur+1,y
|
|
//SEG84 [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2
|
|
ldy point_idx1
|
|
lda y_start,y
|
|
sta _17
|
|
lda #0
|
|
sta _17+1
|
|
//SEG85 [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4
|
|
asl _18
|
|
rol _18+1
|
|
asl _18
|
|
rol _18+1
|
|
asl _18
|
|
rol _18+1
|
|
asl _18
|
|
rol _18+1
|
|
//SEG86 [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2
|
|
ldy point_idx
|
|
lda _18
|
|
sta y_cur,y
|
|
lda _18+1
|
|
sta y_cur+1,y
|
|
//SEG87 [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
|
ldy point_idx1
|
|
lda #DELAY
|
|
sta delay,y
|
|
jmp breturn
|
|
//SEG88 point_init::@return
|
|
breturn:
|
|
//SEG89 [53] return
|
|
rts
|
|
//SEG90 point_init::@1
|
|
b1:
|
|
//SEG91 [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 -- vwsz1_lt_0_then_la1
|
|
lda x_diff+1
|
|
bmi b3
|
|
jmp b7
|
|
//SEG92 point_init::@7
|
|
b7:
|
|
//SEG93 [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbuc2
|
|
ldy point_idx
|
|
lda #$10
|
|
sta x_add,y
|
|
jmp b4
|
|
//SEG94 point_init::@4
|
|
b4:
|
|
//SEG95 [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1
|
|
// (signed word) divr16s::divisor#0 = (signed word) point_init::x_diff#1 // register copy zp ZP_WORD:9
|
|
//SEG96 [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0
|
|
// (signed word) divr16s::rem#0 = (signed word) point_init::y_diff#0 // register copy zp ZP_WORD:7
|
|
//SEG97 [58] call divr16s
|
|
//SEG98 [69] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s]
|
|
divr16s_from_b4:
|
|
jsr divr16s
|
|
//SEG99 [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
|
|
// (signed word) divr16s::return#3 = (signed word) divr16s::return#2 // register copy zp ZP_WORD:5
|
|
jmp b11
|
|
//SEG100 point_init::@11
|
|
b11:
|
|
//SEG101 [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3
|
|
// (signed word) point_init::x_stepf#0 = (signed word) divr16s::return#3 // register copy zp ZP_WORD:5
|
|
//SEG102 [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1
|
|
lda x_stepf+1
|
|
//SEG103 [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4
|
|
lsr
|
|
lsr
|
|
lsr
|
|
lsr
|
|
//SEG104 [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 -- pbsc1_derefidx_vbuz1=vbsaa
|
|
ldy point_idx1
|
|
sta y_add,y
|
|
jmp b2
|
|
//SEG105 point_init::@3
|
|
b3:
|
|
//SEG106 [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbsc2
|
|
ldy point_idx
|
|
lda #-$10
|
|
sta x_add,y
|
|
jmp b4
|
|
//SEG107 point_init::abs16s2_@1
|
|
abs16s2_b1:
|
|
//SEG108 [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2
|
|
sec
|
|
lda y_diff
|
|
eor #$ff
|
|
adc #0
|
|
sta abs16s2__2
|
|
lda y_diff+1
|
|
eor #$ff
|
|
adc #0
|
|
sta abs16s2__2+1
|
|
//SEG109 [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0
|
|
// (word~) point_init::abs16s2_return#5 = (word)(signed word) point_init::abs16s2_$2#0 // register copy zp ZP_WORD:5
|
|
jmp abs16s2_breturn_from_abs16s2_b1
|
|
//SEG110 point_init::abs16s1_@1
|
|
abs16s1_b1:
|
|
//SEG111 [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2
|
|
sec
|
|
lda x_diff
|
|
eor #$ff
|
|
adc #0
|
|
sta abs16s1__2
|
|
lda x_diff+1
|
|
eor #$ff
|
|
adc #0
|
|
sta abs16s1__2+1
|
|
//SEG112 [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0
|
|
// (word~) point_init::abs16s1_return#5 = (word)(signed word) point_init::abs16s1_$2#0 // register copy zp ZP_WORD:3
|
|
jmp abs16s1_breturn_from_abs16s1_b1
|
|
}
|
|
//SEG113 divr16s
|
|
divr16s: {
|
|
.const dividend = 0
|
|
.label _7 = 7
|
|
.label _11 = 9
|
|
.label resultu = 5
|
|
.label return = 5
|
|
.label divisor = 9
|
|
.label rem = 7
|
|
.label dividendu = 3
|
|
.label divisoru = 9
|
|
.label remu = 7
|
|
jmp b16
|
|
//SEG114 divr16s::@16
|
|
b16:
|
|
//SEG115 [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1
|
|
lda rem+1
|
|
bmi b1
|
|
jmp b17
|
|
//SEG116 divr16s::@17
|
|
b17:
|
|
//SEG117 [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0
|
|
// (word~) divr16s::remu#8 = (word)(signed word) divr16s::rem#0 // register copy zp ZP_WORD:7
|
|
//SEG118 [72] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2]
|
|
b2_from_b17:
|
|
//SEG119 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy
|
|
//SEG120 [72] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@17->divr16s::@2#1] -- vwuz1=vbuc1
|
|
lda #<dividend
|
|
sta dividendu
|
|
lda #>dividend
|
|
sta dividendu+1
|
|
//SEG121 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuyy=vbuc1
|
|
ldy #0
|
|
jmp b2
|
|
//SEG122 divr16s::@2
|
|
b2:
|
|
//SEG123 [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1
|
|
lda divisor+1
|
|
bmi b3
|
|
jmp b18
|
|
//SEG124 divr16s::@18
|
|
b18:
|
|
//SEG125 [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
|
|
// (word~) divr16s::divisoru#5 = (word)(signed word) divr16s::divisor#0 // register copy zp ZP_WORD:9
|
|
//SEG126 [75] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4]
|
|
b4_from_b18:
|
|
b4_from_b3:
|
|
//SEG127 [75] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy
|
|
//SEG128 [75] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy
|
|
jmp b4
|
|
//SEG129 divr16s::@4
|
|
b4:
|
|
//SEG130 [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3
|
|
// (word) divr16u::dividend#1 = (word) divr16s::dividendu#3 // register copy zp ZP_WORD:3
|
|
//SEG131 [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3
|
|
// (word) divr16u::divisor#0 = (word) divr16s::divisoru#3 // register copy zp ZP_WORD:9
|
|
//SEG132 [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3
|
|
// (word) divr16u::rem#3 = (word) divr16s::remu#3 // register copy zp ZP_WORD:7
|
|
//SEG133 [79] call divr16u
|
|
//SEG134 [92] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u]
|
|
divr16u_from_b4:
|
|
jsr divr16u
|
|
//SEG135 [80] (word) divr16u::return#2 ← (word) divr16u::return#0
|
|
// (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:5
|
|
jmp b15
|
|
//SEG136 divr16s::@15
|
|
b15:
|
|
//SEG137 [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2
|
|
// (word) divr16s::resultu#0 = (word) divr16u::return#2 // register copy zp ZP_WORD:5
|
|
//SEG138 [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuyy_eq_0_then_la1
|
|
cpy #0
|
|
beq b19
|
|
jmp b11
|
|
//SEG139 divr16s::@11
|
|
b11:
|
|
//SEG140 [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1
|
|
sec
|
|
lda return
|
|
eor #$ff
|
|
adc #0
|
|
sta return
|
|
lda return+1
|
|
eor #$ff
|
|
adc #0
|
|
sta return+1
|
|
//SEG141 [84] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return]
|
|
breturn_from_b11:
|
|
breturn_from_b19:
|
|
//SEG142 [84] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy
|
|
jmp breturn
|
|
//SEG143 divr16s::@return
|
|
breturn:
|
|
//SEG144 [85] return
|
|
rts
|
|
//SEG145 divr16s::@19
|
|
b19:
|
|
//SEG146 [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
|
|
// (signed word~) divr16s::return#7 = (signed word)(word) divr16s::resultu#0 // register copy zp ZP_WORD:5
|
|
jmp breturn_from_b19
|
|
//SEG147 divr16s::@3
|
|
b3:
|
|
//SEG148 [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1
|
|
sec
|
|
lda _11
|
|
eor #$ff
|
|
adc #0
|
|
sta _11
|
|
lda _11+1
|
|
eor #$ff
|
|
adc #0
|
|
sta _11+1
|
|
//SEG149 [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1
|
|
tya
|
|
eor #1
|
|
tay
|
|
//SEG150 [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11
|
|
// (word~) divr16s::divisoru#4 = (word)(signed word~) divr16s::$11 // register copy zp ZP_WORD:9
|
|
jmp b4_from_b3
|
|
//SEG151 divr16s::@1
|
|
b1:
|
|
//SEG152 [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1
|
|
sec
|
|
lda _7
|
|
eor #$ff
|
|
adc #0
|
|
sta _7
|
|
lda _7+1
|
|
eor #$ff
|
|
adc #0
|
|
sta _7+1
|
|
//SEG153 [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7
|
|
// (word~) divr16s::remu#7 = (word)(signed word~) divr16s::$7 // register copy zp ZP_WORD:7
|
|
//SEG154 [72] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2]
|
|
b2_from_b1:
|
|
//SEG155 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy
|
|
//SEG156 [72] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1
|
|
lda #<-dividend
|
|
sta dividendu
|
|
lda #>-dividend
|
|
sta dividendu+1
|
|
//SEG157 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1
|
|
ldy #1
|
|
jmp b2
|
|
}
|
|
//SEG158 divr16u
|
|
divr16u: {
|
|
.label rem = 7
|
|
.label dividend = 3
|
|
.label quotient = 5
|
|
.label return = 5
|
|
.label divisor = 9
|
|
//SEG159 [93] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
|
|
b1_from_divr16u:
|
|
//SEG160 [93] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
//SEG161 [93] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1
|
|
lda #<0
|
|
sta quotient
|
|
lda #>0
|
|
sta quotient+1
|
|
//SEG162 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy
|
|
//SEG163 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy
|
|
jmp b1
|
|
//SEG164 [93] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
|
|
b1_from_b3:
|
|
//SEG165 [93] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy
|
|
//SEG166 [93] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy
|
|
//SEG167 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy
|
|
//SEG168 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy
|
|
jmp b1
|
|
//SEG169 divr16u::@1
|
|
b1:
|
|
//SEG170 [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
|
|
asl rem
|
|
rol rem+1
|
|
//SEG171 [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1
|
|
lda dividend+1
|
|
//SEG172 [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1
|
|
and #$80
|
|
//SEG173 [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1
|
|
cmp #0
|
|
beq b2_from_b1
|
|
jmp b4
|
|
//SEG174 divr16u::@4
|
|
b4:
|
|
//SEG175 [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1
|
|
lda #1
|
|
ora rem
|
|
sta rem
|
|
//SEG176 [99] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
|
|
b2_from_b1:
|
|
b2_from_b4:
|
|
//SEG177 [99] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy
|
|
jmp b2
|
|
//SEG178 divr16u::@2
|
|
b2:
|
|
//SEG179 [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
|
|
asl dividend
|
|
rol dividend+1
|
|
//SEG180 [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
|
|
asl quotient
|
|
rol quotient+1
|
|
//SEG181 [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1
|
|
lda rem+1
|
|
cmp divisor+1
|
|
bcc b3_from_b2
|
|
bne !+
|
|
lda rem
|
|
cmp divisor
|
|
bcc b3_from_b2
|
|
!:
|
|
jmp b5
|
|
//SEG182 divr16u::@5
|
|
b5:
|
|
//SEG183 [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1
|
|
inc quotient
|
|
bne !+
|
|
inc quotient+1
|
|
!:
|
|
//SEG184 [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2
|
|
lda rem
|
|
sec
|
|
sbc divisor
|
|
sta rem
|
|
lda rem+1
|
|
sbc divisor+1
|
|
sta rem+1
|
|
//SEG185 [105] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
|
|
b3_from_b2:
|
|
b3_from_b5:
|
|
//SEG186 [105] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy
|
|
//SEG187 [105] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy
|
|
jmp b3
|
|
//SEG188 divr16u::@3
|
|
b3:
|
|
//SEG189 [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG190 [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #$10
|
|
bne b1_from_b3
|
|
jmp breturn
|
|
//SEG191 divr16u::@return
|
|
breturn:
|
|
//SEG192 [108] return
|
|
rts
|
|
}
|
|
//SEG193 screen_fill
|
|
screen_fill: {
|
|
.const ch = $10
|
|
.label screen = 3
|
|
.label y = 2
|
|
//SEG194 [110] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1]
|
|
b1_from_screen_fill:
|
|
//SEG195 [110] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta y
|
|
//SEG196 [110] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1
|
|
lda #<SCREEN
|
|
sta screen
|
|
lda #>SCREEN
|
|
sta screen+1
|
|
jmp b1
|
|
//SEG197 [110] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1]
|
|
b1_from_b3:
|
|
//SEG198 [110] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy
|
|
//SEG199 [110] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy
|
|
jmp b1
|
|
//SEG200 screen_fill::@1
|
|
b1:
|
|
//SEG201 [111] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2]
|
|
b2_from_b1:
|
|
//SEG202 [111] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
//SEG203 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy
|
|
jmp b2
|
|
//SEG204 [111] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2]
|
|
b2_from_b2:
|
|
//SEG205 [111] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy
|
|
//SEG206 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy
|
|
jmp b2
|
|
//SEG207 screen_fill::@2
|
|
b2:
|
|
//SEG208 [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1
|
|
lda #ch
|
|
ldy #0
|
|
sta (screen),y
|
|
//SEG209 [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1
|
|
inc screen
|
|
bne !+
|
|
inc screen+1
|
|
!:
|
|
//SEG210 [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG211 [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #$28
|
|
bne b2_from_b2
|
|
jmp b3
|
|
//SEG212 screen_fill::@3
|
|
b3:
|
|
//SEG213 [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1
|
|
inc y
|
|
//SEG214 [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda y
|
|
cmp #$19
|
|
bne b1_from_b3
|
|
jmp breturn
|
|
//SEG215 screen_fill::@return
|
|
breturn:
|
|
//SEG216 [118] return
|
|
rts
|
|
}
|
|
//SEG217 bitmap_clear
|
|
bitmap_clear: {
|
|
.label bitmap = 3
|
|
.label y = 2
|
|
.label _3 = 3
|
|
//SEG218 [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2
|
|
lda bitmap_plot_ylo
|
|
sta _3
|
|
lda bitmap_plot_yhi
|
|
sta _3+1
|
|
//SEG219 [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3
|
|
// (byte*~) bitmap_clear::bitmap#5 = (byte*)(word~) bitmap_clear::$3 // register copy zp ZP_WORD:3
|
|
//SEG220 [121] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1]
|
|
b1_from_bitmap_clear:
|
|
//SEG221 [121] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta y
|
|
//SEG222 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy
|
|
jmp b1
|
|
//SEG223 [121] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1]
|
|
b1_from_b3:
|
|
//SEG224 [121] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy
|
|
//SEG225 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy
|
|
jmp b1
|
|
//SEG226 bitmap_clear::@1
|
|
b1:
|
|
//SEG227 [122] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2]
|
|
b2_from_b1:
|
|
//SEG228 [122] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
//SEG229 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy
|
|
jmp b2
|
|
//SEG230 [122] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2]
|
|
b2_from_b2:
|
|
//SEG231 [122] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy
|
|
//SEG232 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy
|
|
jmp b2
|
|
//SEG233 bitmap_clear::@2
|
|
b2:
|
|
//SEG234 [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1
|
|
lda #0
|
|
ldy #0
|
|
sta (bitmap),y
|
|
//SEG235 [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1
|
|
inc bitmap
|
|
bne !+
|
|
inc bitmap+1
|
|
!:
|
|
//SEG236 [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG237 [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #$c8
|
|
bne b2_from_b2
|
|
jmp b3
|
|
//SEG238 bitmap_clear::@3
|
|
b3:
|
|
//SEG239 [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1
|
|
inc y
|
|
//SEG240 [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda y
|
|
cmp #$28
|
|
bne b1_from_b3
|
|
jmp breturn
|
|
//SEG241 bitmap_clear::@return
|
|
breturn:
|
|
//SEG242 [129] return
|
|
rts
|
|
}
|
|
//SEG243 bitmap_init
|
|
bitmap_init: {
|
|
.label _3 = 2
|
|
.label yoffs = 3
|
|
//SEG244 [131] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
|
b1_from_bitmap_init:
|
|
//SEG245 [131] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
//SEG246 [131] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1
|
|
lda #$80
|
|
jmp b1
|
|
//SEG247 [131] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1]
|
|
b1_from_b2:
|
|
//SEG248 [131] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy
|
|
//SEG249 [131] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy
|
|
jmp b1
|
|
//SEG250 bitmap_init::@1
|
|
b1:
|
|
//SEG251 [132] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa
|
|
sta bitmap_plot_bit,x
|
|
//SEG252 [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1
|
|
lsr
|
|
//SEG253 [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1
|
|
cmp #0
|
|
bne b10_from_b1
|
|
//SEG254 [135] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2]
|
|
b2_from_b1:
|
|
//SEG255 [135] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1
|
|
lda #$80
|
|
jmp b2
|
|
//SEG256 bitmap_init::@2
|
|
b2:
|
|
//SEG257 [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG258 [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1
|
|
cpx #0
|
|
bne b1_from_b2
|
|
//SEG259 [138] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3]
|
|
b3_from_b2:
|
|
//SEG260 [138] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1
|
|
lda #<BITMAP
|
|
sta yoffs
|
|
lda #>BITMAP
|
|
sta yoffs+1
|
|
//SEG261 [138] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1
|
|
ldx #0
|
|
jmp b3
|
|
//SEG262 [138] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3]
|
|
b3_from_b4:
|
|
//SEG263 [138] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy
|
|
//SEG264 [138] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy
|
|
jmp b3
|
|
//SEG265 bitmap_init::@3
|
|
b3:
|
|
//SEG266 [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1
|
|
txa
|
|
and #7
|
|
sta _3
|
|
//SEG267 [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1
|
|
lda yoffs
|
|
//SEG268 [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa
|
|
ora _3
|
|
//SEG269 [142] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa
|
|
sta bitmap_plot_ylo,x
|
|
//SEG270 [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1
|
|
lda yoffs+1
|
|
//SEG271 [144] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa
|
|
sta bitmap_plot_yhi,x
|
|
//SEG272 [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1
|
|
txa
|
|
and #7
|
|
//SEG273 [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1
|
|
cmp #7
|
|
bne b4_from_b3
|
|
jmp b7
|
|
//SEG274 bitmap_init::@7
|
|
b7:
|
|
//SEG275 [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1
|
|
clc
|
|
lda yoffs
|
|
adc #<$28*8
|
|
sta yoffs
|
|
lda yoffs+1
|
|
adc #>$28*8
|
|
sta yoffs+1
|
|
//SEG276 [148] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4]
|
|
b4_from_b3:
|
|
b4_from_b7:
|
|
//SEG277 [148] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy
|
|
jmp b4
|
|
//SEG278 bitmap_init::@4
|
|
b4:
|
|
//SEG279 [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG280 [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1
|
|
cpx #0
|
|
bne b3_from_b4
|
|
jmp breturn
|
|
//SEG281 bitmap_init::@return
|
|
breturn:
|
|
//SEG282 [151] return
|
|
rts
|
|
//SEG283 [152] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10]
|
|
b10_from_b1:
|
|
jmp b10
|
|
//SEG284 bitmap_init::@10
|
|
b10:
|
|
//SEG285 [135] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2]
|
|
b2_from_b10:
|
|
//SEG286 [135] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy
|
|
jmp b2
|
|
}
|
|
x_start: .word $a, $14, $1e, $1e
|
|
y_start: .byte $a, $a, $a, $14
|
|
x_end: .word $14, $a, $14, $14
|
|
y_end: .byte $14, $14, $a, $14
|
|
x_cur: .fill 2*4, 0
|
|
y_cur: .fill 2*4, 0
|
|
x_add: .fill 4, 0
|
|
y_add: .fill 4, 0
|
|
delay: .fill 4, 0
|
|
bitmap_plot_ylo: .fill $100, 0
|
|
bitmap_plot_yhi: .fill $100, 0
|
|
bitmap_plot_bit: .fill $100, 0
|
|
|
|
ASSEMBLER OPTIMIZATIONS
|
|
Removing instruction jmp b18
|
|
Removing instruction jmp bend
|
|
Removing instruction jmp vicSelectGfxBank1
|
|
Removing instruction jmp vicSelectGfxBank1_toDd001
|
|
Removing instruction jmp vicSelectGfxBank1_b1
|
|
Removing instruction jmp toD0181
|
|
Removing instruction jmp b16
|
|
Removing instruction jmp b17
|
|
Removing instruction jmp b18
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b20
|
|
Removing instruction jmp b21
|
|
Removing instruction jmp b5
|
|
Removing instruction jmp b7
|
|
Removing instruction jmp breturn
|
|
Removing instruction jmp abs16s1
|
|
Removing instruction jmp b12
|
|
Removing instruction jmp abs16s1_breturn
|
|
Removing instruction jmp abs16s2
|
|
Removing instruction jmp b13
|
|
Removing instruction jmp abs16s2_breturn
|
|
Removing instruction jmp b10
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp breturn
|
|
Removing instruction jmp b7
|
|
Removing instruction jmp b4
|
|
Removing instruction jmp b11
|
|
Removing instruction jmp b16
|
|
Removing instruction jmp b17
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b18
|
|
Removing instruction jmp b4
|
|
Removing instruction jmp b15
|
|
Removing instruction jmp b11
|
|
Removing instruction jmp breturn
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b4
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b5
|
|
Removing instruction jmp b3
|
|
Removing instruction jmp breturn
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b3
|
|
Removing instruction jmp breturn
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b3
|
|
Removing instruction jmp breturn
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b3
|
|
Removing instruction jmp b7
|
|
Removing instruction jmp b4
|
|
Removing instruction jmp breturn
|
|
Removing instruction jmp b10
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Removing instruction lda i
|
|
Removing instruction ldy #0
|
|
Removing instruction ldy point_idx1
|
|
Removing instruction ldy point_idx
|
|
Replacing instruction lda #<0 with TXA
|
|
Removing instruction lda #>0
|
|
Replacing instruction ldy #0 with TAY
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
Replacing label b1_from_b21 with b1
|
|
Replacing label abs16s2_breturn_from_abs16s2_b1 with b10
|
|
Replacing label abs16s1_breturn_from_abs16s1_b1 with abs16s2
|
|
Replacing label breturn_from_b19 with breturn
|
|
Replacing label b4_from_b3 with b4
|
|
Replacing label b2_from_b1 with b2
|
|
Replacing label b3_from_b2 with b3
|
|
Replacing label b3_from_b2 with b3
|
|
Replacing label b1_from_b3 with b1
|
|
Replacing label b2_from_b2 with b2
|
|
Replacing label b1_from_b3 with b1
|
|
Replacing label b2_from_b2 with b2
|
|
Replacing label b1_from_b3 with b1
|
|
Replacing label b10_from_b1 with b10
|
|
Replacing label b1_from_b2 with b1
|
|
Replacing label b4_from_b3 with b4
|
|
Replacing label b3_from_b4 with b3
|
|
Removing instruction bbegin:
|
|
Removing instruction b18_from_bbegin:
|
|
Removing instruction bend_from_b18:
|
|
Removing instruction vicSelectGfxBank1_toDd001_from_vicSelectGfxBank1:
|
|
Removing instruction vicSelectGfxBank1_toDd001:
|
|
Removing instruction toD0181_from_vicSelectGfxBank1_b1:
|
|
Removing instruction toD0181:
|
|
Removing instruction b17_from_b16:
|
|
Removing instruction b18_from_b17:
|
|
Removing instruction screen_fill_from_b18:
|
|
Removing instruction b1_from_b21:
|
|
Removing instruction abs16s1_breturn_from_b12:
|
|
Removing instruction abs16s1_breturn_from_abs16s1_b1:
|
|
Removing instruction abs16s1_breturn:
|
|
Removing instruction abs16s2_breturn_from_b13:
|
|
Removing instruction abs16s2_breturn_from_abs16s2_b1:
|
|
Removing instruction abs16s2_breturn:
|
|
Removing instruction b4_from_b18:
|
|
Removing instruction b4_from_b3:
|
|
Removing instruction breturn_from_b11:
|
|
Removing instruction breturn_from_b19:
|
|
Removing instruction b1_from_b3:
|
|
Removing instruction b2_from_b1:
|
|
Removing instruction b2_from_b4:
|
|
Removing instruction b3_from_b2:
|
|
Removing instruction b3_from_b5:
|
|
Removing instruction b1_from_b3:
|
|
Removing instruction b2_from_b1:
|
|
Removing instruction b2_from_b2:
|
|
Removing instruction b1_from_b3:
|
|
Removing instruction b2_from_b1:
|
|
Removing instruction b2_from_b2:
|
|
Removing instruction b1_from_b2:
|
|
Removing instruction b3_from_b4:
|
|
Removing instruction b4_from_b3:
|
|
Removing instruction b4_from_b7:
|
|
Removing instruction b10_from_b1:
|
|
Removing instruction b2_from_b10:
|
|
Succesful ASM optimization Pass5RedundantLabelElimination
|
|
Removing instruction b18:
|
|
Removing instruction bend:
|
|
Removing instruction vicSelectGfxBank1:
|
|
Removing instruction vicSelectGfxBank1_b1:
|
|
Removing instruction b16:
|
|
Removing instruction bitmap_init_from_b16:
|
|
Removing instruction b17:
|
|
Removing instruction b18:
|
|
Removing instruction b1_from_b18:
|
|
Removing instruction b20:
|
|
Removing instruction b21:
|
|
Removing instruction b7:
|
|
Removing instruction breturn:
|
|
Removing instruction abs16s1:
|
|
Removing instruction b12:
|
|
Removing instruction b13:
|
|
Removing instruction breturn:
|
|
Removing instruction b7:
|
|
Removing instruction divr16s_from_b4:
|
|
Removing instruction b11:
|
|
Removing instruction b16:
|
|
Removing instruction b17:
|
|
Removing instruction b2_from_b17:
|
|
Removing instruction b18:
|
|
Removing instruction divr16u_from_b4:
|
|
Removing instruction b15:
|
|
Removing instruction b11:
|
|
Removing instruction b2_from_b1:
|
|
Removing instruction b1_from_divr16u:
|
|
Removing instruction b4:
|
|
Removing instruction b5:
|
|
Removing instruction breturn:
|
|
Removing instruction b1_from_screen_fill:
|
|
Removing instruction b3:
|
|
Removing instruction breturn:
|
|
Removing instruction b1_from_bitmap_clear:
|
|
Removing instruction b3:
|
|
Removing instruction breturn:
|
|
Removing instruction b1_from_bitmap_init:
|
|
Removing instruction b2_from_b1:
|
|
Removing instruction b3_from_b2:
|
|
Removing instruction b7:
|
|
Removing instruction breturn:
|
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
|
Skipping double jump to breturn in beq b19
|
|
Skipping double jump to b2 in bne b10
|
|
Succesful ASM optimization Pass5DoubleJumpElimination
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b2
|
|
Removing instruction jmp b1
|
|
Removing instruction jmp b3
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Removing instruction b19:
|
|
Removing instruction b10:
|
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
|
Removing unreachable instruction jmp breturn
|
|
Removing unreachable instruction jmp b2
|
|
Succesful ASM optimization Pass5UnreachableCodeElimination
|
|
Fixing long branch [140] bmi abs16s1_b1 to bpl
|
|
Fixing long branch [149] bmi abs16s2_b1 to bpl
|
|
|
|
FINAL SYMBOL TABLE
|
|
(label) @18
|
|
(label) @begin
|
|
(label) @end
|
|
(byte*) BITMAP
|
|
(const byte*) BITMAP#0 BITMAP = ((byte*))(word/dword/signed dword) 40960
|
|
(byte*) BORDERCOL
|
|
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
|
|
(byte*) CIA2_PORT_A
|
|
(const byte*) CIA2_PORT_A#0 CIA2_PORT_A = ((byte*))(word/dword/signed dword) 56576
|
|
(byte*) CIA2_PORT_A_DDR
|
|
(const byte*) CIA2_PORT_A_DDR#0 CIA2_PORT_A_DDR = ((byte*))(word/dword/signed dword) 56578
|
|
(byte*) D011
|
|
(const byte*) D011#0 D011 = ((byte*))(word/dword/signed dword) 53265
|
|
(byte*) D018
|
|
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
|
|
(byte) DELAY
|
|
(const byte) DELAY#0 DELAY = (byte/signed byte/word/signed word/dword/signed dword) 8
|
|
(byte*) PROCPORT
|
|
(const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1
|
|
(byte*) PROCPORT_DDR
|
|
(const byte*) PROCPORT_DDR#0 PROCPORT_DDR = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0
|
|
(byte) PROCPORT_DDR_MEMORY_MASK
|
|
(const byte) PROCPORT_DDR_MEMORY_MASK#0 PROCPORT_DDR_MEMORY_MASK = (byte/signed byte/word/signed word/dword/signed dword) 7
|
|
(byte) PROCPORT_RAM_IO
|
|
(const byte) PROCPORT_RAM_IO#0 PROCPORT_RAM_IO = (byte/signed byte/word/signed word/dword/signed dword) 53
|
|
(byte*) RASTER
|
|
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
|
(byte*) SCREEN
|
|
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/dword/signed dword) 34816
|
|
(byte) VIC_BMM
|
|
(const byte) VIC_BMM#0 VIC_BMM = (byte/signed byte/word/signed word/dword/signed dword) 32
|
|
(byte) VIC_DEN
|
|
(const byte) VIC_DEN#0 VIC_DEN = (byte/signed byte/word/signed word/dword/signed dword) 16
|
|
(byte) VIC_RSEL
|
|
(const byte) VIC_RSEL#0 VIC_RSEL = (byte/signed byte/word/signed word/dword/signed dword) 8
|
|
(void()) bitmap_clear()
|
|
(word~) bitmap_clear::$3 $3 zp ZP_WORD:3 2.0
|
|
(label) bitmap_clear::@1
|
|
(label) bitmap_clear::@2
|
|
(label) bitmap_clear::@3
|
|
(label) bitmap_clear::@return
|
|
(byte*) bitmap_clear::bitmap
|
|
(byte*) bitmap_clear::bitmap#1 bitmap zp ZP_WORD:3 42.599999999999994
|
|
(byte*) bitmap_clear::bitmap#2 bitmap zp ZP_WORD:3 157.0
|
|
(byte*) bitmap_clear::bitmap#3 bitmap zp ZP_WORD:3 24.0
|
|
(byte*~) bitmap_clear::bitmap#5 bitmap zp ZP_WORD:3 4.0
|
|
(byte) bitmap_clear::x
|
|
(byte) bitmap_clear::x#1 reg byte x 151.5
|
|
(byte) bitmap_clear::x#2 reg byte x 67.33333333333333
|
|
(byte) bitmap_clear::y
|
|
(byte) bitmap_clear::y#1 y zp ZP_BYTE:2 16.5
|
|
(byte) bitmap_clear::y#4 y zp ZP_BYTE:2 3.6666666666666665
|
|
(void()) bitmap_init((byte*) bitmap_init::bitmap)
|
|
(byte~) bitmap_init::$3 $3 zp ZP_BYTE:2 11.0
|
|
(byte~) bitmap_init::$4 reg byte a 22.0
|
|
(byte~) bitmap_init::$5 reg byte a 22.0
|
|
(byte~) bitmap_init::$6 reg byte a 22.0
|
|
(byte~) bitmap_init::$7 reg byte a 22.0
|
|
(label) bitmap_init::@1
|
|
(label) bitmap_init::@10
|
|
(label) bitmap_init::@2
|
|
(label) bitmap_init::@3
|
|
(label) bitmap_init::@4
|
|
(label) bitmap_init::@7
|
|
(label) bitmap_init::@return
|
|
(byte*) bitmap_init::bitmap
|
|
(byte) bitmap_init::bits
|
|
(byte) bitmap_init::bits#1 reg byte a 11.0
|
|
(byte) bitmap_init::bits#3 reg byte a 16.5
|
|
(byte) bitmap_init::bits#4 reg byte a 7.333333333333333
|
|
(byte) bitmap_init::x
|
|
(byte) bitmap_init::x#1 reg byte x 16.5
|
|
(byte) bitmap_init::x#2 reg byte x 5.5
|
|
(byte) bitmap_init::y
|
|
(byte) bitmap_init::y#1 reg byte x 16.5
|
|
(byte) bitmap_init::y#2 reg byte x 6.0
|
|
(byte*) bitmap_init::yoffs
|
|
(byte*) bitmap_init::yoffs#1 yoffs zp ZP_WORD:3 22.0
|
|
(byte*) bitmap_init::yoffs#2 yoffs zp ZP_WORD:3 6.111111111111112
|
|
(byte*) bitmap_init::yoffs#4 yoffs zp ZP_WORD:3 11.0
|
|
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
|
(word~) bitmap_plot::$1 $1 zp ZP_WORD:7 4.0
|
|
(byte~) bitmap_plot::$2 reg byte a 4.0
|
|
(word~) bitmap_plot::$3 $3 zp ZP_WORD:5 1.0
|
|
(label) bitmap_plot::@return
|
|
(byte*) bitmap_plot::plotter
|
|
(byte*) bitmap_plot::plotter#1 plotter zp ZP_WORD:5 3.0
|
|
(word) bitmap_plot::x
|
|
(word) bitmap_plot::x#0 x zp ZP_WORD:3 3.0
|
|
(byte) bitmap_plot::y
|
|
(byte) bitmap_plot::y#0 reg byte y 15.0
|
|
(byte[256]) bitmap_plot_bit
|
|
(const byte[256]) bitmap_plot_bit#0 bitmap_plot_bit = { fill( 256, 0) }
|
|
(byte[256]) bitmap_plot_yhi
|
|
(const byte[256]) bitmap_plot_yhi#0 bitmap_plot_yhi = { fill( 256, 0) }
|
|
(byte[256]) bitmap_plot_ylo
|
|
(const byte[256]) bitmap_plot_ylo#0 bitmap_plot_ylo = { fill( 256, 0) }
|
|
(byte[4]) delay
|
|
(const byte[4]) delay#0 delay = { fill( 4, 0) }
|
|
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
|
|
(signed word~) divr16s::$11 $11 zp ZP_WORD:9 1.0
|
|
(signed word~) divr16s::$7 $7 zp ZP_WORD:7 2.0
|
|
(label) divr16s::@1
|
|
(label) divr16s::@11
|
|
(label) divr16s::@15
|
|
(label) divr16s::@16
|
|
(label) divr16s::@17
|
|
(label) divr16s::@18
|
|
(label) divr16s::@19
|
|
(label) divr16s::@2
|
|
(label) divr16s::@3
|
|
(label) divr16s::@4
|
|
(label) divr16s::@return
|
|
(signed word) divr16s::dividend
|
|
(const signed word) divr16s::dividend#0 dividend = (byte/signed byte/word/signed word/dword/signed dword) 0
|
|
(word) divr16s::dividendu
|
|
(word) divr16s::dividendu#3 dividendu zp ZP_WORD:3 0.2857142857142857
|
|
(signed word) divr16s::divisor
|
|
(signed word) divr16s::divisor#0 divisor zp ZP_WORD:9 0.6666666666666666
|
|
(word) divr16s::divisoru
|
|
(word) divr16s::divisoru#3 divisoru zp ZP_WORD:9 3.0
|
|
(word~) divr16s::divisoru#4 divisoru zp ZP_WORD:9 4.0
|
|
(word~) divr16s::divisoru#5 divisoru zp ZP_WORD:9 4.0
|
|
(byte) divr16s::neg
|
|
(byte) divr16s::neg#2 reg byte y 2.0
|
|
(byte) divr16s::neg#3 reg byte y 1.0
|
|
(byte) divr16s::neg#4 reg byte y 0.8571428571428571
|
|
(signed word) divr16s::rem
|
|
(signed word) divr16s::rem#0 rem zp ZP_WORD:7 2.0
|
|
(word) divr16s::remu
|
|
(word) divr16s::remu#3 remu zp ZP_WORD:7 0.6666666666666666
|
|
(word~) divr16s::remu#7 remu zp ZP_WORD:7 4.0
|
|
(word~) divr16s::remu#8 remu zp ZP_WORD:7 4.0
|
|
(word) divr16s::resultu
|
|
(word) divr16s::resultu#0 resultu zp ZP_WORD:5 1.0
|
|
(signed word) divr16s::return
|
|
(signed word) divr16s::return#1 return zp ZP_WORD:5 4.0
|
|
(signed word) divr16s::return#2 return zp ZP_WORD:5 2.0
|
|
(signed word) divr16s::return#3 return zp ZP_WORD:5 4.0
|
|
(signed word~) divr16s::return#7 return zp ZP_WORD:5 4.0
|
|
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
|
(byte~) divr16u::$1 reg byte a 202.0
|
|
(byte~) divr16u::$2 reg byte a 202.0
|
|
(label) divr16u::@1
|
|
(label) divr16u::@2
|
|
(label) divr16u::@3
|
|
(label) divr16u::@4
|
|
(label) divr16u::@5
|
|
(label) divr16u::@return
|
|
(word) divr16u::dividend
|
|
(word) divr16u::dividend#0 dividend zp ZP_WORD:3 25.25
|
|
(word) divr16u::dividend#1 dividend zp ZP_WORD:3 1.0
|
|
(word) divr16u::dividend#2 dividend zp ZP_WORD:3 43.57142857142858
|
|
(word) divr16u::divisor
|
|
(word) divr16u::divisor#0 divisor zp ZP_WORD:9 11.333333333333332
|
|
(byte) divr16u::i
|
|
(byte) divr16u::i#1 reg byte x 151.5
|
|
(byte) divr16u::i#2 reg byte x 15.538461538461538
|
|
(word) divr16u::quotient
|
|
(word) divr16u::quotient#1 quotient zp ZP_WORD:5 151.5
|
|
(word) divr16u::quotient#2 quotient zp ZP_WORD:5 101.0
|
|
(word) divr16u::quotient#3 quotient zp ZP_WORD:5 25.25
|
|
(word) divr16u::rem
|
|
(word) divr16u::rem#0 rem zp ZP_WORD:7 75.75
|
|
(word) divr16u::rem#1 rem zp ZP_WORD:7 202.0
|
|
(word) divr16u::rem#2 rem zp ZP_WORD:7 202.0
|
|
(word) divr16u::rem#3 rem zp ZP_WORD:7 2.0
|
|
(word) divr16u::rem#4 rem zp ZP_WORD:7 204.0
|
|
(word) divr16u::rem#5 rem zp ZP_WORD:7 101.0
|
|
(word) divr16u::rem#9 rem zp ZP_WORD:7 101.0
|
|
(word) divr16u::return
|
|
(word) divr16u::return#0 return zp ZP_WORD:5 61.0
|
|
(word) divr16u::return#2 return zp ZP_WORD:5 4.0
|
|
(void()) main()
|
|
(byte~) main::$9 reg byte x 11.0
|
|
(label) main::@1
|
|
(label) main::@16
|
|
(label) main::@17
|
|
(label) main::@18
|
|
(label) main::@20
|
|
(label) main::@21
|
|
(label) main::@5
|
|
(label) main::@7
|
|
(byte) main::i
|
|
(byte) main::i#1 i zp ZP_BYTE:2 16.5
|
|
(byte) main::i#2 i zp ZP_BYTE:2 7.857142857142857
|
|
(label) main::toD0181
|
|
(word~) main::toD0181_$0
|
|
(word~) main::toD0181_$1
|
|
(word~) main::toD0181_$2
|
|
(byte~) main::toD0181_$3
|
|
(word~) main::toD0181_$4
|
|
(byte~) main::toD0181_$5
|
|
(byte~) main::toD0181_$6
|
|
(byte~) main::toD0181_$7
|
|
(byte~) main::toD0181_$8
|
|
(byte*) main::toD0181_gfx
|
|
(byte) main::toD0181_return
|
|
(const byte) main::toD0181_return#0 toD0181_return = >((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) BITMAP#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15
|
|
(byte*) main::toD0181_screen
|
|
(label) main::vicSelectGfxBank1
|
|
(byte~) main::vicSelectGfxBank1_$0
|
|
(label) main::vicSelectGfxBank1_@1
|
|
(byte*) main::vicSelectGfxBank1_gfx
|
|
(label) main::vicSelectGfxBank1_toDd001
|
|
(word~) main::vicSelectGfxBank1_toDd001_$0
|
|
(byte~) main::vicSelectGfxBank1_toDd001_$1
|
|
(byte~) main::vicSelectGfxBank1_toDd001_$2
|
|
(byte/word/dword~) main::vicSelectGfxBank1_toDd001_$3
|
|
(byte*) main::vicSelectGfxBank1_toDd001_gfx
|
|
(byte) main::vicSelectGfxBank1_toDd001_return
|
|
(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6
|
|
(void()) point_init((byte) point_init::point_idx)
|
|
(byte~) point_init::$13 reg byte a 4.0
|
|
(byte~) point_init::$14 reg byte a 2.0
|
|
(word~) point_init::$16 $16 zp ZP_WORD:3 4.0
|
|
(word~) point_init::$17 $17 zp ZP_WORD:3 4.0
|
|
(word~) point_init::$18 $18 zp ZP_WORD:3 4.0
|
|
(signed word~) point_init::$4 $4 zp ZP_WORD:7 2.0
|
|
(signed word~) point_init::$5 $5 zp ZP_WORD:3 4.0
|
|
(label) point_init::@1
|
|
(label) point_init::@10
|
|
(label) point_init::@11
|
|
(label) point_init::@12
|
|
(label) point_init::@13
|
|
(label) point_init::@2
|
|
(label) point_init::@3
|
|
(label) point_init::@4
|
|
(label) point_init::@7
|
|
(label) point_init::@return
|
|
(label) point_init::abs16s1
|
|
(bool~) point_init::abs16s1_$0
|
|
(word~) point_init::abs16s1_$1
|
|
(signed word~) point_init::abs16s1_$2
|
|
(signed word) point_init::abs16s1_$2#0 abs16s1_$2 zp ZP_WORD:3 2.0
|
|
(word~) point_init::abs16s1_$3
|
|
(label) point_init::abs16s1_@1
|
|
(label) point_init::abs16s1_@return
|
|
(word) point_init::abs16s1_return
|
|
(word) point_init::abs16s1_return#2 abs16s1_return zp ZP_WORD:3 1.0
|
|
(word~) point_init::abs16s1_return#5 abs16s1_return zp ZP_WORD:3 4.0
|
|
(word~) point_init::abs16s1_return#6 abs16s1_return zp ZP_WORD:3 4.0
|
|
(signed word) point_init::abs16s1_w
|
|
(label) point_init::abs16s2
|
|
(bool~) point_init::abs16s2_$0
|
|
(word~) point_init::abs16s2_$1
|
|
(signed word~) point_init::abs16s2_$2
|
|
(signed word) point_init::abs16s2_$2#0 abs16s2_$2 zp ZP_WORD:5 2.0
|
|
(word~) point_init::abs16s2_$3
|
|
(label) point_init::abs16s2_@1
|
|
(label) point_init::abs16s2_@return
|
|
(word) point_init::abs16s2_return
|
|
(word) point_init::abs16s2_return#2 abs16s2_return zp ZP_WORD:5 6.0
|
|
(word~) point_init::abs16s2_return#5 abs16s2_return zp ZP_WORD:5 4.0
|
|
(word~) point_init::abs16s2_return#6 abs16s2_return zp ZP_WORD:5 4.0
|
|
(signed word) point_init::abs16s2_w
|
|
(byte) point_init::point_idx
|
|
(byte) point_init::point_idx#0 point_idx zp ZP_BYTE:2 0.71875
|
|
(byte) point_init::point_idx1
|
|
(byte) point_init::point_idx1#0 point_idx1 zp ZP_BYTE:11 0.375
|
|
(signed word) point_init::x_diff
|
|
(signed word) point_init::x_diff#1 x_diff zp ZP_WORD:9 0.5555555555555556
|
|
(signed word) point_init::x_stepf
|
|
(signed word) point_init::x_stepf#0 x_stepf zp ZP_WORD:5 4.0
|
|
(signed word) point_init::y_diff
|
|
(signed word) point_init::y_diff#0 y_diff zp ZP_WORD:7 0.5
|
|
(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch)
|
|
(label) screen_fill::@1
|
|
(label) screen_fill::@2
|
|
(label) screen_fill::@3
|
|
(label) screen_fill::@return
|
|
(byte) screen_fill::ch
|
|
(const byte) screen_fill::ch#0 ch = (byte/signed byte/word/signed word/dword/signed dword) 16
|
|
(byte*) screen_fill::screen
|
|
(byte*) screen_fill::screen#1 screen zp ZP_WORD:3 42.599999999999994
|
|
(byte*) screen_fill::screen#2 screen zp ZP_WORD:3 157.0
|
|
(byte*) screen_fill::screen#3 screen zp ZP_WORD:3 22.0
|
|
(byte) screen_fill::x
|
|
(byte) screen_fill::x#1 reg byte x 151.5
|
|
(byte) screen_fill::x#2 reg byte x 67.33333333333333
|
|
(byte) screen_fill::y
|
|
(byte) screen_fill::y#1 y zp ZP_BYTE:2 16.5
|
|
(byte) screen_fill::y#4 y zp ZP_BYTE:2 3.6666666666666665
|
|
(signed byte[4]) x_add
|
|
(const signed byte[4]) x_add#0 x_add = { fill( 4, 0) }
|
|
(word[4]) x_cur
|
|
(const word[4]) x_cur#0 x_cur = { fill( 4, 0) }
|
|
(word[4]) x_end
|
|
(const word[4]) x_end#0 x_end = { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20 }
|
|
(word[4]) x_start
|
|
(const word[4]) x_start#0 x_start = { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 30, (byte/signed byte/word/signed word/dword/signed dword) 30 }
|
|
(signed byte[4]) y_add
|
|
(const signed byte[4]) y_add#0 y_add = { fill( 4, 0) }
|
|
(word[4]) y_cur
|
|
(const word[4]) y_cur#0 y_cur = { fill( 4, 0) }
|
|
(byte[4]) y_end
|
|
(const byte[4]) y_end#0 y_end = { (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 20, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 }
|
|
(byte[4]) y_start
|
|
(const byte[4]) y_start#0 y_start = { (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 10, (byte/signed byte/word/signed word/dword/signed dword) 20 }
|
|
|
|
zp ZP_BYTE:2 [ main::i#2 main::i#1 point_init::point_idx#0 screen_fill::y#4 screen_fill::y#1 bitmap_clear::y#4 bitmap_clear::y#1 bitmap_init::$3 ]
|
|
zp ZP_WORD:3 [ point_init::abs16s1_return#2 point_init::abs16s1_return#5 point_init::abs16s1_return#6 point_init::abs16s1_$2#0 divr16s::dividendu#3 divr16u::dividend#2 divr16u::dividend#1 divr16u::dividend#0 screen_fill::screen#2 screen_fill::screen#3 screen_fill::screen#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 bitmap_plot::x#0 point_init::$5 point_init::$16 point_init::$17 point_init::$18 ]
|
|
zp ZP_WORD:5 [ point_init::abs16s2_return#2 point_init::abs16s2_return#5 point_init::abs16s2_return#6 point_init::abs16s2_$2#0 divr16s::return#2 divr16s::return#1 divr16s::return#7 divr16s::resultu#0 divr16s::return#3 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 point_init::x_stepf#0 bitmap_plot::$3 bitmap_plot::plotter#1 ]
|
|
zp ZP_WORD:7 [ divr16s::remu#3 divr16s::remu#7 divr16s::remu#8 divr16u::rem#4 divr16u::rem#3 divr16u::rem#9 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 divr16s::rem#0 divr16s::$7 point_init::$4 point_init::y_diff#0 bitmap_plot::$1 ]
|
|
zp ZP_WORD:9 [ divr16s::divisoru#3 divr16s::divisoru#4 divr16s::divisoru#5 divr16s::divisor#0 divr16u::divisor#0 divr16s::$11 point_init::x_diff#1 ]
|
|
reg byte y [ divr16s::neg#4 divr16s::neg#2 divr16s::neg#3 ]
|
|
reg byte x [ divr16u::i#2 divr16u::i#1 ]
|
|
reg byte x [ screen_fill::x#2 screen_fill::x#1 ]
|
|
reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ]
|
|
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
|
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
|
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
|
reg byte x [ main::$9 ]
|
|
reg byte y [ bitmap_plot::y#0 ]
|
|
reg byte a [ bitmap_plot::$2 ]
|
|
zp ZP_BYTE:11 [ point_init::point_idx1#0 ]
|
|
reg byte a [ point_init::$13 ]
|
|
reg byte a [ point_init::$14 ]
|
|
reg byte a [ divr16u::$1 ]
|
|
reg byte a [ divr16u::$2 ]
|
|
reg byte a [ bitmap_init::$4 ]
|
|
reg byte a [ bitmap_init::$5 ]
|
|
reg byte a [ bitmap_init::$6 ]
|
|
reg byte a [ bitmap_init::$7 ]
|
|
|
|
|
|
FINAL ASSEMBLER
|
|
Score: 21471
|
|
|
|
//SEG0 Basic Upstart
|
|
.pc = $801 "Basic"
|
|
:BasicUpstart(main)
|
|
.pc = $80d "Program"
|
|
//SEG1 Global Constants & labels
|
|
.label PROCPORT_DDR = 0
|
|
.const PROCPORT_DDR_MEMORY_MASK = 7
|
|
.label PROCPORT = 1
|
|
.const PROCPORT_RAM_IO = $35
|
|
.label RASTER = $d012
|
|
.label BORDERCOL = $d020
|
|
.label D011 = $d011
|
|
.const VIC_BMM = $20
|
|
.const VIC_DEN = $10
|
|
.const VIC_RSEL = 8
|
|
.label D018 = $d018
|
|
.label CIA2_PORT_A = $dd00
|
|
.label CIA2_PORT_A_DDR = $dd02
|
|
.label BITMAP = $a000
|
|
.label SCREEN = $8800
|
|
.const DELAY = 8
|
|
//SEG2 @begin
|
|
//SEG3 [1] phi from @begin to @18 [phi:@begin->@18]
|
|
//SEG4 @18
|
|
//SEG5 [2] call main
|
|
jsr main
|
|
//SEG6 [3] phi from @18 to @end [phi:@18->@end]
|
|
//SEG7 @end
|
|
//SEG8 main
|
|
main: {
|
|
.const vicSelectGfxBank1_toDd001_return = 3^(>SCREEN)>>6
|
|
.const toD0181_return = (>(SCREEN&$3fff)<<2)|(>BITMAP)>>2&$f
|
|
.label i = 2
|
|
//SEG9 asm { sei }
|
|
sei
|
|
//SEG10 [5] *((const byte*) PROCPORT_DDR#0) ← (const byte) PROCPORT_DDR_MEMORY_MASK#0 -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_DDR_MEMORY_MASK
|
|
sta PROCPORT_DDR
|
|
//SEG11 [6] *((const byte*) PROCPORT#0) ← (const byte) PROCPORT_RAM_IO#0 -- _deref_pbuc1=vbuc2
|
|
lda #PROCPORT_RAM_IO
|
|
sta PROCPORT
|
|
//SEG12 [7] *((const byte*) D011#0) ← (const byte) VIC_BMM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2
|
|
lda #VIC_BMM|VIC_DEN|VIC_RSEL|3
|
|
sta D011
|
|
//SEG13 main::vicSelectGfxBank1
|
|
//SEG14 [8] *((const byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3 -- _deref_pbuc1=vbuc2
|
|
lda #3
|
|
sta CIA2_PORT_A_DDR
|
|
//SEG15 [9] phi from main::vicSelectGfxBank1 to main::vicSelectGfxBank1_toDd001 [phi:main::vicSelectGfxBank1->main::vicSelectGfxBank1_toDd001]
|
|
//SEG16 main::vicSelectGfxBank1_toDd001
|
|
//SEG17 main::vicSelectGfxBank1_@1
|
|
//SEG18 [10] *((const byte*) CIA2_PORT_A#0) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0 -- _deref_pbuc1=vbuc2
|
|
lda #vicSelectGfxBank1_toDd001_return
|
|
sta CIA2_PORT_A
|
|
//SEG19 [11] phi from main::vicSelectGfxBank1_@1 to main::toD0181 [phi:main::vicSelectGfxBank1_@1->main::toD0181]
|
|
//SEG20 main::toD0181
|
|
//SEG21 main::@16
|
|
//SEG22 [12] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 -- _deref_pbuc1=vbuc2
|
|
lda #toD0181_return
|
|
sta D018
|
|
//SEG23 [13] call bitmap_init
|
|
//SEG24 [130] phi from main::@16 to bitmap_init [phi:main::@16->bitmap_init]
|
|
jsr bitmap_init
|
|
//SEG25 [14] phi from main::@16 to main::@17 [phi:main::@16->main::@17]
|
|
//SEG26 main::@17
|
|
//SEG27 [15] call bitmap_clear
|
|
jsr bitmap_clear
|
|
//SEG28 [16] phi from main::@17 to main::@18 [phi:main::@17->main::@18]
|
|
//SEG29 main::@18
|
|
//SEG30 [17] call screen_fill
|
|
//SEG31 [109] phi from main::@18 to screen_fill [phi:main::@18->screen_fill]
|
|
jsr screen_fill
|
|
//SEG32 [18] phi from main::@18 to main::@1 [phi:main::@18->main::@1]
|
|
//SEG33 [18] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@18->main::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta i
|
|
//SEG34 [18] phi from main::@21 to main::@1 [phi:main::@21->main::@1]
|
|
//SEG35 [18] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@21->main::@1#0] -- register_copy
|
|
//SEG36 main::@1
|
|
b1:
|
|
//SEG37 [19] (byte) point_init::point_idx#0 ← (byte) main::i#2
|
|
// (byte) point_init::point_idx#0 = (byte) main::i#2 // register copy zp ZP_BYTE:2
|
|
//SEG38 [20] call point_init
|
|
jsr point_init
|
|
//SEG39 main::@20
|
|
//SEG40 [21] (byte~) main::$9 ← (byte) main::i#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_ror_1
|
|
lda i
|
|
lsr
|
|
tax
|
|
//SEG41 [22] (word) bitmap_plot::x#0 ← *((const word[4]) x_start#0 + (byte) main::i#2) -- vwuz1=pwuc1_derefidx_vbuz2
|
|
ldy i
|
|
lda x_start,y
|
|
sta bitmap_plot.x
|
|
lda x_start+1,y
|
|
sta bitmap_plot.x+1
|
|
//SEG42 [23] (byte) bitmap_plot::y#0 ← *((const byte[4]) y_start#0 + (byte~) main::$9) -- vbuyy=pbuc1_derefidx_vbuxx
|
|
ldy y_start,x
|
|
//SEG43 [24] call bitmap_plot
|
|
jsr bitmap_plot
|
|
//SEG44 main::@21
|
|
//SEG45 [25] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2
|
|
lda i
|
|
clc
|
|
adc #2
|
|
sta i
|
|
//SEG46 [26] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
cmp #8
|
|
bne b1
|
|
//SEG47 main::@5
|
|
b5:
|
|
//SEG48 [27] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@5 -- _deref_pbuc1_neq_vbuc2_then_la1
|
|
lda RASTER
|
|
cmp #$ff
|
|
bne b5
|
|
//SEG49 main::@7
|
|
//SEG50 [28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) -- _deref_pbuc1=_inc__deref_pbuc1
|
|
inc BORDERCOL
|
|
jmp b5
|
|
}
|
|
//SEG51 bitmap_plot
|
|
bitmap_plot: {
|
|
.label _1 = 7
|
|
.label x = 3
|
|
.label plotter = 5
|
|
.label _3 = 5
|
|
//SEG52 [29] (word~) bitmap_plot::$3 ← *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_plot::y#0) w= *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_plot::y#0) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy
|
|
lda bitmap_plot_yhi,y
|
|
sta _3+1
|
|
lda bitmap_plot_ylo,y
|
|
sta _3
|
|
//SEG53 [30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word/dword/signed dword) 65528 -- vwuz1=vwuz2_band_vwuc1
|
|
lda x
|
|
and #<$fff8
|
|
sta _1
|
|
lda x+1
|
|
and #>$fff8
|
|
sta _1+1
|
|
//SEG54 [31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word~) bitmap_plot::$3 + (word~) bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2
|
|
lda plotter
|
|
clc
|
|
adc _1
|
|
sta plotter
|
|
lda plotter+1
|
|
adc _1+1
|
|
sta plotter+1
|
|
//SEG55 [32] (byte~) bitmap_plot::$2 ← < (word) bitmap_plot::x#0 -- vbuaa=_lo_vwuz1
|
|
lda x
|
|
//SEG56 [33] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const byte[256]) bitmap_plot_bit#0 + (byte~) bitmap_plot::$2) -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuaa
|
|
tay
|
|
lda bitmap_plot_bit,y
|
|
ldy #0
|
|
ora (plotter),y
|
|
sta (plotter),y
|
|
//SEG57 bitmap_plot::@return
|
|
//SEG58 [34] return
|
|
rts
|
|
}
|
|
//SEG59 point_init
|
|
point_init: {
|
|
.label _4 = 7
|
|
.label _5 = 3
|
|
.label _16 = 3
|
|
.label _17 = 3
|
|
.label _18 = 3
|
|
.label point_idx = 2
|
|
.label point_idx1 = $b
|
|
.label y_diff = 7
|
|
.label abs16s1__2 = 3
|
|
.label abs16s1_return = 3
|
|
.label abs16s2__2 = 5
|
|
.label abs16s2_return = 5
|
|
.label x_stepf = 5
|
|
.label x_diff = 9
|
|
//SEG60 [35] (byte) point_init::point_idx1#0 ← (byte) point_init::point_idx#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_ror_1
|
|
lda point_idx
|
|
lsr
|
|
sta point_idx1
|
|
//SEG61 [36] (signed word) point_init::x_diff#1 ← (signed word)*((const word[4]) x_end#0 + (byte) point_init::point_idx#0) - (signed word)*((const word[4]) x_start#0 + (byte) point_init::point_idx#0) -- vwsz1=pwsc1_derefidx_vbuz2_minus_pwsc2_derefidx_vbuz2
|
|
ldy point_idx
|
|
sec
|
|
lda x_end,y
|
|
sbc x_start,y
|
|
sta x_diff
|
|
lda x_end+1,y
|
|
sbc x_start+1,y
|
|
sta x_diff+1
|
|
//SEG62 [37] (signed word~) point_init::$4 ← ((signed word)) *((const byte[4]) y_end#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2
|
|
ldy point_idx1
|
|
lda y_end,y
|
|
sta _4
|
|
lda #0
|
|
sta _4+1
|
|
//SEG63 [38] (signed word~) point_init::$5 ← ((signed word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwsz1=_sword_pbuc1_derefidx_vbuz2
|
|
lda y_start,y
|
|
sta _5
|
|
lda #0
|
|
sta _5+1
|
|
//SEG64 [39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$4 - (signed word~) point_init::$5 -- vwsz1=vwsz1_minus_vwsz2
|
|
lda y_diff
|
|
sec
|
|
sbc _5
|
|
sta y_diff
|
|
lda y_diff+1
|
|
sbc _5+1
|
|
sta y_diff+1
|
|
//SEG65 point_init::abs16s1
|
|
//SEG66 [40] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s1_@1 -- vwsz1_lt_0_then_la1
|
|
lda x_diff+1
|
|
bpl !abs16s1_b1+
|
|
jmp abs16s1_b1
|
|
!abs16s1_b1:
|
|
//SEG67 point_init::@12
|
|
//SEG68 [41] (word~) point_init::abs16s1_return#6 ← (word)(signed word) point_init::x_diff#1 -- vwuz1=vwuz2
|
|
lda x_diff
|
|
sta abs16s1_return
|
|
lda x_diff+1
|
|
sta abs16s1_return+1
|
|
//SEG69 [42] phi from point_init::@12 point_init::abs16s1_@1 to point_init::abs16s1_@return [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return]
|
|
//SEG70 [42] phi (word) point_init::abs16s1_return#2 = (word~) point_init::abs16s1_return#6 [phi:point_init::@12/point_init::abs16s1_@1->point_init::abs16s1_@return#0] -- register_copy
|
|
//SEG71 point_init::abs16s1_@return
|
|
//SEG72 point_init::abs16s2
|
|
abs16s2:
|
|
//SEG73 [43] if((signed word) point_init::y_diff#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::abs16s2_@1 -- vwsz1_lt_0_then_la1
|
|
lda y_diff+1
|
|
bpl !abs16s2_b1+
|
|
jmp abs16s2_b1
|
|
!abs16s2_b1:
|
|
//SEG74 point_init::@13
|
|
//SEG75 [44] (word~) point_init::abs16s2_return#6 ← (word)(signed word) point_init::y_diff#0 -- vwuz1=vwuz2
|
|
lda y_diff
|
|
sta abs16s2_return
|
|
lda y_diff+1
|
|
sta abs16s2_return+1
|
|
//SEG76 [45] phi from point_init::@13 point_init::abs16s2_@1 to point_init::abs16s2_@return [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return]
|
|
//SEG77 [45] phi (word) point_init::abs16s2_return#2 = (word~) point_init::abs16s2_return#6 [phi:point_init::@13/point_init::abs16s2_@1->point_init::abs16s2_@return#0] -- register_copy
|
|
//SEG78 point_init::abs16s2_@return
|
|
//SEG79 point_init::@10
|
|
b10:
|
|
//SEG80 [46] if((word) point_init::abs16s1_return#2>(word) point_init::abs16s2_return#2) goto point_init::@1 -- vwuz1_gt_vwuz2_then_la1
|
|
lda abs16s1_return
|
|
cmp abs16s2_return
|
|
lda abs16s1_return+1
|
|
sbc abs16s2_return+1
|
|
bvc !+
|
|
eor #$80
|
|
!:
|
|
bpl b1
|
|
//SEG81 point_init::@2
|
|
b2:
|
|
//SEG82 [47] (word~) point_init::$16 ← *((const word[4]) x_start#0 + (byte) point_init::point_idx#0) << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=pwuc1_derefidx_vbuz2_rol_4
|
|
ldy point_idx
|
|
lda x_start,y
|
|
sta _16
|
|
lda x_start+1,y
|
|
sta _16+1
|
|
asl _16
|
|
rol _16+1
|
|
asl _16
|
|
rol _16+1
|
|
asl _16
|
|
rol _16+1
|
|
asl _16
|
|
rol _16+1
|
|
//SEG83 [48] *((const word[4]) x_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$16 -- pwuc1_derefidx_vbuz1=vwuz2
|
|
lda _16
|
|
sta x_cur,y
|
|
lda _16+1
|
|
sta x_cur+1,y
|
|
//SEG84 [49] (word~) point_init::$17 ← ((word)) *((const byte[4]) y_start#0 + (byte) point_init::point_idx1#0) -- vwuz1=_word_pbuc1_derefidx_vbuz2
|
|
ldy point_idx1
|
|
lda y_start,y
|
|
sta _17
|
|
lda #0
|
|
sta _17+1
|
|
//SEG85 [50] (word~) point_init::$18 ← (word~) point_init::$17 << (byte/signed byte/word/signed word/dword/signed dword) 4 -- vwuz1=vwuz1_rol_4
|
|
asl _18
|
|
rol _18+1
|
|
asl _18
|
|
rol _18+1
|
|
asl _18
|
|
rol _18+1
|
|
asl _18
|
|
rol _18+1
|
|
//SEG86 [51] *((const word[4]) y_cur#0 + (byte) point_init::point_idx#0) ← (word~) point_init::$18 -- pwuc1_derefidx_vbuz1=vwuz2
|
|
ldy point_idx
|
|
lda _18
|
|
sta y_cur,y
|
|
lda _18+1
|
|
sta y_cur+1,y
|
|
//SEG87 [52] *((const byte[4]) delay#0 + (byte) point_init::point_idx1#0) ← (const byte) DELAY#0 -- pbuc1_derefidx_vbuz1=vbuc2
|
|
ldy point_idx1
|
|
lda #DELAY
|
|
sta delay,y
|
|
//SEG88 point_init::@return
|
|
//SEG89 [53] return
|
|
rts
|
|
//SEG90 point_init::@1
|
|
b1:
|
|
//SEG91 [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 -- vwsz1_lt_0_then_la1
|
|
lda x_diff+1
|
|
bmi b3
|
|
//SEG92 point_init::@7
|
|
//SEG93 [55] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← (byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbuc2
|
|
ldy point_idx
|
|
lda #$10
|
|
sta x_add,y
|
|
//SEG94 point_init::@4
|
|
b4:
|
|
//SEG95 [56] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1
|
|
// (signed word) divr16s::divisor#0 = (signed word) point_init::x_diff#1 // register copy zp ZP_WORD:9
|
|
//SEG96 [57] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0
|
|
// (signed word) divr16s::rem#0 = (signed word) point_init::y_diff#0 // register copy zp ZP_WORD:7
|
|
//SEG97 [58] call divr16s
|
|
//SEG98 [69] phi from point_init::@4 to divr16s [phi:point_init::@4->divr16s]
|
|
jsr divr16s
|
|
//SEG99 [59] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
|
|
// (signed word) divr16s::return#3 = (signed word) divr16s::return#2 // register copy zp ZP_WORD:5
|
|
//SEG100 point_init::@11
|
|
//SEG101 [60] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3
|
|
// (signed word) point_init::x_stepf#0 = (signed word) divr16s::return#3 // register copy zp ZP_WORD:5
|
|
//SEG102 [61] (byte~) point_init::$13 ← > (signed word) point_init::x_stepf#0 -- vbuaa=_hi_vwsz1
|
|
lda x_stepf+1
|
|
//SEG103 [62] (byte~) point_init::$14 ← (byte~) point_init::$13 >> (byte/signed byte/word/signed word/dword/signed dword) 4 -- vbuaa=vbuaa_ror_4
|
|
lsr
|
|
lsr
|
|
lsr
|
|
lsr
|
|
//SEG104 [63] *((const signed byte[4]) y_add#0 + (byte) point_init::point_idx1#0) ← (signed byte)(byte~) point_init::$14 -- pbsc1_derefidx_vbuz1=vbsaa
|
|
ldy point_idx1
|
|
sta y_add,y
|
|
jmp b2
|
|
//SEG105 point_init::@3
|
|
b3:
|
|
//SEG106 [64] *((const signed byte[4]) x_add#0 + (byte) point_init::point_idx#0) ← -(byte/signed byte/word/signed word/dword/signed dword) 16 -- pbsc1_derefidx_vbuz1=vbsc2
|
|
ldy point_idx
|
|
lda #-$10
|
|
sta x_add,y
|
|
jmp b4
|
|
//SEG107 point_init::abs16s2_@1
|
|
abs16s2_b1:
|
|
//SEG108 [65] (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::y_diff#0 -- vwsz1=_neg_vwsz2
|
|
sec
|
|
lda y_diff
|
|
eor #$ff
|
|
adc #0
|
|
sta abs16s2__2
|
|
lda y_diff+1
|
|
eor #$ff
|
|
adc #0
|
|
sta abs16s2__2+1
|
|
//SEG109 [66] (word~) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_$2#0
|
|
// (word~) point_init::abs16s2_return#5 = (word)(signed word) point_init::abs16s2_$2#0 // register copy zp ZP_WORD:5
|
|
jmp b10
|
|
//SEG110 point_init::abs16s1_@1
|
|
abs16s1_b1:
|
|
//SEG111 [67] (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::x_diff#1 -- vwsz1=_neg_vwsz2
|
|
sec
|
|
lda x_diff
|
|
eor #$ff
|
|
adc #0
|
|
sta abs16s1__2
|
|
lda x_diff+1
|
|
eor #$ff
|
|
adc #0
|
|
sta abs16s1__2+1
|
|
//SEG112 [68] (word~) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_$2#0
|
|
// (word~) point_init::abs16s1_return#5 = (word)(signed word) point_init::abs16s1_$2#0 // register copy zp ZP_WORD:3
|
|
jmp abs16s2
|
|
}
|
|
//SEG113 divr16s
|
|
divr16s: {
|
|
.const dividend = 0
|
|
.label _7 = 7
|
|
.label _11 = 9
|
|
.label resultu = 5
|
|
.label return = 5
|
|
.label divisor = 9
|
|
.label rem = 7
|
|
.label dividendu = 3
|
|
.label divisoru = 9
|
|
.label remu = 7
|
|
//SEG114 divr16s::@16
|
|
//SEG115 [70] if((signed word) divr16s::rem#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1 -- vwsz1_lt_0_then_la1
|
|
lda rem+1
|
|
bmi b1
|
|
//SEG116 divr16s::@17
|
|
//SEG117 [71] (word~) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0
|
|
// (word~) divr16s::remu#8 = (word)(signed word) divr16s::rem#0 // register copy zp ZP_WORD:7
|
|
//SEG118 [72] phi from divr16s::@17 to divr16s::@2 [phi:divr16s::@17->divr16s::@2]
|
|
//SEG119 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#8 [phi:divr16s::@17->divr16s::@2#0] -- register_copy
|
|
//SEG120 [72] phi (word) divr16s::dividendu#3 = ((word))(const signed word) divr16s::dividend#0 [phi:divr16s::@17->divr16s::@2#1] -- vwuz1=vbuc1
|
|
lda #<dividend
|
|
sta dividendu
|
|
lda #>dividend
|
|
sta dividendu+1
|
|
//SEG121 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16s::@17->divr16s::@2#2] -- vbuyy=vbuc1
|
|
ldy #0
|
|
//SEG122 divr16s::@2
|
|
b2:
|
|
//SEG123 [73] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3 -- vwsz1_lt_0_then_la1
|
|
lda divisor+1
|
|
bmi b3
|
|
//SEG124 divr16s::@18
|
|
//SEG125 [74] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
|
|
// (word~) divr16s::divisoru#5 = (word)(signed word) divr16s::divisor#0 // register copy zp ZP_WORD:9
|
|
//SEG126 [75] phi from divr16s::@18 divr16s::@3 to divr16s::@4 [phi:divr16s::@18/divr16s::@3->divr16s::@4]
|
|
//SEG127 [75] phi (byte) divr16s::neg#4 = (byte) divr16s::neg#3 [phi:divr16s::@18/divr16s::@3->divr16s::@4#0] -- register_copy
|
|
//SEG128 [75] phi (word) divr16s::divisoru#3 = (word~) divr16s::divisoru#5 [phi:divr16s::@18/divr16s::@3->divr16s::@4#1] -- register_copy
|
|
//SEG129 divr16s::@4
|
|
b4:
|
|
//SEG130 [76] (word) divr16u::dividend#1 ← (word) divr16s::dividendu#3
|
|
// (word) divr16u::dividend#1 = (word) divr16s::dividendu#3 // register copy zp ZP_WORD:3
|
|
//SEG131 [77] (word) divr16u::divisor#0 ← (word) divr16s::divisoru#3
|
|
// (word) divr16u::divisor#0 = (word) divr16s::divisoru#3 // register copy zp ZP_WORD:9
|
|
//SEG132 [78] (word) divr16u::rem#3 ← (word) divr16s::remu#3
|
|
// (word) divr16u::rem#3 = (word) divr16s::remu#3 // register copy zp ZP_WORD:7
|
|
//SEG133 [79] call divr16u
|
|
//SEG134 [92] phi from divr16s::@4 to divr16u [phi:divr16s::@4->divr16u]
|
|
jsr divr16u
|
|
//SEG135 [80] (word) divr16u::return#2 ← (word) divr16u::return#0
|
|
// (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:5
|
|
//SEG136 divr16s::@15
|
|
//SEG137 [81] (word) divr16s::resultu#0 ← (word) divr16u::return#2
|
|
// (word) divr16s::resultu#0 = (word) divr16u::return#2 // register copy zp ZP_WORD:5
|
|
//SEG138 [82] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@19 -- vbuyy_eq_0_then_la1
|
|
cpy #0
|
|
beq breturn
|
|
//SEG139 divr16s::@11
|
|
//SEG140 [83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0 -- vwsz1=_neg_vwsz1
|
|
sec
|
|
lda return
|
|
eor #$ff
|
|
adc #0
|
|
sta return
|
|
lda return+1
|
|
eor #$ff
|
|
adc #0
|
|
sta return+1
|
|
//SEG141 [84] phi from divr16s::@11 divr16s::@19 to divr16s::@return [phi:divr16s::@11/divr16s::@19->divr16s::@return]
|
|
//SEG142 [84] phi (signed word) divr16s::return#2 = (signed word) divr16s::return#1 [phi:divr16s::@11/divr16s::@19->divr16s::@return#0] -- register_copy
|
|
//SEG143 divr16s::@return
|
|
breturn:
|
|
//SEG144 [85] return
|
|
rts
|
|
//SEG145 divr16s::@19
|
|
//SEG146 [86] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
|
|
// (signed word~) divr16s::return#7 = (signed word)(word) divr16s::resultu#0 // register copy zp ZP_WORD:5
|
|
//SEG147 divr16s::@3
|
|
b3:
|
|
//SEG148 [87] (signed word~) divr16s::$11 ← - (signed word) divr16s::divisor#0 -- vwsz1=_neg_vwsz1
|
|
sec
|
|
lda _11
|
|
eor #$ff
|
|
adc #0
|
|
sta _11
|
|
lda _11+1
|
|
eor #$ff
|
|
adc #0
|
|
sta _11+1
|
|
//SEG149 [88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuyy_bxor_vbuc1
|
|
tya
|
|
eor #1
|
|
tay
|
|
//SEG150 [89] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$11
|
|
// (word~) divr16s::divisoru#4 = (word)(signed word~) divr16s::$11 // register copy zp ZP_WORD:9
|
|
jmp b4
|
|
//SEG151 divr16s::@1
|
|
b1:
|
|
//SEG152 [90] (signed word~) divr16s::$7 ← - (signed word) divr16s::rem#0 -- vwsz1=_neg_vwsz1
|
|
sec
|
|
lda _7
|
|
eor #$ff
|
|
adc #0
|
|
sta _7
|
|
lda _7+1
|
|
eor #$ff
|
|
adc #0
|
|
sta _7+1
|
|
//SEG153 [91] (word~) divr16s::remu#7 ← (word)(signed word~) divr16s::$7
|
|
// (word~) divr16s::remu#7 = (word)(signed word~) divr16s::$7 // register copy zp ZP_WORD:7
|
|
//SEG154 [72] phi from divr16s::@1 to divr16s::@2 [phi:divr16s::@1->divr16s::@2]
|
|
//SEG155 [72] phi (word) divr16s::remu#3 = (word~) divr16s::remu#7 [phi:divr16s::@1->divr16s::@2#0] -- register_copy
|
|
//SEG156 [72] phi (word) divr16s::dividendu#3 = ((word))-(const signed word) divr16s::dividend#0 [phi:divr16s::@1->divr16s::@2#1] -- vwuz1=vbuc1
|
|
lda #<-dividend
|
|
sta dividendu
|
|
lda #>-dividend
|
|
sta dividendu+1
|
|
//SEG157 [72] phi (byte) divr16s::neg#3 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:divr16s::@1->divr16s::@2#2] -- vbuyy=vbuc1
|
|
ldy #1
|
|
jmp b2
|
|
}
|
|
//SEG158 divr16u
|
|
divr16u: {
|
|
.label rem = 7
|
|
.label dividend = 3
|
|
.label quotient = 5
|
|
.label return = 5
|
|
.label divisor = 9
|
|
//SEG159 [93] phi from divr16u to divr16u::@1 [phi:divr16u->divr16u::@1]
|
|
//SEG160 [93] phi (byte) divr16u::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
//SEG161 [93] phi (word) divr16u::quotient#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:divr16u->divr16u::@1#1] -- vwuz1=vbuc1
|
|
txa
|
|
sta quotient
|
|
sta quotient+1
|
|
//SEG162 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#1 [phi:divr16u->divr16u::@1#2] -- register_copy
|
|
//SEG163 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#3 [phi:divr16u->divr16u::@1#3] -- register_copy
|
|
//SEG164 [93] phi from divr16u::@3 to divr16u::@1 [phi:divr16u::@3->divr16u::@1]
|
|
//SEG165 [93] phi (byte) divr16u::i#2 = (byte) divr16u::i#1 [phi:divr16u::@3->divr16u::@1#0] -- register_copy
|
|
//SEG166 [93] phi (word) divr16u::quotient#3 = (word) divr16u::return#0 [phi:divr16u::@3->divr16u::@1#1] -- register_copy
|
|
//SEG167 [93] phi (word) divr16u::dividend#2 = (word) divr16u::dividend#0 [phi:divr16u::@3->divr16u::@1#2] -- register_copy
|
|
//SEG168 [93] phi (word) divr16u::rem#4 = (word) divr16u::rem#9 [phi:divr16u::@3->divr16u::@1#3] -- register_copy
|
|
//SEG169 divr16u::@1
|
|
b1:
|
|
//SEG170 [94] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
|
|
asl rem
|
|
rol rem+1
|
|
//SEG171 [95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2 -- vbuaa=_hi_vwuz1
|
|
lda dividend+1
|
|
//SEG172 [96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 -- vbuaa=vbuaa_band_vbuc1
|
|
and #$80
|
|
//SEG173 [97] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 -- vbuaa_eq_0_then_la1
|
|
cmp #0
|
|
beq b2
|
|
//SEG174 divr16u::@4
|
|
//SEG175 [98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_bor_vbuc1
|
|
lda #1
|
|
ora rem
|
|
sta rem
|
|
//SEG176 [99] phi from divr16u::@1 divr16u::@4 to divr16u::@2 [phi:divr16u::@1/divr16u::@4->divr16u::@2]
|
|
//SEG177 [99] phi (word) divr16u::rem#5 = (word) divr16u::rem#0 [phi:divr16u::@1/divr16u::@4->divr16u::@2#0] -- register_copy
|
|
//SEG178 divr16u::@2
|
|
b2:
|
|
//SEG179 [100] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
|
|
asl dividend
|
|
rol dividend+1
|
|
//SEG180 [101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vwuz1=vwuz1_rol_1
|
|
asl quotient
|
|
rol quotient+1
|
|
//SEG181 [102] if((word) divr16u::rem#5<(word) divr16u::divisor#0) goto divr16u::@3 -- vwuz1_lt_vwuz2_then_la1
|
|
lda rem+1
|
|
cmp divisor+1
|
|
bcc b3
|
|
bne !+
|
|
lda rem
|
|
cmp divisor
|
|
bcc b3
|
|
!:
|
|
//SEG182 divr16u::@5
|
|
//SEG183 [103] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 -- vwuz1=_inc_vwuz1
|
|
inc quotient
|
|
bne !+
|
|
inc quotient+1
|
|
!:
|
|
//SEG184 [104] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (word) divr16u::divisor#0 -- vwuz1=vwuz1_minus_vwuz2
|
|
lda rem
|
|
sec
|
|
sbc divisor
|
|
sta rem
|
|
lda rem+1
|
|
sbc divisor+1
|
|
sta rem+1
|
|
//SEG185 [105] phi from divr16u::@2 divr16u::@5 to divr16u::@3 [phi:divr16u::@2/divr16u::@5->divr16u::@3]
|
|
//SEG186 [105] phi (word) divr16u::return#0 = (word) divr16u::quotient#1 [phi:divr16u::@2/divr16u::@5->divr16u::@3#0] -- register_copy
|
|
//SEG187 [105] phi (word) divr16u::rem#9 = (word) divr16u::rem#5 [phi:divr16u::@2/divr16u::@5->divr16u::@3#1] -- register_copy
|
|
//SEG188 divr16u::@3
|
|
b3:
|
|
//SEG189 [106] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG190 [107] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #$10
|
|
bne b1
|
|
//SEG191 divr16u::@return
|
|
//SEG192 [108] return
|
|
rts
|
|
}
|
|
//SEG193 screen_fill
|
|
screen_fill: {
|
|
.const ch = $10
|
|
.label screen = 3
|
|
.label y = 2
|
|
//SEG194 [110] phi from screen_fill to screen_fill::@1 [phi:screen_fill->screen_fill::@1]
|
|
//SEG195 [110] phi (byte) screen_fill::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill->screen_fill::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta y
|
|
//SEG196 [110] phi (byte*) screen_fill::screen#3 = (const byte*) SCREEN#0 [phi:screen_fill->screen_fill::@1#1] -- pbuz1=pbuc1
|
|
lda #<SCREEN
|
|
sta screen
|
|
lda #>SCREEN
|
|
sta screen+1
|
|
//SEG197 [110] phi from screen_fill::@3 to screen_fill::@1 [phi:screen_fill::@3->screen_fill::@1]
|
|
//SEG198 [110] phi (byte) screen_fill::y#4 = (byte) screen_fill::y#1 [phi:screen_fill::@3->screen_fill::@1#0] -- register_copy
|
|
//SEG199 [110] phi (byte*) screen_fill::screen#3 = (byte*) screen_fill::screen#1 [phi:screen_fill::@3->screen_fill::@1#1] -- register_copy
|
|
//SEG200 screen_fill::@1
|
|
b1:
|
|
//SEG201 [111] phi from screen_fill::@1 to screen_fill::@2 [phi:screen_fill::@1->screen_fill::@2]
|
|
//SEG202 [111] phi (byte) screen_fill::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:screen_fill::@1->screen_fill::@2#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
//SEG203 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#3 [phi:screen_fill::@1->screen_fill::@2#1] -- register_copy
|
|
//SEG204 [111] phi from screen_fill::@2 to screen_fill::@2 [phi:screen_fill::@2->screen_fill::@2]
|
|
//SEG205 [111] phi (byte) screen_fill::x#2 = (byte) screen_fill::x#1 [phi:screen_fill::@2->screen_fill::@2#0] -- register_copy
|
|
//SEG206 [111] phi (byte*) screen_fill::screen#2 = (byte*) screen_fill::screen#1 [phi:screen_fill::@2->screen_fill::@2#1] -- register_copy
|
|
//SEG207 screen_fill::@2
|
|
b2:
|
|
//SEG208 [112] *((byte*) screen_fill::screen#2) ← (const byte) screen_fill::ch#0 -- _deref_pbuz1=vbuc1
|
|
lda #ch
|
|
ldy #0
|
|
sta (screen),y
|
|
//SEG209 [113] (byte*) screen_fill::screen#1 ← ++ (byte*) screen_fill::screen#2 -- pbuz1=_inc_pbuz1
|
|
inc screen
|
|
bne !+
|
|
inc screen+1
|
|
!:
|
|
//SEG210 [114] (byte) screen_fill::x#1 ← ++ (byte) screen_fill::x#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG211 [115] if((byte) screen_fill::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto screen_fill::@2 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #$28
|
|
bne b2
|
|
//SEG212 screen_fill::@3
|
|
//SEG213 [116] (byte) screen_fill::y#1 ← ++ (byte) screen_fill::y#4 -- vbuz1=_inc_vbuz1
|
|
inc y
|
|
//SEG214 [117] if((byte) screen_fill::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 25) goto screen_fill::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda y
|
|
cmp #$19
|
|
bne b1
|
|
//SEG215 screen_fill::@return
|
|
//SEG216 [118] return
|
|
rts
|
|
}
|
|
//SEG217 bitmap_clear
|
|
bitmap_clear: {
|
|
.label bitmap = 3
|
|
.label y = 2
|
|
.label _3 = 3
|
|
//SEG218 [119] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0) -- vwuz1=_deref_pbuc1_word__deref_pbuc2
|
|
lda bitmap_plot_ylo
|
|
sta _3
|
|
lda bitmap_plot_yhi
|
|
sta _3+1
|
|
//SEG219 [120] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3
|
|
// (byte*~) bitmap_clear::bitmap#5 = (byte*)(word~) bitmap_clear::$3 // register copy zp ZP_WORD:3
|
|
//SEG220 [121] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1]
|
|
//SEG221 [121] phi (byte) bitmap_clear::y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1
|
|
lda #0
|
|
sta y
|
|
//SEG222 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*~) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy
|
|
//SEG223 [121] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1]
|
|
//SEG224 [121] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy
|
|
//SEG225 [121] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy
|
|
//SEG226 bitmap_clear::@1
|
|
b1:
|
|
//SEG227 [122] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2]
|
|
//SEG228 [122] phi (byte) bitmap_clear::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
//SEG229 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy
|
|
//SEG230 [122] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2]
|
|
//SEG231 [122] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy
|
|
//SEG232 [122] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy
|
|
//SEG233 bitmap_clear::@2
|
|
b2:
|
|
//SEG234 [123] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- _deref_pbuz1=vbuc1
|
|
lda #0
|
|
tay
|
|
sta (bitmap),y
|
|
//SEG235 [124] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1
|
|
inc bitmap
|
|
bne !+
|
|
inc bitmap+1
|
|
!:
|
|
//SEG236 [125] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG237 [126] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1
|
|
cpx #$c8
|
|
bne b2
|
|
//SEG238 bitmap_clear::@3
|
|
//SEG239 [127] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1
|
|
inc y
|
|
//SEG240 [128] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1
|
|
lda y
|
|
cmp #$28
|
|
bne b1
|
|
//SEG241 bitmap_clear::@return
|
|
//SEG242 [129] return
|
|
rts
|
|
}
|
|
//SEG243 bitmap_init
|
|
bitmap_init: {
|
|
.label _3 = 2
|
|
.label yoffs = 3
|
|
//SEG244 [131] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
|
//SEG245 [131] phi (byte) bitmap_init::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1
|
|
ldx #0
|
|
//SEG246 [131] phi (byte) bitmap_init::bits#3 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1
|
|
lda #$80
|
|
//SEG247 [131] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1]
|
|
//SEG248 [131] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy
|
|
//SEG249 [131] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy
|
|
//SEG250 bitmap_init::@1
|
|
b1:
|
|
//SEG251 [132] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa
|
|
sta bitmap_plot_bit,x
|
|
//SEG252 [133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuaa_ror_1
|
|
lsr
|
|
//SEG253 [134] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10 -- vbuaa_neq_0_then_la1
|
|
cmp #0
|
|
bne b2
|
|
//SEG254 [135] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2]
|
|
//SEG255 [135] phi (byte) bitmap_init::bits#4 = (byte/word/signed word/dword/signed dword) 128 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1
|
|
lda #$80
|
|
//SEG256 bitmap_init::@2
|
|
b2:
|
|
//SEG257 [136] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG258 [137] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1
|
|
cpx #0
|
|
bne b1
|
|
//SEG259 [138] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3]
|
|
//SEG260 [138] phi (byte*) bitmap_init::yoffs#2 = (const byte*) BITMAP#0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1
|
|
lda #<BITMAP
|
|
sta yoffs
|
|
lda #>BITMAP
|
|
sta yoffs+1
|
|
//SEG261 [138] phi (byte) bitmap_init::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1
|
|
ldx #0
|
|
//SEG262 [138] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3]
|
|
//SEG263 [138] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy
|
|
//SEG264 [138] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy
|
|
//SEG265 bitmap_init::@3
|
|
b3:
|
|
//SEG266 [139] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuz1=vbuxx_band_vbuc1
|
|
txa
|
|
and #7
|
|
sta _3
|
|
//SEG267 [140] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1
|
|
lda yoffs
|
|
//SEG268 [141] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa
|
|
ora _3
|
|
//SEG269 [142] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa
|
|
sta bitmap_plot_ylo,x
|
|
//SEG270 [143] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1
|
|
lda yoffs+1
|
|
//SEG271 [144] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa
|
|
sta bitmap_plot_yhi,x
|
|
//SEG272 [145] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7 -- vbuaa=vbuxx_band_vbuc1
|
|
txa
|
|
and #7
|
|
//SEG273 [146] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4 -- vbuaa_neq_vbuc1_then_la1
|
|
cmp #7
|
|
bne b4
|
|
//SEG274 bitmap_init::@7
|
|
//SEG275 [147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8 -- pbuz1=pbuz1_plus_vwuc1
|
|
clc
|
|
lda yoffs
|
|
adc #<$28*8
|
|
sta yoffs
|
|
lda yoffs+1
|
|
adc #>$28*8
|
|
sta yoffs+1
|
|
//SEG276 [148] phi from bitmap_init::@3 bitmap_init::@7 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4]
|
|
//SEG277 [148] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@7->bitmap_init::@4#0] -- register_copy
|
|
//SEG278 bitmap_init::@4
|
|
b4:
|
|
//SEG279 [149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx
|
|
inx
|
|
//SEG280 [150] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1
|
|
cpx #0
|
|
bne b3
|
|
//SEG281 bitmap_init::@return
|
|
//SEG282 [151] return
|
|
rts
|
|
//SEG283 [152] phi from bitmap_init::@1 to bitmap_init::@10 [phi:bitmap_init::@1->bitmap_init::@10]
|
|
//SEG284 bitmap_init::@10
|
|
//SEG285 [135] phi from bitmap_init::@10 to bitmap_init::@2 [phi:bitmap_init::@10->bitmap_init::@2]
|
|
//SEG286 [135] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@10->bitmap_init::@2#0] -- register_copy
|
|
}
|
|
x_start: .word $a, $14, $1e, $1e
|
|
y_start: .byte $a, $a, $a, $14
|
|
x_end: .word $14, $a, $14, $14
|
|
y_end: .byte $14, $14, $a, $14
|
|
x_cur: .fill 2*4, 0
|
|
y_cur: .fill 2*4, 0
|
|
x_add: .fill 4, 0
|
|
y_add: .fill 4, 0
|
|
delay: .fill 4, 0
|
|
bitmap_plot_ylo: .fill $100, 0
|
|
bitmap_plot_yhi: .fill $100, 0
|
|
bitmap_plot_bit: .fill $100, 0
|
|
|