1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-18 04:08:58 +00:00
kickc/src/test/ref/line-anim.cfg

324 lines
18 KiB
INI

@begin: scope:[] from
[0] phi()
to:@1
@1: scope:[] from @begin
[1] phi()
[2] call main
to:@end
@end: scope:[] from @1
[3] phi()
(void()) main()
main: scope:[main] from @1
asm { sei }
[5] *((const byte*) PROCPORT_DDR) ← (const byte) PROCPORT_DDR_MEMORY_MASK
[6] *((const byte*) PROCPORT) ← (const byte) PROCPORT_RAM_IO
[7] *((const byte*) D011) ← (const byte) VIC_BMM|(const byte) VIC_DEN|(const byte) VIC_RSEL|(byte) 3
to:main::vicSelectGfxBank1
main::vicSelectGfxBank1: scope:[main] from main
[8] *((const byte*) CIA2_PORT_A_DDR) ← (byte) 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) ← (const byte) main::vicSelectGfxBank1_toDd001_return#0
to:main::toD0181
main::toD0181: scope:[main] from main::vicSelectGfxBank1_@1
[11] phi()
to:main::@4
main::@4: scope:[main] from main::toD0181
[12] *((const byte*) D018) ← (const byte) main::toD0181_return#0
[13] call bitmap_init
to:main::@5
main::@5: scope:[main] from main::@4
[14] phi()
[15] call bitmap_clear
to:main::@6
main::@6: scope:[main] from main::@5
[16] phi()
[17] call screen_fill
to:main::@1
main::@1: scope:[main] from main::@6 main::@8
[18] (byte) main::i#2 ← phi( main::@6/(byte) 0 main::@8/(byte) main::i#1 )
[19] (byte) point_init::point_idx#0 ← (byte) main::i#2
[20] call point_init
to:main::@7
main::@7: scope:[main] from main::@1
[21] (byte~) main::$10 ← (byte) main::i#2 << (byte) 1
[22] (word) bitmap_plot::x#0 ← *((const word*) x_start + (byte~) main::$10)
[23] (byte) bitmap_plot::y#0 ← *((const byte*) y_start + (byte) main::i#2)
[24] call bitmap_plot
to:main::@8
main::@8: scope:[main] from main::@7
[25] (byte) main::i#1 ← ++ (byte) main::i#2
[26] if((byte) main::i#1!=(const byte) SIZE-(byte) 1+(byte) 1) goto main::@1
to:main::@2
main::@2: scope:[main] from main::@2 main::@3 main::@8
[27] if(*((const byte*) RASTER)!=(byte) $ff) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@2
[28] *((const byte*) BORDERCOL) ← ++ *((const byte*) BORDERCOL)
to:main::@2
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
bitmap_plot: scope:[bitmap_plot] from main::@7
[29] (word) bitmap_plot::plotter#0 ← *((const byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#0) w= *((const byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#0)
[30] (word~) bitmap_plot::$1 ← (word) bitmap_plot::x#0 & (word) $fff8
[31] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (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*) bitmap_plot_bit + (byte~) bitmap_plot::$2)
to:bitmap_plot::@return
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
[34] return
to:@return
(void()) point_init((byte) point_init::point_idx)
point_init: scope:[point_init] from main::@1
[35] (byte~) point_init::$18 ← (byte) point_init::point_idx#0 << (byte) 1
[36] (signed word) point_init::x_diff#1 ← (signed word)*((const word*) x_end + (byte~) point_init::$18) - (signed word)*((const word*) x_start + (byte~) point_init::$18)
[37] (signed word~) point_init::$3 ← (signed word)*((const byte*) y_end + (byte) point_init::point_idx#0)
[38] (signed word~) point_init::$4 ← (signed word)*((const byte*) y_start + (byte) point_init::point_idx#0)
[39] (signed word) point_init::y_diff#0 ← (signed word~) point_init::$3 - (signed word~) point_init::$4
to:point_init::abs16s1
point_init::abs16s1: scope:[point_init] from point_init
[40] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::abs16s1_@1
to:point_init::abs16s1_@3
point_init::abs16s1_@3: 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::abs16s1_@1 point_init::abs16s1_@3
[42] (word) point_init::abs16s1_return#2 ← phi( point_init::abs16s1_@1/(word) point_init::abs16s1_return#5 point_init::abs16s1_@3/(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<(signed byte) 0) goto point_init::abs16s2_@1
to:point_init::abs16s2_@3
point_init::abs16s2_@3: 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::abs16s2_@1 point_init::abs16s2_@3
[45] (word) point_init::abs16s2_return#2 ← phi( point_init::abs16s2_@1/(word) point_init::abs16s2_return#5 point_init::abs16s2_@3/(word) point_init::abs16s2_return#6 )
to:point_init::@6
point_init::@6: 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::@6 point_init::@7
[47] (byte~) point_init::$20 ← (byte) point_init::point_idx#0 << (byte) 1
[48] (word~) point_init::$9 ← *((const word*) x_start + (byte~) point_init::$20) << (byte) 4
[49] *((const word*) x_cur + (byte~) point_init::$20) ← (word~) point_init::$9
[50] (word~) point_init::$10 ← (word)*((const byte*) y_start + (byte) point_init::point_idx#0)
[51] (word~) point_init::$11 ← (word~) point_init::$10 << (byte) 4
[52] *((const word*) y_cur + (byte~) point_init::$20) ← (word~) point_init::$11
[53] *((const byte*) delay + (byte) point_init::point_idx#0) ← (const byte) DELAY
to:point_init::@return
point_init::@return: scope:[point_init] from point_init::@2
[54] return
to:@return
point_init::@1: scope:[point_init] from point_init::@6
[55] if((signed word) point_init::x_diff#1<(signed byte) 0) goto point_init::@4
to:point_init::@3
point_init::@3: scope:[point_init] from point_init::@1
[56] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) $10
to:point_init::@5
point_init::@5: scope:[point_init] from point_init::@3 point_init::@4
[57] (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#1
[58] (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#0
[59] call divr16s
[60] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
to:point_init::@7
point_init::@7: scope:[point_init] from point_init::@5
[61] (signed word) point_init::x_stepf#0 ← (signed word) divr16s::return#3
[62] (byte~) point_init::$14 ← > (signed word) point_init::x_stepf#0
[63] (byte~) point_init::$16 ← (byte~) point_init::$14 >> (byte) 4
[64] *((const signed byte*) y_add + (byte) point_init::point_idx#0) ← (signed byte)(byte~) point_init::$16
to:point_init::@2
point_init::@4: scope:[point_init] from point_init::@1
[65] *((const signed byte*) x_add + (byte) point_init::point_idx#0) ← (signed byte) -$10
to:point_init::@5
point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2
[66] (signed word) point_init::abs16s2_return#0 ← - (signed word) point_init::y_diff#0
[67] (word) point_init::abs16s2_return#5 ← (word)(signed word) point_init::abs16s2_return#0
to:point_init::abs16s2_@return
point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1
[68] (signed word) point_init::abs16s1_return#0 ← - (signed word) point_init::x_diff#1
[69] (word) point_init::abs16s1_return#5 ← (word)(signed word) point_init::abs16s1_return#0
to:point_init::abs16s1_@return
(signed word()) divr16s((signed word) divr16s::dividend , (signed word) divr16s::divisor , (signed word) divr16s::rem)
divr16s: scope:[divr16s] from point_init::@5
[70] phi()
to:divr16s::@10
divr16s::@10: scope:[divr16s] from divr16s
[71] if((signed word) divr16s::rem#0<(signed byte) 0) goto divr16s::@1
to:divr16s::@6
divr16s::@6: scope:[divr16s] from divr16s::@10
[72] (word) divr16s::remu#8 ← (word)(signed word) divr16s::rem#0
to:divr16s::@2
divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@6
[73] (word) divr16s::remu#3 ← phi( divr16s::@1/(word) divr16s::remu#7 divr16s::@6/(word) divr16s::remu#8 )
[73] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte) 1 divr16s::@6/(byte) 0 )
[74] if((signed word) divr16s::divisor#0<(signed byte) 0) goto divr16s::@3
to:divr16s::@7
divr16s::@7: scope:[divr16s] from divr16s::@2
[75] (word) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
to:divr16s::@4
divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@7
[76] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@7/(byte) divr16s::neg#3 )
[76] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word) divr16s::divisoru#4 divr16s::@7/(word) divr16s::divisoru#5 )
[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::@9
divr16s::@9: scope:[divr16s] from divr16s::@4
[81] (word) divr16s::resultu#0 ← (word) divr16u::return#2
[82] if((byte) divr16s::neg#4==(byte) 0) goto divr16s::@5
to:divr16s::@8
divr16s::@8: scope:[divr16s] from divr16s::@9
[83] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0
to:divr16s::@return
divr16s::@return: scope:[divr16s] from divr16s::@5 divr16s::@8
[84] (signed word) divr16s::return#2 ← phi( divr16s::@8/(signed word) divr16s::return#1 divr16s::@5/(signed word) divr16s::return#7 )
[85] return
to:@return
divr16s::@5: scope:[divr16s] from divr16s::@9
[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::divisoru#1 ← - (signed word) divr16s::divisor#0
[88] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte) 1
[89] (word) divr16s::divisoru#4 ← (word)(signed word) divr16s::divisoru#1
to:divr16s::@4
divr16s::@1: scope:[divr16s] from divr16s::@10
[90] (signed word) divr16s::remu#1 ← - (signed word) divr16s::rem#0
[91] (word) divr16s::remu#7 ← (word)(signed word) divr16s::remu#1
to:divr16s::@2
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
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) 0 divr16u::@3/(byte) divr16u::i#1 )
[93] (word) divr16u::quotient#3 ← phi( divr16u/(byte) 0 divr16u::@3/(word) divr16u::return#0 )
[93] (word) divr16u::dividend#2 ← phi( divr16u/(word) 0 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) 1
[95] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2
[96] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte) $80
[97] if((byte~) divr16u::$2==(byte) 0) goto divr16u::@2
to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1
[98] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte) 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) 1
[101] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte) 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) $10) goto divr16u::@1
to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@3
[108] return
to:@return
(void()) screen_fill((byte*) screen_fill::screen , (byte) screen_fill::ch)
screen_fill: scope:[screen_fill] from main::@6
[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) 0 screen_fill::@3/(byte) screen_fill::y#1 )
[110] (byte*) screen_fill::screen#3 ← phi( screen_fill/(const byte*) SCREEN 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) 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) $28) 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) $19) goto screen_fill::@1
to:screen_fill::@return
screen_fill::@return: scope:[screen_fill] from screen_fill::@3
[118] return
to:@return
(void()) bitmap_clear()
bitmap_clear: scope:[bitmap_clear] from main::@5
[119] (word) bitmap_clear::bitmap#0 ← *((const byte*) bitmap_plot_yhi) w= *((const byte*) bitmap_plot_ylo)
[120] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0
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) 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) 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) 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) $c8) 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) $28) goto bitmap_clear::@1
to:bitmap_clear::@return
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
[129] return
to:@return
(void()) bitmap_init((byte*) bitmap_init::bitmap)
bitmap_init: scope:[bitmap_init] from main::@4
[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) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
[131] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 )
[132] *((const byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
[133] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1
[134] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6
to:bitmap_init::@2
bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1
[135] phi()
to:bitmap_init::@2
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6
[136] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 )
[137] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
[138] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1
to:bitmap_init::@3
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4
[139] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(const byte*) BITMAP bitmap_init::@4/(byte*) bitmap_init::yoffs#4 )
[139] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 )
[140] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte) 7
[141] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
[142] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$7 | (byte~) bitmap_init::$4
[143] *((const byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
[144] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
[145] *((const byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
[146] if((byte~) bitmap_init::$7!=(byte) 7) goto bitmap_init::@4
to:bitmap_init::@5
bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3
[147] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8
to:bitmap_init::@4
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5
[148] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 )
[149] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
[150] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3
to:bitmap_init::@return
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
[151] return
to:@return