Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx Inlined call call __init CONTROL FLOW GRAPH SSA (void()) bitmap_init((byte*) bitmap_init::bitmap) bitmap_init: scope:[bitmap_init] from main (byte*) bitmap_init::bitmap#2 ← phi( main/(byte*) bitmap_init::bitmap#0 ) (byte) bitmap_init::bits#0 ← (byte) $80 (byte) bitmap_init::x#0 ← (byte) 0 to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) bitmap_init::bits#0 bitmap_init::@2/(byte) bitmap_init::bits#4 ) (byte*) bitmap_init::bitmap#1 ← phi( bitmap_init/(byte*) bitmap_init::bitmap#2 bitmap_init::@2/(byte*) bitmap_init::bitmap#3 ) (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) bitmap_init::x#0 bitmap_init::@2/(byte) bitmap_init::x#1 ) (number~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (number) $f8 *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_init::x#2) ← (number~) bitmap_init::$0 (byte~) bitmap_init::$1 ← > (byte*) bitmap_init::bitmap#1 *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$1 *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 (byte~) bitmap_init::$2 ← (byte) bitmap_init::bits#3 >> (number) 1 (byte) bitmap_init::bits#1 ← (byte~) bitmap_init::$2 (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (number) 0 (bool~) bitmap_init::$4 ← ! (bool~) bitmap_init::$3 if((bool~) bitmap_init::$4) goto bitmap_init::@2 to:bitmap_init::@3 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@3 (byte) bitmap_init::bits#4 ← phi( bitmap_init::@1/(byte) bitmap_init::bits#1 bitmap_init::@3/(byte) bitmap_init::bits#2 ) (byte*) bitmap_init::bitmap#3 ← phi( bitmap_init::@1/(byte*) bitmap_init::bitmap#1 bitmap_init::@3/(byte*) bitmap_init::bitmap#4 ) (byte) bitmap_init::x#3 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 bitmap_init::@3/(byte) bitmap_init::x#4 ) (byte) bitmap_init::x#1 ← (byte) bitmap_init::x#3 + rangenext(0,$ff) (bool~) bitmap_init::$5 ← (byte) bitmap_init::x#1 != rangelast(0,$ff) if((bool~) bitmap_init::$5) goto bitmap_init::@1 to:bitmap_init::@4 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@1 (byte*) bitmap_init::bitmap#4 ← phi( bitmap_init::@1/(byte*) bitmap_init::bitmap#1 ) (byte) bitmap_init::x#4 ← phi( bitmap_init::@1/(byte) bitmap_init::x#2 ) (byte) bitmap_init::bits#2 ← (number) $80 to:bitmap_init::@2 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@2 (byte*) bitmap_init::yoffs#0 ← (byte*)(number) 0 (byte) bitmap_init::y#0 ← (byte) 0 to:bitmap_init::@5 bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@4 bitmap_init::@6 (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#0 bitmap_init::@6/(byte*) bitmap_init::yoffs#4 ) (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#0 bitmap_init::@6/(byte) bitmap_init::y#1 ) (number~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (number) 7 (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 (number~) bitmap_init::$8 ← (number~) bitmap_init::$6 | (byte~) bitmap_init::$7 *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (number~) bitmap_init::$8 (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 (number~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (number) 7 (bool~) bitmap_init::$11 ← (number~) bitmap_init::$10 == (number) 7 (bool~) bitmap_init::$12 ← ! (bool~) bitmap_init::$11 if((bool~) bitmap_init::$12) goto bitmap_init::@6 to:bitmap_init::@7 bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@5 bitmap_init::@7 (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@5/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 ) (byte) bitmap_init::y#3 ← phi( bitmap_init::@5/(byte) bitmap_init::y#2 bitmap_init::@7/(byte) bitmap_init::y#4 ) (byte) bitmap_init::y#1 ← (byte) bitmap_init::y#3 + rangenext(0,$ff) (bool~) bitmap_init::$14 ← (byte) bitmap_init::y#1 != rangelast(0,$ff) if((bool~) bitmap_init::$14) goto bitmap_init::@5 to:bitmap_init::@return bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@5 (byte) bitmap_init::y#4 ← phi( bitmap_init::@5/(byte) bitmap_init::y#2 ) (byte*) bitmap_init::yoffs#3 ← phi( bitmap_init::@5/(byte*) bitmap_init::yoffs#2 ) (byte*~) bitmap_init::$13 ← (byte*) bitmap_init::yoffs#3 + (number) $28*(number) 8 (byte*) bitmap_init::yoffs#1 ← (byte*~) bitmap_init::$13 to:bitmap_init::@6 bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@6 return to:@return (void()) bitmap_clear() bitmap_clear: scope:[bitmap_clear] from main::@2 (byte*) bitmap_clear::bitmap#0 ← (byte*){ *((const to_nomodify byte*) bitmap_plot_xhi + (number) 0), *((const to_nomodify byte*) bitmap_plot_xlo + (number) 0) } (byte) bitmap_clear::y#0 ← (byte) 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) 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) ← (number) 0 (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 (byte) bitmap_clear::x#1 ← (byte) bitmap_clear::x#2 + rangenext(0,$c7) (bool~) bitmap_clear::$0 ← (byte) bitmap_clear::x#1 != rangelast(0,$c7) if((bool~) bitmap_clear::$0) 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,$27) (bool~) bitmap_clear::$1 ← (byte) bitmap_clear::y#1 != rangelast(0,$27) if((bool~) bitmap_clear::$1) goto bitmap_clear::@1 to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3 return to:@return (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) bitmap_plot: scope:[bitmap_plot] from bitmap_line_xdyd::@1 bitmap_line_xdyi::@1 bitmap_line_ydxd::@1 bitmap_line_ydxi::@1 (byte) bitmap_plot::y#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::y#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::y#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::y#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::y#2 ) (byte) bitmap_plot::x#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::x#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::x#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::x#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::x#2 ) (word) bitmap_plot::plotter_x#0 ← (word){ *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4), *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) } (word) bitmap_plot::plotter_y#0 ← (word){ *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4), *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) } (word~) bitmap_plot::$0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 (byte*) bitmap_plot::plotter#0 ← ((byte*)) (word~) bitmap_plot::$0 (byte~) bitmap_plot::$1 ← *((byte*) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) *((byte*) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot return to:@return (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) bitmap_line: scope:[bitmap_line] from main::@1 (byte) bitmap_line::y1#13 ← phi( main::@1/(byte) bitmap_line::y1#0 ) (byte) bitmap_line::y0#13 ← phi( main::@1/(byte) bitmap_line::y0#0 ) (byte) bitmap_line::x1#1 ← phi( main::@1/(byte) bitmap_line::x1#0 ) (byte) bitmap_line::x0#1 ← phi( main::@1/(byte) bitmap_line::x0#0 ) (byte) bitmap_line::xd#0 ← (byte) 0 (byte) bitmap_line::yd#0 ← (byte) 0 (bool~) bitmap_line::$0 ← (byte) bitmap_line::x0#1 < (byte) bitmap_line::x1#1 if((bool~) bitmap_line::$0) goto bitmap_line::@1 to:bitmap_line::@2 bitmap_line::@1: scope:[bitmap_line] from bitmap_line (byte) bitmap_line::y1#1 ← phi( bitmap_line/(byte) bitmap_line::y1#13 ) (byte) bitmap_line::y0#1 ← phi( bitmap_line/(byte) bitmap_line::y0#13 ) (byte) bitmap_line::x0#2 ← phi( bitmap_line/(byte) bitmap_line::x0#1 ) (byte) bitmap_line::x1#2 ← phi( bitmap_line/(byte) bitmap_line::x1#1 ) (byte~) bitmap_line::$11 ← (byte) bitmap_line::x1#2 - (byte) bitmap_line::x0#2 (byte) bitmap_line::xd#1 ← (byte~) bitmap_line::$11 (bool~) bitmap_line::$12 ← (byte) bitmap_line::y0#1 < (byte) bitmap_line::y1#1 if((bool~) bitmap_line::$12) goto bitmap_line::@11 to:bitmap_line::@5 bitmap_line::@2: scope:[bitmap_line] from bitmap_line (byte) bitmap_line::y1#2 ← phi( bitmap_line/(byte) bitmap_line::y1#13 ) (byte) bitmap_line::y0#2 ← phi( bitmap_line/(byte) bitmap_line::y0#13 ) (byte) bitmap_line::x1#3 ← phi( bitmap_line/(byte) bitmap_line::x1#1 ) (byte) bitmap_line::x0#3 ← phi( bitmap_line/(byte) bitmap_line::x0#1 ) (byte~) bitmap_line::$1 ← (byte) bitmap_line::x0#3 - (byte) bitmap_line::x1#3 (byte) bitmap_line::xd#2 ← (byte~) bitmap_line::$1 (bool~) bitmap_line::$2 ← (byte) bitmap_line::y0#2 < (byte) bitmap_line::y1#2 if((bool~) bitmap_line::$2) goto bitmap_line::@7 to:bitmap_line::@3 bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@2 (byte) bitmap_line::x0#11 ← phi( bitmap_line::@2/(byte) bitmap_line::x0#3 ) (byte) bitmap_line::x1#11 ← phi( bitmap_line::@2/(byte) bitmap_line::x1#3 ) (byte) bitmap_line::xd#3 ← phi( bitmap_line::@2/(byte) bitmap_line::xd#2 ) (byte) bitmap_line::y0#3 ← phi( bitmap_line::@2/(byte) bitmap_line::y0#2 ) (byte) bitmap_line::y1#3 ← phi( bitmap_line::@2/(byte) bitmap_line::y1#2 ) (byte~) bitmap_line::$7 ← (byte) bitmap_line::y1#3 - (byte) bitmap_line::y0#3 (byte) bitmap_line::yd#1 ← (byte~) bitmap_line::$7 (bool~) bitmap_line::$8 ← (byte) bitmap_line::yd#1 < (byte) bitmap_line::xd#3 if((bool~) bitmap_line::$8) goto bitmap_line::@9 to:bitmap_line::@10 bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@2 (byte) bitmap_line::x0#10 ← phi( bitmap_line::@2/(byte) bitmap_line::x0#3 ) (byte) bitmap_line::x1#10 ← phi( bitmap_line::@2/(byte) bitmap_line::x1#3 ) (byte) bitmap_line::xd#4 ← phi( bitmap_line::@2/(byte) bitmap_line::xd#2 ) (byte) bitmap_line::y1#4 ← phi( bitmap_line::@2/(byte) bitmap_line::y1#2 ) (byte) bitmap_line::y0#4 ← phi( bitmap_line::@2/(byte) bitmap_line::y0#2 ) (byte~) bitmap_line::$3 ← (byte) bitmap_line::y0#4 - (byte) bitmap_line::y1#4 (byte) bitmap_line::yd#2 ← (byte~) bitmap_line::$3 (bool~) bitmap_line::$4 ← (byte) bitmap_line::yd#2 < (byte) bitmap_line::xd#4 if((bool~) bitmap_line::$4) goto bitmap_line::@8 to:bitmap_line::@4 bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@3 (byte) bitmap_line::yd#5 ← phi( bitmap_line::@3/(byte) bitmap_line::yd#2 ) (byte) bitmap_line::xd#5 ← phi( bitmap_line::@3/(byte) bitmap_line::xd#4 ) (byte) bitmap_line::x0#4 ← phi( bitmap_line::@3/(byte) bitmap_line::x0#10 ) (byte) bitmap_line::y1#5 ← phi( bitmap_line::@3/(byte) bitmap_line::y1#4 ) (byte) bitmap_line::x1#4 ← phi( bitmap_line::@3/(byte) bitmap_line::x1#10 ) (byte) bitmap_line_xdyi::x#0 ← (byte) bitmap_line::x1#4 (byte) bitmap_line_xdyi::y#0 ← (byte) bitmap_line::y1#5 (byte) bitmap_line_xdyi::x1#0 ← (byte) bitmap_line::x0#4 (byte) bitmap_line_xdyi::xd#0 ← (byte) bitmap_line::xd#5 (byte) bitmap_line_xdyi::yd#0 ← (byte) bitmap_line::yd#5 call bitmap_line_xdyi to:bitmap_line::@15 bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@8 to:bitmap_line::@return bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@3 (byte) bitmap_line::xd#6 ← phi( bitmap_line::@3/(byte) bitmap_line::xd#4 ) (byte) bitmap_line::yd#6 ← phi( bitmap_line::@3/(byte) bitmap_line::yd#2 ) (byte) bitmap_line::y0#5 ← phi( bitmap_line::@3/(byte) bitmap_line::y0#4 ) (byte) bitmap_line::x1#5 ← phi( bitmap_line::@3/(byte) bitmap_line::x1#10 ) (byte) bitmap_line::y1#6 ← phi( bitmap_line::@3/(byte) bitmap_line::y1#4 ) (byte) bitmap_line_ydxi::y#0 ← (byte) bitmap_line::y1#6 (byte) bitmap_line_ydxi::x#0 ← (byte) bitmap_line::x1#5 (byte) bitmap_line_ydxi::y1#0 ← (byte) bitmap_line::y0#5 (byte) bitmap_line_ydxi::yd#0 ← (byte) bitmap_line::yd#6 (byte) bitmap_line_ydxi::xd#0 ← (byte) bitmap_line::xd#6 call bitmap_line_ydxi to:bitmap_line::@16 bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@4 to:bitmap_line::@return bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@7 (byte) bitmap_line::yd#7 ← phi( bitmap_line::@7/(byte) bitmap_line::yd#1 ) (byte) bitmap_line::xd#7 ← phi( bitmap_line::@7/(byte) bitmap_line::xd#3 ) (byte) bitmap_line::x0#5 ← phi( bitmap_line::@7/(byte) bitmap_line::x0#11 ) (byte) bitmap_line::y1#7 ← phi( bitmap_line::@7/(byte) bitmap_line::y1#3 ) (byte) bitmap_line::x1#6 ← phi( bitmap_line::@7/(byte) bitmap_line::x1#11 ) (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#6 (byte) bitmap_line_xdyd::y#0 ← (byte) bitmap_line::y1#7 (byte) bitmap_line_xdyd::x1#0 ← (byte) bitmap_line::x0#5 (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#7 (byte) bitmap_line_xdyd::yd#0 ← (byte) bitmap_line::yd#7 call bitmap_line_xdyd to:bitmap_line::@17 bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@9 to:bitmap_line::@return bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@7 (byte) bitmap_line::xd#8 ← phi( bitmap_line::@7/(byte) bitmap_line::xd#3 ) (byte) bitmap_line::yd#8 ← phi( bitmap_line::@7/(byte) bitmap_line::yd#1 ) (byte) bitmap_line::y1#8 ← phi( bitmap_line::@7/(byte) bitmap_line::y1#3 ) (byte) bitmap_line::x0#6 ← phi( bitmap_line::@7/(byte) bitmap_line::x0#11 ) (byte) bitmap_line::y0#6 ← phi( bitmap_line::@7/(byte) bitmap_line::y0#3 ) (byte) bitmap_line_ydxd::y#0 ← (byte) bitmap_line::y0#6 (byte) bitmap_line_ydxd::x#0 ← (byte) bitmap_line::x0#6 (byte) bitmap_line_ydxd::y1#0 ← (byte) bitmap_line::y1#8 (byte) bitmap_line_ydxd::yd#0 ← (byte) bitmap_line::yd#8 (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#8 call bitmap_line_ydxd to:bitmap_line::@18 bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@10 to:bitmap_line::@return bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@1 (byte) bitmap_line::x1#13 ← phi( bitmap_line::@1/(byte) bitmap_line::x1#2 ) (byte) bitmap_line::x0#13 ← phi( bitmap_line::@1/(byte) bitmap_line::x0#2 ) (byte) bitmap_line::xd#9 ← phi( bitmap_line::@1/(byte) bitmap_line::xd#1 ) (byte) bitmap_line::y0#7 ← phi( bitmap_line::@1/(byte) bitmap_line::y0#1 ) (byte) bitmap_line::y1#9 ← phi( bitmap_line::@1/(byte) bitmap_line::y1#1 ) (byte~) bitmap_line::$17 ← (byte) bitmap_line::y1#9 - (byte) bitmap_line::y0#7 (byte) bitmap_line::yd#3 ← (byte~) bitmap_line::$17 (bool~) bitmap_line::$18 ← (byte) bitmap_line::yd#3 < (byte) bitmap_line::xd#9 if((bool~) bitmap_line::$18) goto bitmap_line::@13 to:bitmap_line::@14 bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@1 (byte) bitmap_line::x1#12 ← phi( bitmap_line::@1/(byte) bitmap_line::x1#2 ) (byte) bitmap_line::x0#12 ← phi( bitmap_line::@1/(byte) bitmap_line::x0#2 ) (byte) bitmap_line::xd#10 ← phi( bitmap_line::@1/(byte) bitmap_line::xd#1 ) (byte) bitmap_line::y1#10 ← phi( bitmap_line::@1/(byte) bitmap_line::y1#1 ) (byte) bitmap_line::y0#8 ← phi( bitmap_line::@1/(byte) bitmap_line::y0#1 ) (byte~) bitmap_line::$13 ← (byte) bitmap_line::y0#8 - (byte) bitmap_line::y1#10 (byte) bitmap_line::yd#4 ← (byte~) bitmap_line::$13 (bool~) bitmap_line::$14 ← (byte) bitmap_line::yd#4 < (byte) bitmap_line::xd#10 if((bool~) bitmap_line::$14) goto bitmap_line::@12 to:bitmap_line::@6 bitmap_line::@12: scope:[bitmap_line] from bitmap_line::@5 (byte) bitmap_line::yd#9 ← phi( bitmap_line::@5/(byte) bitmap_line::yd#4 ) (byte) bitmap_line::xd#11 ← phi( bitmap_line::@5/(byte) bitmap_line::xd#10 ) (byte) bitmap_line::x1#7 ← phi( bitmap_line::@5/(byte) bitmap_line::x1#12 ) (byte) bitmap_line::y0#9 ← phi( bitmap_line::@5/(byte) bitmap_line::y0#8 ) (byte) bitmap_line::x0#7 ← phi( bitmap_line::@5/(byte) bitmap_line::x0#12 ) (byte) bitmap_line_xdyd::x#1 ← (byte) bitmap_line::x0#7 (byte) bitmap_line_xdyd::y#1 ← (byte) bitmap_line::y0#9 (byte) bitmap_line_xdyd::x1#1 ← (byte) bitmap_line::x1#7 (byte) bitmap_line_xdyd::xd#1 ← (byte) bitmap_line::xd#11 (byte) bitmap_line_xdyd::yd#1 ← (byte) bitmap_line::yd#9 call bitmap_line_xdyd to:bitmap_line::@19 bitmap_line::@19: scope:[bitmap_line] from bitmap_line::@12 to:bitmap_line::@return bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5 (byte) bitmap_line::xd#12 ← phi( bitmap_line::@5/(byte) bitmap_line::xd#10 ) (byte) bitmap_line::yd#10 ← phi( bitmap_line::@5/(byte) bitmap_line::yd#4 ) (byte) bitmap_line::y0#10 ← phi( bitmap_line::@5/(byte) bitmap_line::y0#8 ) (byte) bitmap_line::x1#8 ← phi( bitmap_line::@5/(byte) bitmap_line::x1#12 ) (byte) bitmap_line::y1#11 ← phi( bitmap_line::@5/(byte) bitmap_line::y1#10 ) (byte) bitmap_line_ydxd::y#1 ← (byte) bitmap_line::y1#11 (byte) bitmap_line_ydxd::x#1 ← (byte) bitmap_line::x1#8 (byte) bitmap_line_ydxd::y1#1 ← (byte) bitmap_line::y0#10 (byte) bitmap_line_ydxd::yd#1 ← (byte) bitmap_line::yd#10 (byte) bitmap_line_ydxd::xd#1 ← (byte) bitmap_line::xd#12 call bitmap_line_ydxd to:bitmap_line::@20 bitmap_line::@20: scope:[bitmap_line] from bitmap_line::@6 to:bitmap_line::@return bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@11 (byte) bitmap_line::yd#11 ← phi( bitmap_line::@11/(byte) bitmap_line::yd#3 ) (byte) bitmap_line::xd#13 ← phi( bitmap_line::@11/(byte) bitmap_line::xd#9 ) (byte) bitmap_line::x1#9 ← phi( bitmap_line::@11/(byte) bitmap_line::x1#13 ) (byte) bitmap_line::y0#11 ← phi( bitmap_line::@11/(byte) bitmap_line::y0#7 ) (byte) bitmap_line::x0#8 ← phi( bitmap_line::@11/(byte) bitmap_line::x0#13 ) (byte) bitmap_line_xdyi::x#1 ← (byte) bitmap_line::x0#8 (byte) bitmap_line_xdyi::y#1 ← (byte) bitmap_line::y0#11 (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#9 (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#13 (byte) bitmap_line_xdyi::yd#1 ← (byte) bitmap_line::yd#11 call bitmap_line_xdyi to:bitmap_line::@21 bitmap_line::@21: scope:[bitmap_line] from bitmap_line::@13 to:bitmap_line::@return bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@11 (byte) bitmap_line::xd#14 ← phi( bitmap_line::@11/(byte) bitmap_line::xd#9 ) (byte) bitmap_line::yd#12 ← phi( bitmap_line::@11/(byte) bitmap_line::yd#3 ) (byte) bitmap_line::y1#12 ← phi( bitmap_line::@11/(byte) bitmap_line::y1#9 ) (byte) bitmap_line::x0#9 ← phi( bitmap_line::@11/(byte) bitmap_line::x0#13 ) (byte) bitmap_line::y0#12 ← phi( bitmap_line::@11/(byte) bitmap_line::y0#7 ) (byte) bitmap_line_ydxi::y#1 ← (byte) bitmap_line::y0#12 (byte) bitmap_line_ydxi::x#1 ← (byte) bitmap_line::x0#9 (byte) bitmap_line_ydxi::y1#1 ← (byte) bitmap_line::y1#12 (byte) bitmap_line_ydxi::yd#1 ← (byte) bitmap_line::yd#12 (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#14 call bitmap_line_ydxi to:bitmap_line::@22 bitmap_line::@22: scope:[bitmap_line] from bitmap_line::@14 to:bitmap_line::@return bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@18 bitmap_line::@19 bitmap_line::@20 bitmap_line::@21 bitmap_line::@22 return to:@return (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) bitmap_line_xdyi: scope:[bitmap_line_xdyi] from bitmap_line::@13 bitmap_line::@8 (byte) bitmap_line_xdyi::x1#6 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::x1#1 bitmap_line::@8/(byte) bitmap_line_xdyi::x1#0 ) (byte) bitmap_line_xdyi::xd#5 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::xd#1 bitmap_line::@8/(byte) bitmap_line_xdyi::xd#0 ) (byte) bitmap_line_xdyi::y#5 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::y#1 bitmap_line::@8/(byte) bitmap_line_xdyi::y#0 ) (byte) bitmap_line_xdyi::x#6 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::x#1 bitmap_line::@8/(byte) bitmap_line_xdyi::x#0 ) (byte) bitmap_line_xdyi::yd#2 ← phi( bitmap_line::@13/(byte) bitmap_line_xdyi::yd#1 bitmap_line::@8/(byte) bitmap_line_xdyi::yd#0 ) (byte~) bitmap_line_xdyi::$0 ← (byte) bitmap_line_xdyi::yd#2 >> (number) 1 (byte) bitmap_line_xdyi::e#0 ← (byte~) bitmap_line_xdyi::$0 to:bitmap_line_xdyi::@1 bitmap_line_xdyi::@1: scope:[bitmap_line_xdyi] from bitmap_line_xdyi bitmap_line_xdyi::@2 (byte) bitmap_line_xdyi::x1#5 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::x1#6 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::x1#2 ) (byte) bitmap_line_xdyi::xd#4 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::xd#5 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::xd#6 ) (byte) bitmap_line_xdyi::yd#4 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::yd#2 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::yd#5 ) (byte) bitmap_line_xdyi::e#5 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::e#0 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::e#6 ) (byte) bitmap_line_xdyi::y#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::y#5 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::y#6 ) (byte) bitmap_line_xdyi::x#3 ← phi( bitmap_line_xdyi/(byte) bitmap_line_xdyi::x#6 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::x#5 ) (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 call bitmap_plot to:bitmap_line_xdyi::@4 bitmap_line_xdyi::@4: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@1 (byte) bitmap_line_xdyi::y#7 ← phi( bitmap_line_xdyi::@1/(byte) bitmap_line_xdyi::y#3 ) (byte) bitmap_line_xdyi::x1#4 ← phi( bitmap_line_xdyi::@1/(byte) bitmap_line_xdyi::x1#5 ) (byte) bitmap_line_xdyi::xd#2 ← phi( bitmap_line_xdyi::@1/(byte) bitmap_line_xdyi::xd#4 ) (byte) bitmap_line_xdyi::yd#3 ← phi( bitmap_line_xdyi::@1/(byte) bitmap_line_xdyi::yd#4 ) (byte) bitmap_line_xdyi::e#3 ← phi( bitmap_line_xdyi::@1/(byte) bitmap_line_xdyi::e#5 ) (byte) bitmap_line_xdyi::x#4 ← phi( bitmap_line_xdyi::@1/(byte) bitmap_line_xdyi::x#3 ) (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#4 (byte~) bitmap_line_xdyi::$2 ← (byte) bitmap_line_xdyi::e#3 + (byte) bitmap_line_xdyi::yd#3 (byte) bitmap_line_xdyi::e#1 ← (byte~) bitmap_line_xdyi::$2 (bool~) bitmap_line_xdyi::$3 ← (byte) bitmap_line_xdyi::xd#2 < (byte) bitmap_line_xdyi::e#1 (bool~) bitmap_line_xdyi::$4 ← ! (bool~) bitmap_line_xdyi::$3 if((bool~) bitmap_line_xdyi::$4) goto bitmap_line_xdyi::@2 to:bitmap_line_xdyi::@3 bitmap_line_xdyi::@2: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@3 bitmap_line_xdyi::@4 (byte) bitmap_line_xdyi::xd#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::xd#3 bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::xd#2 ) (byte) bitmap_line_xdyi::yd#5 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::yd#6 bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::yd#3 ) (byte) bitmap_line_xdyi::e#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::e#2 bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::e#1 ) (byte) bitmap_line_xdyi::y#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::y#2 bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::y#7 ) (byte) bitmap_line_xdyi::x#5 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::x#7 bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::x#2 ) (byte) bitmap_line_xdyi::x1#2 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::x1#3 bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::x1#4 ) (number~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#2 + (number) 1 (bool~) bitmap_line_xdyi::$7 ← (byte) bitmap_line_xdyi::x#5 != (number~) bitmap_line_xdyi::$6 if((bool~) bitmap_line_xdyi::$7) goto bitmap_line_xdyi::@1 to:bitmap_line_xdyi::@return bitmap_line_xdyi::@3: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@4 (byte) bitmap_line_xdyi::yd#6 ← phi( bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::yd#3 ) (byte) bitmap_line_xdyi::x#7 ← phi( bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::x#2 ) (byte) bitmap_line_xdyi::x1#3 ← phi( bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::x1#4 ) (byte) bitmap_line_xdyi::xd#3 ← phi( bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::xd#2 ) (byte) bitmap_line_xdyi::e#4 ← phi( bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::e#1 ) (byte) bitmap_line_xdyi::y#4 ← phi( bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::y#7 ) (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#4 (byte~) bitmap_line_xdyi::$5 ← (byte) bitmap_line_xdyi::e#4 - (byte) bitmap_line_xdyi::xd#3 (byte) bitmap_line_xdyi::e#2 ← (byte~) bitmap_line_xdyi::$5 to:bitmap_line_xdyi::@2 bitmap_line_xdyi::@return: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@2 return to:@return (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) bitmap_line_xdyd: scope:[bitmap_line_xdyd] from bitmap_line::@12 bitmap_line::@9 (byte) bitmap_line_xdyd::x1#6 ← phi( bitmap_line::@12/(byte) bitmap_line_xdyd::x1#1 bitmap_line::@9/(byte) bitmap_line_xdyd::x1#0 ) (byte) bitmap_line_xdyd::xd#5 ← phi( bitmap_line::@12/(byte) bitmap_line_xdyd::xd#1 bitmap_line::@9/(byte) bitmap_line_xdyd::xd#0 ) (byte) bitmap_line_xdyd::y#5 ← phi( bitmap_line::@12/(byte) bitmap_line_xdyd::y#1 bitmap_line::@9/(byte) bitmap_line_xdyd::y#0 ) (byte) bitmap_line_xdyd::x#6 ← phi( bitmap_line::@12/(byte) bitmap_line_xdyd::x#1 bitmap_line::@9/(byte) bitmap_line_xdyd::x#0 ) (byte) bitmap_line_xdyd::yd#2 ← phi( bitmap_line::@12/(byte) bitmap_line_xdyd::yd#1 bitmap_line::@9/(byte) bitmap_line_xdyd::yd#0 ) (byte~) bitmap_line_xdyd::$0 ← (byte) bitmap_line_xdyd::yd#2 >> (number) 1 (byte) bitmap_line_xdyd::e#0 ← (byte~) bitmap_line_xdyd::$0 to:bitmap_line_xdyd::@1 bitmap_line_xdyd::@1: scope:[bitmap_line_xdyd] from bitmap_line_xdyd bitmap_line_xdyd::@2 (byte) bitmap_line_xdyd::x1#5 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::x1#6 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::x1#2 ) (byte) bitmap_line_xdyd::xd#4 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::xd#5 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::xd#6 ) (byte) bitmap_line_xdyd::yd#4 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::yd#2 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::yd#5 ) (byte) bitmap_line_xdyd::e#5 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::e#0 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::e#6 ) (byte) bitmap_line_xdyd::y#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::y#5 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::y#6 ) (byte) bitmap_line_xdyd::x#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::x#6 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::x#5 ) (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 call bitmap_plot to:bitmap_line_xdyd::@4 bitmap_line_xdyd::@4: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@1 (byte) bitmap_line_xdyd::y#7 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_line_xdyd::y#3 ) (byte) bitmap_line_xdyd::x1#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_line_xdyd::x1#5 ) (byte) bitmap_line_xdyd::xd#2 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_line_xdyd::xd#4 ) (byte) bitmap_line_xdyd::yd#3 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_line_xdyd::yd#4 ) (byte) bitmap_line_xdyd::e#3 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_line_xdyd::e#5 ) (byte) bitmap_line_xdyd::x#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_line_xdyd::x#3 ) (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#4 (byte~) bitmap_line_xdyd::$2 ← (byte) bitmap_line_xdyd::e#3 + (byte) bitmap_line_xdyd::yd#3 (byte) bitmap_line_xdyd::e#1 ← (byte~) bitmap_line_xdyd::$2 (bool~) bitmap_line_xdyd::$3 ← (byte) bitmap_line_xdyd::xd#2 < (byte) bitmap_line_xdyd::e#1 (bool~) bitmap_line_xdyd::$4 ← ! (bool~) bitmap_line_xdyd::$3 if((bool~) bitmap_line_xdyd::$4) goto bitmap_line_xdyd::@2 to:bitmap_line_xdyd::@3 bitmap_line_xdyd::@2: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@3 bitmap_line_xdyd::@4 (byte) bitmap_line_xdyd::xd#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::xd#3 bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::xd#2 ) (byte) bitmap_line_xdyd::yd#5 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::yd#6 bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::yd#3 ) (byte) bitmap_line_xdyd::e#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::e#2 bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::e#1 ) (byte) bitmap_line_xdyd::y#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::y#2 bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::y#7 ) (byte) bitmap_line_xdyd::x#5 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::x#7 bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::x#2 ) (byte) bitmap_line_xdyd::x1#2 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::x1#3 bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::x1#4 ) (number~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#2 + (number) 1 (bool~) bitmap_line_xdyd::$7 ← (byte) bitmap_line_xdyd::x#5 != (number~) bitmap_line_xdyd::$6 if((bool~) bitmap_line_xdyd::$7) goto bitmap_line_xdyd::@1 to:bitmap_line_xdyd::@return bitmap_line_xdyd::@3: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@4 (byte) bitmap_line_xdyd::yd#6 ← phi( bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::yd#3 ) (byte) bitmap_line_xdyd::x#7 ← phi( bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::x#2 ) (byte) bitmap_line_xdyd::x1#3 ← phi( bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::x1#4 ) (byte) bitmap_line_xdyd::xd#3 ← phi( bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::xd#2 ) (byte) bitmap_line_xdyd::e#4 ← phi( bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::e#1 ) (byte) bitmap_line_xdyd::y#4 ← phi( bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::y#7 ) (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#4 (byte~) bitmap_line_xdyd::$5 ← (byte) bitmap_line_xdyd::e#4 - (byte) bitmap_line_xdyd::xd#3 (byte) bitmap_line_xdyd::e#2 ← (byte~) bitmap_line_xdyd::$5 to:bitmap_line_xdyd::@2 bitmap_line_xdyd::@return: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@2 return to:@return (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) bitmap_line_ydxi: scope:[bitmap_line_ydxi] from bitmap_line::@14 bitmap_line::@4 (byte) bitmap_line_ydxi::y1#6 ← phi( bitmap_line::@14/(byte) bitmap_line_ydxi::y1#1 bitmap_line::@4/(byte) bitmap_line_ydxi::y1#0 ) (byte) bitmap_line_ydxi::yd#5 ← phi( bitmap_line::@14/(byte) bitmap_line_ydxi::yd#1 bitmap_line::@4/(byte) bitmap_line_ydxi::yd#0 ) (byte) bitmap_line_ydxi::y#6 ← phi( bitmap_line::@14/(byte) bitmap_line_ydxi::y#1 bitmap_line::@4/(byte) bitmap_line_ydxi::y#0 ) (byte) bitmap_line_ydxi::x#5 ← phi( bitmap_line::@14/(byte) bitmap_line_ydxi::x#1 bitmap_line::@4/(byte) bitmap_line_ydxi::x#0 ) (byte) bitmap_line_ydxi::xd#2 ← phi( bitmap_line::@14/(byte) bitmap_line_ydxi::xd#1 bitmap_line::@4/(byte) bitmap_line_ydxi::xd#0 ) (byte~) bitmap_line_ydxi::$0 ← (byte) bitmap_line_ydxi::xd#2 >> (number) 1 (byte) bitmap_line_ydxi::e#0 ← (byte~) bitmap_line_ydxi::$0 to:bitmap_line_ydxi::@1 bitmap_line_ydxi::@1: scope:[bitmap_line_ydxi] from bitmap_line_ydxi bitmap_line_ydxi::@2 (byte) bitmap_line_ydxi::y1#5 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::y1#6 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::y1#2 ) (byte) bitmap_line_ydxi::yd#4 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::yd#5 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::yd#6 ) (byte) bitmap_line_ydxi::xd#4 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::xd#2 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::xd#5 ) (byte) bitmap_line_ydxi::e#5 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::e#0 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::e#6 ) (byte) bitmap_line_ydxi::y#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::y#6 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::y#5 ) (byte) bitmap_line_ydxi::x#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::x#5 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::x#6 ) (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 call bitmap_plot to:bitmap_line_ydxi::@4 bitmap_line_ydxi::@4: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@1 (byte) bitmap_line_ydxi::x#7 ← phi( bitmap_line_ydxi::@1/(byte) bitmap_line_ydxi::x#3 ) (byte) bitmap_line_ydxi::y1#4 ← phi( bitmap_line_ydxi::@1/(byte) bitmap_line_ydxi::y1#5 ) (byte) bitmap_line_ydxi::yd#2 ← phi( bitmap_line_ydxi::@1/(byte) bitmap_line_ydxi::yd#4 ) (byte) bitmap_line_ydxi::xd#3 ← phi( bitmap_line_ydxi::@1/(byte) bitmap_line_ydxi::xd#4 ) (byte) bitmap_line_ydxi::e#3 ← phi( bitmap_line_ydxi::@1/(byte) bitmap_line_ydxi::e#5 ) (byte) bitmap_line_ydxi::y#4 ← phi( bitmap_line_ydxi::@1/(byte) bitmap_line_ydxi::y#3 ) (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#4 (byte~) bitmap_line_ydxi::$2 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#3 (byte) bitmap_line_ydxi::e#1 ← (byte~) bitmap_line_ydxi::$2 (bool~) bitmap_line_ydxi::$3 ← (byte) bitmap_line_ydxi::yd#2 < (byte) bitmap_line_ydxi::e#1 (bool~) bitmap_line_ydxi::$4 ← ! (bool~) bitmap_line_ydxi::$3 if((bool~) bitmap_line_ydxi::$4) goto bitmap_line_ydxi::@2 to:bitmap_line_ydxi::@3 bitmap_line_ydxi::@2: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@3 bitmap_line_ydxi::@4 (byte) bitmap_line_ydxi::yd#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::yd#3 bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::yd#2 ) (byte) bitmap_line_ydxi::xd#5 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::xd#6 bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::xd#3 ) (byte) bitmap_line_ydxi::e#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::e#2 bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::e#1 ) (byte) bitmap_line_ydxi::x#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::x#2 bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::x#7 ) (byte) bitmap_line_ydxi::y#5 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::y#7 bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::y#2 ) (byte) bitmap_line_ydxi::y1#2 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::y1#3 bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::y1#4 ) (number~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#2 + (number) 1 (bool~) bitmap_line_ydxi::$7 ← (byte) bitmap_line_ydxi::y#5 != (number~) bitmap_line_ydxi::$6 if((bool~) bitmap_line_ydxi::$7) goto bitmap_line_ydxi::@1 to:bitmap_line_ydxi::@return bitmap_line_ydxi::@3: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@4 (byte) bitmap_line_ydxi::xd#6 ← phi( bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::xd#3 ) (byte) bitmap_line_ydxi::y#7 ← phi( bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::y#2 ) (byte) bitmap_line_ydxi::y1#3 ← phi( bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::y1#4 ) (byte) bitmap_line_ydxi::yd#3 ← phi( bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::yd#2 ) (byte) bitmap_line_ydxi::e#4 ← phi( bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::e#1 ) (byte) bitmap_line_ydxi::x#4 ← phi( bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::x#7 ) (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#4 (byte~) bitmap_line_ydxi::$5 ← (byte) bitmap_line_ydxi::e#4 - (byte) bitmap_line_ydxi::yd#3 (byte) bitmap_line_ydxi::e#2 ← (byte~) bitmap_line_ydxi::$5 to:bitmap_line_ydxi::@2 bitmap_line_ydxi::@return: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@2 return to:@return (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) bitmap_line_ydxd: scope:[bitmap_line_ydxd] from bitmap_line::@10 bitmap_line::@6 (byte) bitmap_line_ydxd::y1#6 ← phi( bitmap_line::@10/(byte) bitmap_line_ydxd::y1#0 bitmap_line::@6/(byte) bitmap_line_ydxd::y1#1 ) (byte) bitmap_line_ydxd::yd#5 ← phi( bitmap_line::@10/(byte) bitmap_line_ydxd::yd#0 bitmap_line::@6/(byte) bitmap_line_ydxd::yd#1 ) (byte) bitmap_line_ydxd::y#7 ← phi( bitmap_line::@10/(byte) bitmap_line_ydxd::y#0 bitmap_line::@6/(byte) bitmap_line_ydxd::y#1 ) (byte) bitmap_line_ydxd::x#5 ← phi( bitmap_line::@10/(byte) bitmap_line_ydxd::x#0 bitmap_line::@6/(byte) bitmap_line_ydxd::x#1 ) (byte) bitmap_line_ydxd::xd#2 ← phi( bitmap_line::@10/(byte) bitmap_line_ydxd::xd#0 bitmap_line::@6/(byte) bitmap_line_ydxd::xd#1 ) (byte~) bitmap_line_ydxd::$0 ← (byte) bitmap_line_ydxd::xd#2 >> (number) 1 (byte) bitmap_line_ydxd::e#0 ← (byte~) bitmap_line_ydxd::$0 to:bitmap_line_ydxd::@1 bitmap_line_ydxd::@1: scope:[bitmap_line_ydxd] from bitmap_line_ydxd bitmap_line_ydxd::@2 (byte) bitmap_line_ydxd::y1#5 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::y1#6 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::y1#2 ) (byte) bitmap_line_ydxd::yd#4 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::yd#5 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::yd#6 ) (byte) bitmap_line_ydxd::xd#4 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::xd#2 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::xd#5 ) (byte) bitmap_line_ydxd::e#5 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::e#0 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::e#6 ) (byte) bitmap_line_ydxd::y#4 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::y#7 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::y#6 ) (byte) bitmap_line_ydxd::x#3 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::x#5 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::x#6 ) (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#4 call bitmap_plot to:bitmap_line_ydxd::@4 bitmap_line_ydxd::@4: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@1 (byte) bitmap_line_ydxd::x#7 ← phi( bitmap_line_ydxd::@1/(byte) bitmap_line_ydxd::x#3 ) (byte) bitmap_line_ydxd::y1#4 ← phi( bitmap_line_ydxd::@1/(byte) bitmap_line_ydxd::y1#5 ) (byte) bitmap_line_ydxd::yd#2 ← phi( bitmap_line_ydxd::@1/(byte) bitmap_line_ydxd::yd#4 ) (byte) bitmap_line_ydxd::xd#3 ← phi( bitmap_line_ydxd::@1/(byte) bitmap_line_ydxd::xd#4 ) (byte) bitmap_line_ydxd::e#3 ← phi( bitmap_line_ydxd::@1/(byte) bitmap_line_ydxd::e#5 ) (byte) bitmap_line_ydxd::y#5 ← phi( bitmap_line_ydxd::@1/(byte) bitmap_line_ydxd::y#4 ) (byte) bitmap_line_ydxd::y#2 ← (byte) bitmap_line_ydxd::y#5 (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 (byte~) bitmap_line_ydxd::$2 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#3 (byte) bitmap_line_ydxd::e#1 ← (byte~) bitmap_line_ydxd::$2 (bool~) bitmap_line_ydxd::$3 ← (byte) bitmap_line_ydxd::yd#2 < (byte) bitmap_line_ydxd::e#1 (bool~) bitmap_line_ydxd::$4 ← ! (bool~) bitmap_line_ydxd::$3 if((bool~) bitmap_line_ydxd::$4) goto bitmap_line_ydxd::@2 to:bitmap_line_ydxd::@3 bitmap_line_ydxd::@2: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@3 bitmap_line_ydxd::@4 (byte) bitmap_line_ydxd::yd#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::yd#3 bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::yd#2 ) (byte) bitmap_line_ydxd::xd#5 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::xd#6 bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::xd#3 ) (byte) bitmap_line_ydxd::e#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::e#2 bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::e#1 ) (byte) bitmap_line_ydxd::x#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::x#2 bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::x#7 ) (byte) bitmap_line_ydxd::y#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::y#8 bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::y#3 ) (byte) bitmap_line_ydxd::y1#2 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::y1#3 bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::y1#4 ) (number~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#2 + (number) 1 (bool~) bitmap_line_ydxd::$7 ← (byte) bitmap_line_ydxd::y#6 != (number~) bitmap_line_ydxd::$6 if((bool~) bitmap_line_ydxd::$7) goto bitmap_line_ydxd::@1 to:bitmap_line_ydxd::@return bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@4 (byte) bitmap_line_ydxd::xd#6 ← phi( bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::xd#3 ) (byte) bitmap_line_ydxd::y#8 ← phi( bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::y#3 ) (byte) bitmap_line_ydxd::y1#3 ← phi( bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::y1#4 ) (byte) bitmap_line_ydxd::yd#3 ← phi( bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::yd#2 ) (byte) bitmap_line_ydxd::e#4 ← phi( bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::e#1 ) (byte) bitmap_line_ydxd::x#4 ← phi( bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::x#7 ) (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#4 (byte~) bitmap_line_ydxd::$5 ← (byte) bitmap_line_ydxd::e#4 - (byte) bitmap_line_ydxd::yd#3 (byte) bitmap_line_ydxd::e#2 ← (byte~) bitmap_line_ydxd::$5 to:bitmap_line_ydxd::@2 bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 return to:@return (void()) main() main: scope:[main] from __start::@1 (byte) next#14 ← phi( __start::@1/(byte) next#11 ) *((const nomodify byte*) BORDER_COLOR) ← (number) 0 *((const nomodify byte*) BG_COLOR) ← (number) 0 *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3 *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(number) $3fff/(number) $40|(word)(const nomodify byte*) BITMAP&(number) $3fff/(number) $400 (byte*) bitmap_init::bitmap#0 ← (const nomodify byte*) BITMAP call bitmap_init to:main::@2 main::@2: scope:[main] from main (byte) next#13 ← phi( main/(byte) next#14 ) call bitmap_clear to:main::@3 main::@3: scope:[main] from main::@2 (byte) next#12 ← phi( main::@2/(byte) next#13 ) call init_screen to:main::@4 main::@4: scope:[main] from main::@3 (byte) next#10 ← phi( main::@3/(byte) next#12 ) to:main::@1 main::@1: scope:[main] from main::@4 main::@5 (byte) next#5 ← phi( main::@4/(byte) next#10 main::@5/(byte) next#0 ) (byte) bitmap_line::x0#0 ← (number) 0 (byte) bitmap_line::x1#0 ← (byte) next#5 (byte) bitmap_line::y0#0 ← (number) 0 (byte) bitmap_line::y1#0 ← (number) $64 call bitmap_line to:main::@5 main::@5: scope:[main] from main::@1 (byte) next#6 ← phi( main::@1/(byte) next#5 ) (byte) next#0 ← ++ (byte) next#6 if(true) goto main::@1 to:main::@return main::@return: scope:[main] from main::@5 (byte) next#7 ← phi( main::@5/(byte) next#0 ) (byte) next#1 ← (byte) next#7 return to:@return (void()) init_screen() init_screen: scope:[init_screen] from main::@3 (byte*) init_screen::c#0 ← (const nomodify byte*) SCREEN to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@2 (byte*) init_screen::c#2 ← phi( init_screen/(byte*) init_screen::c#0 init_screen::@2/(byte*) init_screen::c#1 ) (bool~) init_screen::$0 ← (byte*) init_screen::c#2 != (const nomodify byte*) SCREEN+(number) $400 if((bool~) init_screen::$0) goto init_screen::@2 to:init_screen::@return init_screen::@2: scope:[init_screen] from init_screen::@1 (byte*) init_screen::c#3 ← phi( init_screen::@1/(byte*) init_screen::c#2 ) *((byte*) init_screen::c#3) ← (number) $14 (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#3 to:init_screen::@1 init_screen::@return: scope:[init_screen] from init_screen::@1 return to:@return (void()) __start() __start: scope:[__start] from to:__start::__init1 __start::__init1: scope:[__start] from __start (byte) next#2 ← (byte) 0 to:__start::@1 __start::@1: scope:[__start] from __start::__init1 (byte) next#11 ← phi( __start::__init1/(byte) next#2 ) call main to:__start::@2 __start::@2: scope:[__start] from __start::@1 (byte) next#8 ← phi( __start::@1/(byte) next#1 ) (byte) next#3 ← (byte) next#8 to:__start::@return __start::@return: scope:[__start] from __start::@2 (byte) next#9 ← phi( __start::@2/(byte) next#3 ) (byte) next#4 ← (byte) next#9 return to:@return SYMBOL TABLE SSA (const nomodify byte*) BG_COLOR = (byte*)(number) $d021 (const nomodify byte*) BITMAP = (byte*)(number) $2000 (const nomodify byte*) BORDER_COLOR = (byte*)(number) $d020 (const nomodify byte*) D011 = (byte*)(number) $d011 (byte) MOS6526_CIA::INTERRUPT (byte) MOS6526_CIA::PORT_A (byte) MOS6526_CIA::PORT_A_DDR (byte) MOS6526_CIA::PORT_B (byte) MOS6526_CIA::PORT_B_DDR (byte) MOS6526_CIA::SERIAL_DATA (word) MOS6526_CIA::TIMER_A (byte) MOS6526_CIA::TIMER_A_CONTROL (word) MOS6526_CIA::TIMER_B (byte) MOS6526_CIA::TIMER_B_CONTROL (byte) MOS6526_CIA::TOD_10THS (byte) MOS6526_CIA::TOD_HOURS (byte) MOS6526_CIA::TOD_MIN (byte) MOS6526_CIA::TOD_SEC (byte) MOS6569_VICII::BG_COLOR (byte) MOS6569_VICII::BG_COLOR1 (byte) MOS6569_VICII::BG_COLOR2 (byte) MOS6569_VICII::BG_COLOR3 (byte) MOS6569_VICII::BORDER_COLOR (byte) MOS6569_VICII::CONTROL1 (byte) MOS6569_VICII::CONTROL2 (byte) MOS6569_VICII::IRQ_ENABLE (byte) MOS6569_VICII::IRQ_STATUS (byte) MOS6569_VICII::LIGHTPEN_X (byte) MOS6569_VICII::LIGHTPEN_Y (byte) MOS6569_VICII::MEMORY (byte) MOS6569_VICII::RASTER (byte) MOS6569_VICII::SPRITE0_COLOR (byte) MOS6569_VICII::SPRITE0_X (byte) MOS6569_VICII::SPRITE0_Y (byte) MOS6569_VICII::SPRITE1_COLOR (byte) MOS6569_VICII::SPRITE1_X (byte) MOS6569_VICII::SPRITE1_Y (byte) MOS6569_VICII::SPRITE2_COLOR (byte) MOS6569_VICII::SPRITE2_X (byte) MOS6569_VICII::SPRITE2_Y (byte) MOS6569_VICII::SPRITE3_COLOR (byte) MOS6569_VICII::SPRITE3_X (byte) MOS6569_VICII::SPRITE3_Y (byte) MOS6569_VICII::SPRITE4_COLOR (byte) MOS6569_VICII::SPRITE4_X (byte) MOS6569_VICII::SPRITE4_Y (byte) MOS6569_VICII::SPRITE5_COLOR (byte) MOS6569_VICII::SPRITE5_X (byte) MOS6569_VICII::SPRITE5_Y (byte) MOS6569_VICII::SPRITE6_COLOR (byte) MOS6569_VICII::SPRITE6_X (byte) MOS6569_VICII::SPRITE6_Y (byte) MOS6569_VICII::SPRITE7_COLOR (byte) MOS6569_VICII::SPRITE7_X (byte) MOS6569_VICII::SPRITE7_Y (byte) MOS6569_VICII::SPRITES_BG_COLLISION (byte) MOS6569_VICII::SPRITES_COLLISION (byte) MOS6569_VICII::SPRITES_ENABLE (byte) MOS6569_VICII::SPRITES_EXPAND_X (byte) MOS6569_VICII::SPRITES_EXPAND_Y (byte) MOS6569_VICII::SPRITES_MC (byte) MOS6569_VICII::SPRITES_MCOLOR1 (byte) MOS6569_VICII::SPRITES_MCOLOR2 (byte) MOS6569_VICII::SPRITES_PRIORITY (byte) MOS6569_VICII::SPRITES_XMSB (byte) MOS6581_SID::CH1_ATTACK_DECAY (byte) MOS6581_SID::CH1_CONTROL (word) MOS6581_SID::CH1_FREQ (word) MOS6581_SID::CH1_PULSE_WIDTH (byte) MOS6581_SID::CH1_SUSTAIN_RELEASE (byte) MOS6581_SID::CH2_ATTACK_DECAY (byte) MOS6581_SID::CH2_CONTROL (word) MOS6581_SID::CH2_FREQ (word) MOS6581_SID::CH2_PULSE_WIDTH (byte) MOS6581_SID::CH2_SUSTAIN_RELEASE (byte) MOS6581_SID::CH3_ATTACK_DECAY (byte) MOS6581_SID::CH3_CONTROL (byte) MOS6581_SID::CH3_ENV (word) MOS6581_SID::CH3_FREQ (byte) MOS6581_SID::CH3_OSC (word) MOS6581_SID::CH3_PULSE_WIDTH (byte) MOS6581_SID::CH3_SUSTAIN_RELEASE (byte) MOS6581_SID::FILTER_CUTOFF_HIGH (byte) MOS6581_SID::FILTER_CUTOFF_LOW (byte) MOS6581_SID::FILTER_SETUP (byte) MOS6581_SID::POT_X (byte) MOS6581_SID::POT_Y (byte) MOS6581_SID::VOLUME_FILTER_MODE (const nomodify byte*) SCREEN = (byte*)(number) $400 (const nomodify byte) VIC_BMM = (byte) $20 (const nomodify byte) VIC_DEN = (byte) $10 (const nomodify byte*) VIC_MEMORY = (byte*)(number) $d018 (const nomodify byte) VIC_RSEL = (byte) 8 (void()) __start() (label) __start::@1 (label) __start::@2 (label) __start::@return (label) __start::__init1 (void()) bitmap_clear() (bool~) bitmap_clear::$0 (bool~) bitmap_clear::$1 (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) (number~) bitmap_init::$0 (byte~) bitmap_init::$1 (number~) bitmap_init::$10 (bool~) bitmap_init::$11 (bool~) bitmap_init::$12 (byte*~) bitmap_init::$13 (bool~) bitmap_init::$14 (byte~) bitmap_init::$2 (bool~) bitmap_init::$3 (bool~) bitmap_init::$4 (bool~) bitmap_init::$5 (number~) bitmap_init::$6 (byte~) bitmap_init::$7 (number~) bitmap_init::$8 (byte~) 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::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_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (bool~) bitmap_line::$0 (byte~) bitmap_line::$1 (byte~) bitmap_line::$11 (bool~) bitmap_line::$12 (byte~) bitmap_line::$13 (bool~) bitmap_line::$14 (byte~) bitmap_line::$17 (bool~) bitmap_line::$18 (bool~) bitmap_line::$2 (byte~) bitmap_line::$3 (bool~) bitmap_line::$4 (byte~) bitmap_line::$7 (bool~) bitmap_line::$8 (label) bitmap_line::@1 (label) bitmap_line::@10 (label) bitmap_line::@11 (label) bitmap_line::@12 (label) bitmap_line::@13 (label) bitmap_line::@14 (label) bitmap_line::@15 (label) bitmap_line::@16 (label) bitmap_line::@17 (label) bitmap_line::@18 (label) bitmap_line::@19 (label) bitmap_line::@2 (label) bitmap_line::@20 (label) bitmap_line::@21 (label) bitmap_line::@22 (label) bitmap_line::@3 (label) bitmap_line::@4 (label) bitmap_line::@5 (label) bitmap_line::@6 (label) bitmap_line::@7 (label) bitmap_line::@8 (label) bitmap_line::@9 (label) bitmap_line::@return (byte) bitmap_line::x0 (byte) bitmap_line::x0#0 (byte) bitmap_line::x0#1 (byte) bitmap_line::x0#10 (byte) bitmap_line::x0#11 (byte) bitmap_line::x0#12 (byte) bitmap_line::x0#13 (byte) bitmap_line::x0#2 (byte) bitmap_line::x0#3 (byte) bitmap_line::x0#4 (byte) bitmap_line::x0#5 (byte) bitmap_line::x0#6 (byte) bitmap_line::x0#7 (byte) bitmap_line::x0#8 (byte) bitmap_line::x0#9 (byte) bitmap_line::x1 (byte) bitmap_line::x1#0 (byte) bitmap_line::x1#1 (byte) bitmap_line::x1#10 (byte) bitmap_line::x1#11 (byte) bitmap_line::x1#12 (byte) bitmap_line::x1#13 (byte) bitmap_line::x1#2 (byte) bitmap_line::x1#3 (byte) bitmap_line::x1#4 (byte) bitmap_line::x1#5 (byte) bitmap_line::x1#6 (byte) bitmap_line::x1#7 (byte) bitmap_line::x1#8 (byte) bitmap_line::x1#9 (byte) bitmap_line::xd (byte) bitmap_line::xd#0 (byte) bitmap_line::xd#1 (byte) bitmap_line::xd#10 (byte) bitmap_line::xd#11 (byte) bitmap_line::xd#12 (byte) bitmap_line::xd#13 (byte) bitmap_line::xd#14 (byte) bitmap_line::xd#2 (byte) bitmap_line::xd#3 (byte) bitmap_line::xd#4 (byte) bitmap_line::xd#5 (byte) bitmap_line::xd#6 (byte) bitmap_line::xd#7 (byte) bitmap_line::xd#8 (byte) bitmap_line::xd#9 (byte) bitmap_line::y0 (byte) bitmap_line::y0#0 (byte) bitmap_line::y0#1 (byte) bitmap_line::y0#10 (byte) bitmap_line::y0#11 (byte) bitmap_line::y0#12 (byte) bitmap_line::y0#13 (byte) bitmap_line::y0#2 (byte) bitmap_line::y0#3 (byte) bitmap_line::y0#4 (byte) bitmap_line::y0#5 (byte) bitmap_line::y0#6 (byte) bitmap_line::y0#7 (byte) bitmap_line::y0#8 (byte) bitmap_line::y0#9 (byte) bitmap_line::y1 (byte) bitmap_line::y1#0 (byte) bitmap_line::y1#1 (byte) bitmap_line::y1#10 (byte) bitmap_line::y1#11 (byte) bitmap_line::y1#12 (byte) bitmap_line::y1#13 (byte) bitmap_line::y1#2 (byte) bitmap_line::y1#3 (byte) bitmap_line::y1#4 (byte) bitmap_line::y1#5 (byte) bitmap_line::y1#6 (byte) bitmap_line::y1#7 (byte) bitmap_line::y1#8 (byte) bitmap_line::y1#9 (byte) bitmap_line::yd (byte) bitmap_line::yd#0 (byte) bitmap_line::yd#1 (byte) bitmap_line::yd#10 (byte) bitmap_line::yd#11 (byte) bitmap_line::yd#12 (byte) bitmap_line::yd#2 (byte) bitmap_line::yd#3 (byte) bitmap_line::yd#4 (byte) bitmap_line::yd#5 (byte) bitmap_line::yd#6 (byte) bitmap_line::yd#7 (byte) bitmap_line::yd#8 (byte) bitmap_line::yd#9 (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) (byte~) bitmap_line_xdyd::$0 (byte~) bitmap_line_xdyd::$2 (bool~) bitmap_line_xdyd::$3 (bool~) bitmap_line_xdyd::$4 (byte~) bitmap_line_xdyd::$5 (number~) bitmap_line_xdyd::$6 (bool~) bitmap_line_xdyd::$7 (label) bitmap_line_xdyd::@1 (label) bitmap_line_xdyd::@2 (label) bitmap_line_xdyd::@3 (label) bitmap_line_xdyd::@4 (label) bitmap_line_xdyd::@return (byte) bitmap_line_xdyd::e (byte) bitmap_line_xdyd::e#0 (byte) bitmap_line_xdyd::e#1 (byte) bitmap_line_xdyd::e#2 (byte) bitmap_line_xdyd::e#3 (byte) bitmap_line_xdyd::e#4 (byte) bitmap_line_xdyd::e#5 (byte) bitmap_line_xdyd::e#6 (byte) bitmap_line_xdyd::x (byte) bitmap_line_xdyd::x#0 (byte) bitmap_line_xdyd::x#1 (byte) bitmap_line_xdyd::x#2 (byte) bitmap_line_xdyd::x#3 (byte) bitmap_line_xdyd::x#4 (byte) bitmap_line_xdyd::x#5 (byte) bitmap_line_xdyd::x#6 (byte) bitmap_line_xdyd::x#7 (byte) bitmap_line_xdyd::x1 (byte) bitmap_line_xdyd::x1#0 (byte) bitmap_line_xdyd::x1#1 (byte) bitmap_line_xdyd::x1#2 (byte) bitmap_line_xdyd::x1#3 (byte) bitmap_line_xdyd::x1#4 (byte) bitmap_line_xdyd::x1#5 (byte) bitmap_line_xdyd::x1#6 (byte) bitmap_line_xdyd::xd (byte) bitmap_line_xdyd::xd#0 (byte) bitmap_line_xdyd::xd#1 (byte) bitmap_line_xdyd::xd#2 (byte) bitmap_line_xdyd::xd#3 (byte) bitmap_line_xdyd::xd#4 (byte) bitmap_line_xdyd::xd#5 (byte) bitmap_line_xdyd::xd#6 (byte) bitmap_line_xdyd::y (byte) bitmap_line_xdyd::y#0 (byte) bitmap_line_xdyd::y#1 (byte) bitmap_line_xdyd::y#2 (byte) bitmap_line_xdyd::y#3 (byte) bitmap_line_xdyd::y#4 (byte) bitmap_line_xdyd::y#5 (byte) bitmap_line_xdyd::y#6 (byte) bitmap_line_xdyd::y#7 (byte) bitmap_line_xdyd::yd (byte) bitmap_line_xdyd::yd#0 (byte) bitmap_line_xdyd::yd#1 (byte) bitmap_line_xdyd::yd#2 (byte) bitmap_line_xdyd::yd#3 (byte) bitmap_line_xdyd::yd#4 (byte) bitmap_line_xdyd::yd#5 (byte) bitmap_line_xdyd::yd#6 (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) (byte~) bitmap_line_xdyi::$0 (byte~) bitmap_line_xdyi::$2 (bool~) bitmap_line_xdyi::$3 (bool~) bitmap_line_xdyi::$4 (byte~) bitmap_line_xdyi::$5 (number~) bitmap_line_xdyi::$6 (bool~) bitmap_line_xdyi::$7 (label) bitmap_line_xdyi::@1 (label) bitmap_line_xdyi::@2 (label) bitmap_line_xdyi::@3 (label) bitmap_line_xdyi::@4 (label) bitmap_line_xdyi::@return (byte) bitmap_line_xdyi::e (byte) bitmap_line_xdyi::e#0 (byte) bitmap_line_xdyi::e#1 (byte) bitmap_line_xdyi::e#2 (byte) bitmap_line_xdyi::e#3 (byte) bitmap_line_xdyi::e#4 (byte) bitmap_line_xdyi::e#5 (byte) bitmap_line_xdyi::e#6 (byte) bitmap_line_xdyi::x (byte) bitmap_line_xdyi::x#0 (byte) bitmap_line_xdyi::x#1 (byte) bitmap_line_xdyi::x#2 (byte) bitmap_line_xdyi::x#3 (byte) bitmap_line_xdyi::x#4 (byte) bitmap_line_xdyi::x#5 (byte) bitmap_line_xdyi::x#6 (byte) bitmap_line_xdyi::x#7 (byte) bitmap_line_xdyi::x1 (byte) bitmap_line_xdyi::x1#0 (byte) bitmap_line_xdyi::x1#1 (byte) bitmap_line_xdyi::x1#2 (byte) bitmap_line_xdyi::x1#3 (byte) bitmap_line_xdyi::x1#4 (byte) bitmap_line_xdyi::x1#5 (byte) bitmap_line_xdyi::x1#6 (byte) bitmap_line_xdyi::xd (byte) bitmap_line_xdyi::xd#0 (byte) bitmap_line_xdyi::xd#1 (byte) bitmap_line_xdyi::xd#2 (byte) bitmap_line_xdyi::xd#3 (byte) bitmap_line_xdyi::xd#4 (byte) bitmap_line_xdyi::xd#5 (byte) bitmap_line_xdyi::xd#6 (byte) bitmap_line_xdyi::y (byte) bitmap_line_xdyi::y#0 (byte) bitmap_line_xdyi::y#1 (byte) bitmap_line_xdyi::y#2 (byte) bitmap_line_xdyi::y#3 (byte) bitmap_line_xdyi::y#4 (byte) bitmap_line_xdyi::y#5 (byte) bitmap_line_xdyi::y#6 (byte) bitmap_line_xdyi::y#7 (byte) bitmap_line_xdyi::yd (byte) bitmap_line_xdyi::yd#0 (byte) bitmap_line_xdyi::yd#1 (byte) bitmap_line_xdyi::yd#2 (byte) bitmap_line_xdyi::yd#3 (byte) bitmap_line_xdyi::yd#4 (byte) bitmap_line_xdyi::yd#5 (byte) bitmap_line_xdyi::yd#6 (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) (byte~) bitmap_line_ydxd::$0 (byte~) bitmap_line_ydxd::$2 (bool~) bitmap_line_ydxd::$3 (bool~) bitmap_line_ydxd::$4 (byte~) bitmap_line_ydxd::$5 (number~) bitmap_line_ydxd::$6 (bool~) bitmap_line_ydxd::$7 (label) bitmap_line_ydxd::@1 (label) bitmap_line_ydxd::@2 (label) bitmap_line_ydxd::@3 (label) bitmap_line_ydxd::@4 (label) bitmap_line_ydxd::@return (byte) bitmap_line_ydxd::e (byte) bitmap_line_ydxd::e#0 (byte) bitmap_line_ydxd::e#1 (byte) bitmap_line_ydxd::e#2 (byte) bitmap_line_ydxd::e#3 (byte) bitmap_line_ydxd::e#4 (byte) bitmap_line_ydxd::e#5 (byte) bitmap_line_ydxd::e#6 (byte) bitmap_line_ydxd::x (byte) bitmap_line_ydxd::x#0 (byte) bitmap_line_ydxd::x#1 (byte) bitmap_line_ydxd::x#2 (byte) bitmap_line_ydxd::x#3 (byte) bitmap_line_ydxd::x#4 (byte) bitmap_line_ydxd::x#5 (byte) bitmap_line_ydxd::x#6 (byte) bitmap_line_ydxd::x#7 (byte) bitmap_line_ydxd::xd (byte) bitmap_line_ydxd::xd#0 (byte) bitmap_line_ydxd::xd#1 (byte) bitmap_line_ydxd::xd#2 (byte) bitmap_line_ydxd::xd#3 (byte) bitmap_line_ydxd::xd#4 (byte) bitmap_line_ydxd::xd#5 (byte) bitmap_line_ydxd::xd#6 (byte) bitmap_line_ydxd::y (byte) bitmap_line_ydxd::y#0 (byte) bitmap_line_ydxd::y#1 (byte) bitmap_line_ydxd::y#2 (byte) bitmap_line_ydxd::y#3 (byte) bitmap_line_ydxd::y#4 (byte) bitmap_line_ydxd::y#5 (byte) bitmap_line_ydxd::y#6 (byte) bitmap_line_ydxd::y#7 (byte) bitmap_line_ydxd::y#8 (byte) bitmap_line_ydxd::y1 (byte) bitmap_line_ydxd::y1#0 (byte) bitmap_line_ydxd::y1#1 (byte) bitmap_line_ydxd::y1#2 (byte) bitmap_line_ydxd::y1#3 (byte) bitmap_line_ydxd::y1#4 (byte) bitmap_line_ydxd::y1#5 (byte) bitmap_line_ydxd::y1#6 (byte) bitmap_line_ydxd::yd (byte) bitmap_line_ydxd::yd#0 (byte) bitmap_line_ydxd::yd#1 (byte) bitmap_line_ydxd::yd#2 (byte) bitmap_line_ydxd::yd#3 (byte) bitmap_line_ydxd::yd#4 (byte) bitmap_line_ydxd::yd#5 (byte) bitmap_line_ydxd::yd#6 (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) (byte~) bitmap_line_ydxi::$0 (byte~) bitmap_line_ydxi::$2 (bool~) bitmap_line_ydxi::$3 (bool~) bitmap_line_ydxi::$4 (byte~) bitmap_line_ydxi::$5 (number~) bitmap_line_ydxi::$6 (bool~) bitmap_line_ydxi::$7 (label) bitmap_line_ydxi::@1 (label) bitmap_line_ydxi::@2 (label) bitmap_line_ydxi::@3 (label) bitmap_line_ydxi::@4 (label) bitmap_line_ydxi::@return (byte) bitmap_line_ydxi::e (byte) bitmap_line_ydxi::e#0 (byte) bitmap_line_ydxi::e#1 (byte) bitmap_line_ydxi::e#2 (byte) bitmap_line_ydxi::e#3 (byte) bitmap_line_ydxi::e#4 (byte) bitmap_line_ydxi::e#5 (byte) bitmap_line_ydxi::e#6 (byte) bitmap_line_ydxi::x (byte) bitmap_line_ydxi::x#0 (byte) bitmap_line_ydxi::x#1 (byte) bitmap_line_ydxi::x#2 (byte) bitmap_line_ydxi::x#3 (byte) bitmap_line_ydxi::x#4 (byte) bitmap_line_ydxi::x#5 (byte) bitmap_line_ydxi::x#6 (byte) bitmap_line_ydxi::x#7 (byte) bitmap_line_ydxi::xd (byte) bitmap_line_ydxi::xd#0 (byte) bitmap_line_ydxi::xd#1 (byte) bitmap_line_ydxi::xd#2 (byte) bitmap_line_ydxi::xd#3 (byte) bitmap_line_ydxi::xd#4 (byte) bitmap_line_ydxi::xd#5 (byte) bitmap_line_ydxi::xd#6 (byte) bitmap_line_ydxi::y (byte) bitmap_line_ydxi::y#0 (byte) bitmap_line_ydxi::y#1 (byte) bitmap_line_ydxi::y#2 (byte) bitmap_line_ydxi::y#3 (byte) bitmap_line_ydxi::y#4 (byte) bitmap_line_ydxi::y#5 (byte) bitmap_line_ydxi::y#6 (byte) bitmap_line_ydxi::y#7 (byte) bitmap_line_ydxi::y1 (byte) bitmap_line_ydxi::y1#0 (byte) bitmap_line_ydxi::y1#1 (byte) bitmap_line_ydxi::y1#2 (byte) bitmap_line_ydxi::y1#3 (byte) bitmap_line_ydxi::y1#4 (byte) bitmap_line_ydxi::y1#5 (byte) bitmap_line_ydxi::y1#6 (byte) bitmap_line_ydxi::yd (byte) bitmap_line_ydxi::yd#0 (byte) bitmap_line_ydxi::yd#1 (byte) bitmap_line_ydxi::yd#2 (byte) bitmap_line_ydxi::yd#3 (byte) bitmap_line_ydxi::yd#4 (byte) bitmap_line_ydxi::yd#5 (byte) bitmap_line_ydxi::yd#6 (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) (word~) bitmap_plot::$0 (byte~) bitmap_plot::$1 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter (byte*) bitmap_plot::plotter#0 (word) bitmap_plot::plotter_x (word) bitmap_plot::plotter_x#0 (word) bitmap_plot::plotter_y (word) bitmap_plot::plotter_y#0 (byte) bitmap_plot::x (byte) bitmap_plot::x#0 (byte) bitmap_plot::x#1 (byte) bitmap_plot::x#2 (byte) bitmap_plot::x#3 (byte) bitmap_plot::x#4 (byte) bitmap_plot::y (byte) bitmap_plot::y#0 (byte) bitmap_plot::y#1 (byte) bitmap_plot::y#2 (byte) bitmap_plot::y#3 (byte) bitmap_plot::y#4 (const to_nomodify byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) } (void()) init_screen() (bool~) init_screen::$0 (label) init_screen::@1 (label) init_screen::@2 (label) init_screen::@return (byte*) init_screen::c (byte*) init_screen::c#0 (byte*) init_screen::c#1 (byte*) init_screen::c#2 (byte*) init_screen::c#3 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (label) main::@5 (label) main::@return (byte) next (byte) next#0 (byte) next#1 (byte) next#10 (byte) next#11 (byte) next#12 (byte) next#13 (byte) next#14 (byte) next#2 (byte) next#3 (byte) next#4 (byte) next#5 (byte) next#6 (byte) next#7 (byte) next#8 (byte) next#9 Fixing inline constructor with bitmap_clear::$2 ← (byte)*(bitmap_plot_xhi + 0) w= (byte)*(bitmap_plot_xlo + 0) Fixing inline constructor with bitmap_plot::$2 ← (byte)*(bitmap_plot_xhi + bitmap_plot::x#4) w= (byte)*(bitmap_plot_xlo + bitmap_plot::x#4) Fixing inline constructor with bitmap_plot::$3 ← (byte)*(bitmap_plot_yhi + bitmap_plot::y#4) w= (byte)*(bitmap_plot_ylo + bitmap_plot::y#4) Successful SSA optimization Pass2FixInlineConstructors Adding number conversion cast (unumber) $f8 in (number~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (number) $f8 Adding number conversion cast (unumber) bitmap_init::$0 in (number~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (unumber)(number) $f8 Adding number conversion cast (unumber) 1 in (byte~) bitmap_init::$2 ← (byte) bitmap_init::bits#3 >> (number) 1 Adding number conversion cast (unumber) 0 in (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (number) 0 Adding number conversion cast (unumber) $80 in (byte) bitmap_init::bits#2 ← (number) $80 Adding number conversion cast (unumber) 7 in (number~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (number) 7 Adding number conversion cast (unumber) bitmap_init::$6 in (number~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (unumber)(number) 7 Adding number conversion cast (unumber) bitmap_init::$8 in (number~) bitmap_init::$8 ← (unumber~) bitmap_init::$6 | (byte~) bitmap_init::$7 Adding number conversion cast (unumber) 7 in (number~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (number) 7 Adding number conversion cast (unumber) bitmap_init::$10 in (number~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (unumber)(number) 7 Adding number conversion cast (unumber) 7 in (bool~) bitmap_init::$11 ← (unumber~) bitmap_init::$10 == (number) 7 Adding number conversion cast (unumber) $28*8 in (byte*~) bitmap_init::$13 ← (byte*) bitmap_init::yoffs#3 + (number) $28*(number) 8 Adding number conversion cast (unumber) 0 in (byte*~) bitmap_clear::$2 ← (byte)*((const to_nomodify byte*) bitmap_plot_xhi + (number) 0) w= (byte)*((const to_nomodify byte*) bitmap_plot_xlo + (number) 0) Adding number conversion cast (unumber) 0 in (byte*~) bitmap_clear::$2 ← (byte)*((const to_nomodify byte*) bitmap_plot_xhi + (unumber)(number) 0) w= (byte)*((const to_nomodify byte*) bitmap_plot_xlo + (number) 0) Adding number conversion cast (unumber) 0 in *((byte*) bitmap_clear::bitmap#2) ← (number) 0 Adding number conversion cast (unumber) 1 in (byte~) bitmap_line_xdyi::$0 ← (byte) bitmap_line_xdyi::yd#2 >> (number) 1 Adding number conversion cast (unumber) 1 in (number~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#2 + (number) 1 Adding number conversion cast (unumber) bitmap_line_xdyi::$6 in (number~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#2 + (unumber)(number) 1 Adding number conversion cast (unumber) 1 in (byte~) bitmap_line_xdyd::$0 ← (byte) bitmap_line_xdyd::yd#2 >> (number) 1 Adding number conversion cast (unumber) 1 in (number~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#2 + (number) 1 Adding number conversion cast (unumber) bitmap_line_xdyd::$6 in (number~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#2 + (unumber)(number) 1 Adding number conversion cast (unumber) 1 in (byte~) bitmap_line_ydxi::$0 ← (byte) bitmap_line_ydxi::xd#2 >> (number) 1 Adding number conversion cast (unumber) 1 in (number~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#2 + (number) 1 Adding number conversion cast (unumber) bitmap_line_ydxi::$6 in (number~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#2 + (unumber)(number) 1 Adding number conversion cast (unumber) 1 in (byte~) bitmap_line_ydxd::$0 ← (byte) bitmap_line_ydxd::xd#2 >> (number) 1 Adding number conversion cast (unumber) 1 in (number~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#2 + (number) 1 Adding number conversion cast (unumber) bitmap_line_ydxd::$6 in (number~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#2 + (unumber)(number) 1 Adding number conversion cast (unumber) 0 in *((const nomodify byte*) BORDER_COLOR) ← (number) 0 Adding number conversion cast (unumber) 0 in *((const nomodify byte*) BG_COLOR) ← (number) 0 Adding number conversion cast (unumber) VIC_BMM|VIC_DEN|VIC_RSEL|3 in *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3 Adding number conversion cast (unumber) 3 in *((const nomodify byte*) D011) ← ((unumber)) (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(number) 3 Adding number conversion cast (unumber) $3fff in *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(number) $3fff/(number) $40|(word)(const nomodify byte*) BITMAP&(number) $3fff/(number) $400 Adding number conversion cast (unumber) $3fff in *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(unumber)(number) $3fff/(number) $40|(word)(const nomodify byte*) BITMAP&(number) $3fff/(number) $400 Adding number conversion cast (unumber) 0 in (byte) bitmap_line::x0#0 ← (number) 0 Adding number conversion cast (unumber) 0 in (byte) bitmap_line::y0#0 ← (number) 0 Adding number conversion cast (unumber) $64 in (byte) bitmap_line::y1#0 ← (number) $64 Adding number conversion cast (unumber) $400 in (bool~) init_screen::$0 ← (byte*) init_screen::c#2 != (const nomodify byte*) SCREEN+(number) $400 Adding number conversion cast (unumber) $14 in *((byte*) init_screen::c#3) ← (number) $14 Successful SSA optimization PassNAddNumberTypeConversions Adding number conversion cast (unumber) $40 in *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(unumber)(number) $3fff/(number) $40|(word)(const nomodify byte*) BITMAP&(unumber)(number) $3fff/(number) $400 Adding number conversion cast (unumber) $400 in *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(unumber)(number) $3fff/(unumber)(number) $40|(word)(const nomodify byte*) BITMAP&(unumber)(number) $3fff/(number) $400 Successful SSA optimization PassNAddNumberTypeConversions Inlining cast (byte) bitmap_init::bits#2 ← (unumber)(number) $80 Inlining cast *((byte*) bitmap_clear::bitmap#2) ← (unumber)(number) 0 Inlining cast (byte*) bitmap_plot::plotter#0 ← (byte*)(word~) bitmap_plot::$0 Inlining cast *((const nomodify byte*) BORDER_COLOR) ← (unumber)(number) 0 Inlining cast *((const nomodify byte*) BG_COLOR) ← (unumber)(number) 0 Inlining cast *((const nomodify byte*) D011) ← (unumber)(const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(unumber)(number) 3 Inlining cast (byte) bitmap_line::x0#0 ← (unumber)(number) 0 Inlining cast (byte) bitmap_line::y0#0 ← (unumber)(number) 0 Inlining cast (byte) bitmap_line::y1#0 ← (unumber)(number) $64 Inlining cast *((byte*) init_screen::c#3) ← (unumber)(number) $14 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (byte*) 53280 Simplifying constant pointer cast (byte*) 53281 Simplifying constant pointer cast (byte*) 53265 Simplifying constant pointer cast (byte*) 53272 Simplifying constant pointer cast (byte*) 1024 Simplifying constant pointer cast (byte*) 8192 Simplifying constant integer cast $f8 Simplifying constant integer cast 1 Simplifying constant integer cast 0 Simplifying constant integer cast $80 Simplifying constant pointer cast (byte*) 0 Simplifying constant integer cast 7 Simplifying constant integer cast 7 Simplifying constant integer cast 7 Simplifying constant integer cast *((const to_nomodify byte*) bitmap_plot_xhi + (unumber)(number) 0) Simplifying constant integer cast 0 Simplifying constant integer cast *((const to_nomodify byte*) bitmap_plot_xlo + (unumber)(number) 0) Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) Simplifying constant integer cast *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) Simplifying constant integer cast *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) Simplifying constant integer cast *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 1 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(unumber)(number) 3 Simplifying constant integer cast 3 Simplifying constant integer cast $3fff Simplifying constant integer cast $40 Simplifying constant integer cast $3fff Simplifying constant integer cast $400 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast $64 Simplifying constant integer cast $400 Simplifying constant integer cast $14 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) $f8 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $80 Finalized unsigned number type (byte) 7 Finalized unsigned number type (byte) 7 Finalized unsigned number type (byte) 7 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 1 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 3 Finalized unsigned number type (word) $3fff Finalized unsigned number type (byte) $40 Finalized unsigned number type (word) $3fff Finalized unsigned number type (word) $400 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $64 Finalized unsigned number type (word) $400 Finalized unsigned number type (byte) $14 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to byte in (unumber~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 Inferred type updated to byte in (unumber~) bitmap_init::$6 ← (byte) bitmap_init::y#2 & (byte) 7 Inferred type updated to byte in (unumber~) bitmap_init::$8 ← (byte~) bitmap_init::$6 | (byte~) bitmap_init::$7 Inferred type updated to byte in (unumber~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 Inferred type updated to byte in (unumber~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#2 + (byte) 1 Inferred type updated to byte in (unumber~) bitmap_line_xdyd::$6 ← (byte) bitmap_line_xdyd::x1#2 + (byte) 1 Inferred type updated to byte in (unumber~) bitmap_line_ydxi::$6 ← (byte) bitmap_line_ydxi::y1#2 + (byte) 1 Inferred type updated to byte in (unumber~) bitmap_line_ydxd::$6 ← (byte) bitmap_line_ydxd::y1#2 + (byte) 1 Adding pointer type conversion cast (byte*) bitmap_clear::$2 in (byte*~) bitmap_clear::$2 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) 0) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) 0) Successful SSA optimization PassNAddTypeConversionAssignment Inversing boolean not [12] (bool~) bitmap_init::$4 ← (byte) bitmap_init::bits#1 != (byte) 0 from [11] (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (byte) 0 Inversing boolean not [31] (bool~) bitmap_init::$12 ← (byte~) bitmap_init::$10 != (byte) 7 from [30] (bool~) bitmap_init::$11 ← (byte~) bitmap_init::$10 == (byte) 7 Inversing boolean not [172] (bool~) bitmap_line_xdyi::$4 ← (byte) bitmap_line_xdyi::xd#2 >= (byte) bitmap_line_xdyi::e#1 from [171] (bool~) bitmap_line_xdyi::$3 ← (byte) bitmap_line_xdyi::xd#2 < (byte) bitmap_line_xdyi::e#1 Inversing boolean not [195] (bool~) bitmap_line_xdyd::$4 ← (byte) bitmap_line_xdyd::xd#2 >= (byte) bitmap_line_xdyd::e#1 from [194] (bool~) bitmap_line_xdyd::$3 ← (byte) bitmap_line_xdyd::xd#2 < (byte) bitmap_line_xdyd::e#1 Inversing boolean not [218] (bool~) bitmap_line_ydxi::$4 ← (byte) bitmap_line_ydxi::yd#2 >= (byte) bitmap_line_ydxi::e#1 from [217] (bool~) bitmap_line_ydxi::$3 ← (byte) bitmap_line_ydxi::yd#2 < (byte) bitmap_line_ydxi::e#1 Inversing boolean not [242] (bool~) bitmap_line_ydxd::$4 ← (byte) bitmap_line_ydxd::yd#2 >= (byte) bitmap_line_ydxd::e#1 from [241] (bool~) bitmap_line_ydxd::$3 ← (byte) bitmap_line_ydxd::yd#2 < (byte) bitmap_line_ydxd::e#1 Successful SSA optimization Pass2UnaryNotSimplification Alias bitmap_init::bits#1 = bitmap_init::$2 Alias bitmap_init::x#2 = bitmap_init::x#4 Alias bitmap_init::bitmap#1 = bitmap_init::bitmap#4 Alias bitmap_init::yoffs#2 = bitmap_init::yoffs#3 Alias bitmap_init::y#2 = bitmap_init::y#4 Alias bitmap_init::yoffs#1 = bitmap_init::$13 Alias bitmap_clear::bitmap#0 = bitmap_clear::$2 Alias bitmap_clear::y#2 = bitmap_clear::y#3 Alias bitmap_clear::bitmap#1 = bitmap_clear::bitmap#4 Alias bitmap_plot::plotter_x#0 = bitmap_plot::$2 Alias bitmap_plot::plotter_y#0 = bitmap_plot::$3 Alias bitmap_line::x1#1 = bitmap_line::x1#2 bitmap_line::x1#3 bitmap_line::x1#11 bitmap_line::x1#10 bitmap_line::x1#4 bitmap_line::x1#5 bitmap_line::x1#6 bitmap_line::x1#13 bitmap_line::x1#12 bitmap_line::x1#7 bitmap_line::x1#8 bitmap_line::x1#9 Alias bitmap_line::x0#1 = bitmap_line::x0#2 bitmap_line::x0#3 bitmap_line::x0#11 bitmap_line::x0#10 bitmap_line::x0#4 bitmap_line::x0#5 bitmap_line::x0#6 bitmap_line::x0#13 bitmap_line::x0#12 bitmap_line::x0#7 bitmap_line::x0#8 bitmap_line::x0#9 Alias bitmap_line::y0#1 = bitmap_line::y0#13 bitmap_line::y0#2 bitmap_line::y0#3 bitmap_line::y0#4 bitmap_line::y0#5 bitmap_line::y0#6 bitmap_line::y0#7 bitmap_line::y0#8 bitmap_line::y0#9 bitmap_line::y0#10 bitmap_line::y0#11 bitmap_line::y0#12 Alias bitmap_line::y1#1 = bitmap_line::y1#13 bitmap_line::y1#2 bitmap_line::y1#3 bitmap_line::y1#4 bitmap_line::y1#5 bitmap_line::y1#6 bitmap_line::y1#7 bitmap_line::y1#8 bitmap_line::y1#9 bitmap_line::y1#10 bitmap_line::y1#11 bitmap_line::y1#12 Alias bitmap_line::xd#1 = bitmap_line::$11 bitmap_line::xd#9 bitmap_line::xd#10 bitmap_line::xd#11 bitmap_line::xd#12 bitmap_line::xd#13 bitmap_line::xd#14 Alias bitmap_line::xd#2 = bitmap_line::$1 bitmap_line::xd#3 bitmap_line::xd#4 bitmap_line::xd#5 bitmap_line::xd#6 bitmap_line::xd#7 bitmap_line::xd#8 Alias bitmap_line::yd#1 = bitmap_line::$7 bitmap_line::yd#7 bitmap_line::yd#8 Alias bitmap_line::yd#2 = bitmap_line::$3 bitmap_line::yd#5 bitmap_line::yd#6 Alias bitmap_line::yd#11 = bitmap_line::yd#3 bitmap_line::$17 bitmap_line::yd#12 Alias bitmap_line::yd#10 = bitmap_line::yd#4 bitmap_line::$13 bitmap_line::yd#9 Alias bitmap_line_xdyi::e#0 = bitmap_line_xdyi::$0 Alias bitmap_line_xdyi::x#3 = bitmap_line_xdyi::x#4 Alias bitmap_line_xdyi::e#3 = bitmap_line_xdyi::e#5 Alias bitmap_line_xdyi::yd#3 = bitmap_line_xdyi::yd#4 bitmap_line_xdyi::yd#6 Alias bitmap_line_xdyi::xd#2 = bitmap_line_xdyi::xd#4 bitmap_line_xdyi::xd#3 Alias bitmap_line_xdyi::x1#3 = bitmap_line_xdyi::x1#4 bitmap_line_xdyi::x1#5 Alias bitmap_line_xdyi::y#3 = bitmap_line_xdyi::y#7 bitmap_line_xdyi::y#4 Alias bitmap_line_xdyi::e#1 = bitmap_line_xdyi::$2 bitmap_line_xdyi::e#4 Alias bitmap_line_xdyi::x#2 = bitmap_line_xdyi::x#7 Alias bitmap_line_xdyi::e#2 = bitmap_line_xdyi::$5 Alias bitmap_line_xdyd::e#0 = bitmap_line_xdyd::$0 Alias bitmap_line_xdyd::x#3 = bitmap_line_xdyd::x#4 Alias bitmap_line_xdyd::e#3 = bitmap_line_xdyd::e#5 Alias bitmap_line_xdyd::yd#3 = bitmap_line_xdyd::yd#4 bitmap_line_xdyd::yd#6 Alias bitmap_line_xdyd::xd#2 = bitmap_line_xdyd::xd#4 bitmap_line_xdyd::xd#3 Alias bitmap_line_xdyd::x1#3 = bitmap_line_xdyd::x1#4 bitmap_line_xdyd::x1#5 Alias bitmap_line_xdyd::y#3 = bitmap_line_xdyd::y#7 bitmap_line_xdyd::y#4 Alias bitmap_line_xdyd::e#1 = bitmap_line_xdyd::$2 bitmap_line_xdyd::e#4 Alias bitmap_line_xdyd::x#2 = bitmap_line_xdyd::x#7 Alias bitmap_line_xdyd::e#2 = bitmap_line_xdyd::$5 Alias bitmap_line_ydxi::e#0 = bitmap_line_ydxi::$0 Alias bitmap_line_ydxi::y#3 = bitmap_line_ydxi::y#4 Alias bitmap_line_ydxi::e#3 = bitmap_line_ydxi::e#5 Alias bitmap_line_ydxi::xd#3 = bitmap_line_ydxi::xd#4 bitmap_line_ydxi::xd#6 Alias bitmap_line_ydxi::yd#2 = bitmap_line_ydxi::yd#4 bitmap_line_ydxi::yd#3 Alias bitmap_line_ydxi::y1#3 = bitmap_line_ydxi::y1#4 bitmap_line_ydxi::y1#5 Alias bitmap_line_ydxi::x#3 = bitmap_line_ydxi::x#7 bitmap_line_ydxi::x#4 Alias bitmap_line_ydxi::e#1 = bitmap_line_ydxi::$2 bitmap_line_ydxi::e#4 Alias bitmap_line_ydxi::y#2 = bitmap_line_ydxi::y#7 Alias bitmap_line_ydxi::e#2 = bitmap_line_ydxi::$5 Alias bitmap_line_ydxd::e#0 = bitmap_line_ydxd::$0 Alias bitmap_line_ydxd::y#2 = bitmap_line_ydxd::y#5 bitmap_line_ydxd::y#4 Alias bitmap_line_ydxd::e#3 = bitmap_line_ydxd::e#5 Alias bitmap_line_ydxd::xd#3 = bitmap_line_ydxd::xd#4 bitmap_line_ydxd::xd#6 Alias bitmap_line_ydxd::yd#2 = bitmap_line_ydxd::yd#4 bitmap_line_ydxd::yd#3 Alias bitmap_line_ydxd::y1#3 = bitmap_line_ydxd::y1#4 bitmap_line_ydxd::y1#5 Alias bitmap_line_ydxd::x#3 = bitmap_line_ydxd::x#7 bitmap_line_ydxd::x#4 Alias bitmap_line_ydxd::e#1 = bitmap_line_ydxd::$2 bitmap_line_ydxd::e#4 Alias bitmap_line_ydxd::y#3 = bitmap_line_ydxd::y#8 Alias bitmap_line_ydxd::e#2 = bitmap_line_ydxd::$5 Alias next#10 = next#13 next#14 next#12 Alias next#5 = next#6 Alias next#0 = next#7 next#1 Alias init_screen::c#2 = init_screen::c#3 Alias next#11 = next#2 Alias next#3 = next#8 next#9 next#4 Successful SSA optimization Pass2AliasElimination Alias bitmap_init::x#2 = bitmap_init::x#3 Alias bitmap_init::bitmap#1 = bitmap_init::bitmap#3 Alias bitmap_init::y#2 = bitmap_init::y#3 Alias bitmap_line_xdyi::x1#2 = bitmap_line_xdyi::x1#3 Alias bitmap_line_xdyi::x#2 = bitmap_line_xdyi::x#5 Alias bitmap_line_xdyi::yd#3 = bitmap_line_xdyi::yd#5 Alias bitmap_line_xdyi::xd#2 = bitmap_line_xdyi::xd#6 Alias bitmap_line_xdyd::x1#2 = bitmap_line_xdyd::x1#3 Alias bitmap_line_xdyd::x#2 = bitmap_line_xdyd::x#5 Alias bitmap_line_xdyd::yd#3 = bitmap_line_xdyd::yd#5 Alias bitmap_line_xdyd::xd#2 = bitmap_line_xdyd::xd#6 Alias bitmap_line_ydxi::y1#2 = bitmap_line_ydxi::y1#3 Alias bitmap_line_ydxi::y#2 = bitmap_line_ydxi::y#5 Alias bitmap_line_ydxi::xd#3 = bitmap_line_ydxi::xd#5 Alias bitmap_line_ydxi::yd#2 = bitmap_line_ydxi::yd#6 Alias bitmap_line_ydxd::y1#2 = bitmap_line_ydxd::y1#3 Alias bitmap_line_ydxd::y#3 = bitmap_line_ydxd::y#6 Alias bitmap_line_ydxd::xd#3 = bitmap_line_ydxd::xd#5 Alias bitmap_line_ydxd::yd#2 = bitmap_line_ydxd::yd#6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte*) bitmap_init::bitmap#2 (byte*) bitmap_init::bitmap#0 Identical Phi Values (byte*) bitmap_init::bitmap#1 (byte*) bitmap_init::bitmap#2 Identical Phi Values (byte) bitmap_clear::y#2 (byte) bitmap_clear::y#4 Identical Phi Values (byte) bitmap_line::x0#1 (byte) bitmap_line::x0#0 Identical Phi Values (byte) bitmap_line::x1#1 (byte) bitmap_line::x1#0 Identical Phi Values (byte) bitmap_line::y0#1 (byte) bitmap_line::y0#0 Identical Phi Values (byte) bitmap_line::y1#1 (byte) bitmap_line::y1#0 Identical Phi Values (byte) bitmap_line_xdyi::yd#3 (byte) bitmap_line_xdyi::yd#2 Identical Phi Values (byte) bitmap_line_xdyi::xd#2 (byte) bitmap_line_xdyi::xd#5 Identical Phi Values (byte) bitmap_line_xdyi::x1#2 (byte) bitmap_line_xdyi::x1#6 Identical Phi Values (byte) bitmap_line_xdyd::yd#3 (byte) bitmap_line_xdyd::yd#2 Identical Phi Values (byte) bitmap_line_xdyd::xd#2 (byte) bitmap_line_xdyd::xd#5 Identical Phi Values (byte) bitmap_line_xdyd::x1#2 (byte) bitmap_line_xdyd::x1#6 Identical Phi Values (byte) bitmap_line_ydxi::xd#3 (byte) bitmap_line_ydxi::xd#2 Identical Phi Values (byte) bitmap_line_ydxi::yd#2 (byte) bitmap_line_ydxi::yd#5 Identical Phi Values (byte) bitmap_line_ydxi::y1#2 (byte) bitmap_line_ydxi::y1#6 Identical Phi Values (byte) bitmap_line_ydxd::xd#3 (byte) bitmap_line_ydxd::xd#2 Identical Phi Values (byte) bitmap_line_ydxd::yd#2 (byte) bitmap_line_ydxd::yd#5 Identical Phi Values (byte) bitmap_line_ydxd::y1#2 (byte) bitmap_line_ydxd::y1#6 Identical Phi Values (byte) next#10 (byte) next#11 Identical Phi Values (byte) next#3 (byte) next#0 Successful SSA optimization Pass2IdenticalPhiElimination Identified duplicate assignment right side [29] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 Successful SSA optimization Pass2DuplicateRValueIdentification Simple Condition (bool~) bitmap_init::$4 [11] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@2 Simple Condition (bool~) bitmap_init::$5 [15] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 Simple Condition (bool~) bitmap_init::$12 [28] if((byte~) bitmap_init::$10!=(byte) 7) goto bitmap_init::@6 Simple Condition (bool~) bitmap_init::$14 [32] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 Simple Condition (bool~) bitmap_clear::$0 [45] if((byte) bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 Simple Condition (bool~) bitmap_clear::$1 [48] if((byte) bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 Simple Condition (bool~) bitmap_line::$0 [62] if((byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 Simple Condition (bool~) bitmap_line::$12 [65] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@11 Simple Condition (bool~) bitmap_line::$2 [68] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@7 Simple Condition (bool~) bitmap_line::$8 [71] if((byte) bitmap_line::yd#1<(byte) bitmap_line::xd#2) goto bitmap_line::@9 Simple Condition (bool~) bitmap_line::$4 [74] if((byte) bitmap_line::yd#2<(byte) bitmap_line::xd#2) goto bitmap_line::@8 Simple Condition (bool~) bitmap_line::$18 [101] if((byte) bitmap_line::yd#11<(byte) bitmap_line::xd#1) goto bitmap_line::@13 Simple Condition (bool~) bitmap_line::$14 [104] if((byte) bitmap_line::yd#10<(byte) bitmap_line::xd#1) goto bitmap_line::@12 Simple Condition (bool~) bitmap_line_xdyi::$4 [139] if((byte) bitmap_line_xdyi::xd#5>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 Simple Condition (bool~) bitmap_line_xdyi::$7 [143] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 Simple Condition (bool~) bitmap_line_xdyd::$4 [156] if((byte) bitmap_line_xdyd::xd#5>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 Simple Condition (bool~) bitmap_line_xdyd::$7 [160] if((byte) bitmap_line_xdyd::x#2!=(byte~) bitmap_line_xdyd::$6) goto bitmap_line_xdyd::@1 Simple Condition (bool~) bitmap_line_ydxi::$4 [173] if((byte) bitmap_line_ydxi::yd#5>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 Simple Condition (bool~) bitmap_line_ydxi::$7 [177] if((byte) bitmap_line_ydxi::y#2!=(byte~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1 Simple Condition (bool~) bitmap_line_ydxd::$4 [190] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 Simple Condition (bool~) bitmap_line_ydxd::$7 [194] if((byte) bitmap_line_ydxd::y#3!=(byte~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1 Simple Condition (bool~) init_screen::$0 [219] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 Successful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte) bitmap_init::bits#0 = $80 Constant (const byte) bitmap_init::x#0 = 0 Constant (const byte) bitmap_init::bits#2 = $80 Constant (const byte*) bitmap_init::yoffs#0 = (byte*) 0 Constant (const byte) bitmap_init::y#0 = 0 Constant (const byte) bitmap_clear::y#0 = 0 Constant (const byte) bitmap_clear::x#0 = 0 Constant (const byte) bitmap_line::xd#0 = 0 Constant (const byte) bitmap_line::yd#0 = 0 Constant (const byte*) bitmap_init::bitmap#0 = BITMAP Constant (const byte) bitmap_line::x0#0 = 0 Constant (const byte) bitmap_line::y0#0 = 0 Constant (const byte) bitmap_line::y1#0 = $64 Constant (const byte*) init_screen::c#0 = SCREEN Constant (const byte) next#11 = 0 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) bitmap_line_xdyi::y#0 = bitmap_line::y1#0 Constant (const byte) bitmap_line_xdyi::x1#0 = bitmap_line::x0#0 Constant (const byte) bitmap_line_ydxi::y#0 = bitmap_line::y1#0 Constant (const byte) bitmap_line_ydxi::y1#0 = bitmap_line::y0#0 Constant (const byte) bitmap_line_xdyd::y#0 = bitmap_line::y1#0 Constant (const byte) bitmap_line_xdyd::x1#0 = bitmap_line::x0#0 Constant (const byte) bitmap_line_ydxd::y#0 = bitmap_line::y0#0 Constant (const byte) bitmap_line_ydxd::x#0 = bitmap_line::x0#0 Constant (const byte) bitmap_line_ydxd::y1#0 = bitmap_line::y1#0 Constant (const byte) bitmap_line_xdyd::x#1 = bitmap_line::x0#0 Constant (const byte) bitmap_line_xdyd::y#1 = bitmap_line::y0#0 Constant (const byte) bitmap_line_ydxd::y#1 = bitmap_line::y1#0 Constant (const byte) bitmap_line_ydxd::y1#1 = bitmap_line::y0#0 Constant (const byte) bitmap_line_xdyi::x#1 = bitmap_line::x0#0 Constant (const byte) bitmap_line_xdyi::y#1 = bitmap_line::y0#0 Constant (const byte) bitmap_line_ydxi::y#1 = bitmap_line::y0#0 Constant (const byte) bitmap_line_ydxi::x#1 = bitmap_line::x0#0 Constant (const byte) bitmap_line_ydxi::y1#1 = bitmap_line::y1#0 Successful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination [65] if((const byte) bitmap_line::y0#0<(const byte) bitmap_line::y1#0) goto bitmap_line::@11 if() condition always true - replacing block destination [68] if((const byte) bitmap_line::y0#0<(const byte) bitmap_line::y1#0) goto bitmap_line::@7 if() condition always true - replacing block destination [214] if(true) goto main::@1 Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [13] bitmap_init::x#1 ← ++ bitmap_init::x#2 to ++ Resolved ranged comparison value [15] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to (number) 0 Resolved ranged next value [30] bitmap_init::y#1 ← ++ bitmap_init::y#2 to ++ Resolved ranged comparison value [32] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 to (number) 0 Resolved ranged next value [43] bitmap_clear::x#1 ← ++ bitmap_clear::x#2 to ++ Resolved ranged comparison value [45] if(bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2 to (number) $c8 Resolved ranged next value [46] bitmap_clear::y#1 ← ++ bitmap_clear::y#4 to ++ Resolved ranged comparison value [48] if(bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1 to (number) $28 Simplifying expression containing zero bitmap_plot_xhi in [35] (word~) bitmap_clear::$3 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) 0) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) 0) Simplifying expression containing zero bitmap_plot_xlo in [35] (word~) bitmap_clear::$3 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) 0) Simplifying expression containing zero bitmap_line::x1#0 in [63] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 - (const byte) bitmap_line::x0#0 Simplifying expression containing zero bitmap_line::x1#0 in [66] (byte) bitmap_line::xd#2 ← (const byte) bitmap_line::x0#0 - (byte) bitmap_line::x1#0 Simplifying expression containing zero bitmap_line::y1#0 in [69] (byte) bitmap_line::yd#1 ← (const byte) bitmap_line::y1#0 - (const byte) bitmap_line::y0#0 Simplifying expression containing zero bitmap_line::y1#0 in [72] (byte) bitmap_line::yd#2 ← (const byte) bitmap_line::y0#0 - (const byte) bitmap_line::y1#0 Simplifying expression containing zero bitmap_line::y1#0 in [99] (byte) bitmap_line::yd#11 ← (const byte) bitmap_line::y1#0 - (const byte) bitmap_line::y0#0 Simplifying expression containing zero bitmap_line::y1#0 in [102] (byte) bitmap_line::yd#10 ← (const byte) bitmap_line::y0#0 - (const byte) bitmap_line::y1#0 Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const byte) bitmap_line::xd#0 Eliminating unused constant (const byte) bitmap_line::yd#0 Successful SSA optimization PassNEliminateUnusedVars Eliminating variable (byte) bitmap_line::yd#2 from unused block bitmap_line::@3 Eliminating variable (byte) bitmap_line_xdyi::x#0 from unused block bitmap_line::@8 Eliminating variable (byte) bitmap_line_xdyi::xd#0 from unused block bitmap_line::@8 Eliminating variable (byte) bitmap_line_xdyi::yd#0 from unused block bitmap_line::@8 Eliminating variable (byte) bitmap_line_ydxi::x#0 from unused block bitmap_line::@4 Eliminating variable (byte) bitmap_line_ydxi::yd#0 from unused block bitmap_line::@4 Eliminating variable (byte) bitmap_line_ydxi::xd#0 from unused block bitmap_line::@4 Eliminating variable (byte) bitmap_line::yd#10 from unused block bitmap_line::@5 Eliminating variable (byte) bitmap_line_xdyd::x1#1 from unused block bitmap_line::@12 Eliminating variable (byte) bitmap_line_xdyd::xd#1 from unused block bitmap_line::@12 Eliminating variable (byte) bitmap_line_xdyd::yd#1 from unused block bitmap_line::@12 Eliminating variable (byte) bitmap_line_ydxd::x#1 from unused block bitmap_line::@6 Eliminating variable (byte) bitmap_line_ydxd::yd#1 from unused block bitmap_line::@6 Eliminating variable (byte) bitmap_line_ydxd::xd#1 from unused block bitmap_line::@6 Removing unused block bitmap_line::@3 Removing PHI-reference to removed block (bitmap_line::@8) in block bitmap_line_xdyi Removing PHI-reference to removed block (bitmap_line::@8) in block bitmap_line_xdyi Removing PHI-reference to removed block (bitmap_line::@8) in block bitmap_line_xdyi Removing PHI-reference to removed block (bitmap_line::@8) in block bitmap_line_xdyi Removing PHI-reference to removed block (bitmap_line::@8) in block bitmap_line_xdyi Removing unused block bitmap_line::@8 Removing unused block bitmap_line::@15 Removing PHI-reference to removed block (bitmap_line::@4) in block bitmap_line_ydxi Removing PHI-reference to removed block (bitmap_line::@4) in block bitmap_line_ydxi Removing PHI-reference to removed block (bitmap_line::@4) in block bitmap_line_ydxi Removing PHI-reference to removed block (bitmap_line::@4) in block bitmap_line_ydxi Removing PHI-reference to removed block (bitmap_line::@4) in block bitmap_line_ydxi Removing unused block bitmap_line::@4 Removing unused block bitmap_line::@16 Removing unused block bitmap_line::@5 Removing PHI-reference to removed block (bitmap_line::@12) in block bitmap_line_xdyd Removing PHI-reference to removed block (bitmap_line::@12) in block bitmap_line_xdyd Removing PHI-reference to removed block (bitmap_line::@12) in block bitmap_line_xdyd Removing PHI-reference to removed block (bitmap_line::@12) in block bitmap_line_xdyd Removing PHI-reference to removed block (bitmap_line::@12) in block bitmap_line_xdyd Removing unused block bitmap_line::@12 Removing unused block bitmap_line::@19 Removing PHI-reference to removed block (bitmap_line::@6) in block bitmap_line_ydxd Removing PHI-reference to removed block (bitmap_line::@6) in block bitmap_line_ydxd Removing PHI-reference to removed block (bitmap_line::@6) in block bitmap_line_ydxd Removing PHI-reference to removed block (bitmap_line::@6) in block bitmap_line_ydxd Removing PHI-reference to removed block (bitmap_line::@6) in block bitmap_line_ydxd Removing unused block bitmap_line::@6 Removing unused block bitmap_line::@20 Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Removing unused procedure __start Removing unused procedure block __start Removing unused procedure block __start::__init1 Removing unused procedure block __start::@1 Removing unused procedure block __start::@2 Removing unused procedure block __start::@return Successful SSA optimization PassNEliminateEmptyStart Adding number conversion cast (unumber) 0 in [10] if((byte) bitmap_init::x#1!=(number) 0) goto bitmap_init::@1 Adding number conversion cast (unumber) 0 in [22] if((byte) bitmap_init::y#1!=(number) 0) goto bitmap_init::@5 Adding number conversion cast (unumber) $c8 in [32] if((byte) bitmap_clear::x#1!=(number) $c8) goto bitmap_clear::@2 Adding number conversion cast (unumber) $28 in [34] if((byte) bitmap_clear::y#1!=(number) $28) goto bitmap_clear::@1 Successful SSA optimization PassNAddNumberTypeConversions Inlining cast [26] (byte*) bitmap_clear::bitmap#0 ← (byte*)(word~) bitmap_clear::$3 Successful SSA optimization Pass2InlineCast Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast $c8 Simplifying constant integer cast $28 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) 0 Finalized unsigned number type (byte) $c8 Finalized unsigned number type (byte) $28 Successful SSA optimization PassNFinalizeNumberTypeConversions Alias bitmap_init::$10 = bitmap_init::$6 Successful SSA optimization Pass2AliasElimination Identical Phi Values (byte) bitmap_line_xdyi::yd#2 (byte) bitmap_line_xdyi::yd#1 Identical Phi Values (byte) bitmap_line_xdyi::x#6 (const byte) bitmap_line_xdyi::x#1 Identical Phi Values (byte) bitmap_line_xdyi::y#5 (const byte) bitmap_line_xdyi::y#1 Identical Phi Values (byte) bitmap_line_xdyi::xd#5 (byte) bitmap_line_xdyi::xd#1 Identical Phi Values (byte) bitmap_line_xdyi::x1#6 (byte) bitmap_line_xdyi::x1#1 Identical Phi Values (byte) bitmap_line_xdyd::yd#2 (byte) bitmap_line_xdyd::yd#0 Identical Phi Values (byte) bitmap_line_xdyd::x#6 (byte) bitmap_line_xdyd::x#0 Identical Phi Values (byte) bitmap_line_xdyd::y#5 (const byte) bitmap_line_xdyd::y#0 Identical Phi Values (byte) bitmap_line_xdyd::xd#5 (byte) bitmap_line_xdyd::xd#0 Identical Phi Values (byte) bitmap_line_xdyd::x1#6 (const byte) bitmap_line_xdyd::x1#0 Identical Phi Values (byte) bitmap_line_ydxi::xd#2 (byte) bitmap_line_ydxi::xd#1 Identical Phi Values (byte) bitmap_line_ydxi::x#5 (const byte) bitmap_line_ydxi::x#1 Identical Phi Values (byte) bitmap_line_ydxi::y#6 (const byte) bitmap_line_ydxi::y#1 Identical Phi Values (byte) bitmap_line_ydxi::yd#5 (byte) bitmap_line_ydxi::yd#1 Identical Phi Values (byte) bitmap_line_ydxi::y1#6 (const byte) bitmap_line_ydxi::y1#1 Identical Phi Values (byte) bitmap_line_ydxd::xd#2 (byte) bitmap_line_ydxd::xd#0 Identical Phi Values (byte) bitmap_line_ydxd::x#5 (const byte) bitmap_line_ydxd::x#0 Identical Phi Values (byte) bitmap_line_ydxd::y#7 (const byte) bitmap_line_ydxd::y#0 Identical Phi Values (byte) bitmap_line_ydxd::yd#5 (byte) bitmap_line_ydxd::yd#0 Identical Phi Values (byte) bitmap_line_ydxd::y1#6 (const byte) bitmap_line_ydxd::y1#0 Successful SSA optimization Pass2IdenticalPhiElimination Constant right-side identified [3] (byte~) bitmap_init::$1 ← > (const byte*) bitmap_init::bitmap#0 Constant right-side identified [90] (byte~) bitmap_line_xdyd::$6 ← (const byte) bitmap_line_xdyd::x1#0 + (byte) 1 Constant right-side identified [105] (byte~) bitmap_line_ydxi::$6 ← (const byte) bitmap_line_ydxi::y1#1 + (byte) 1 Constant right-side identified [120] (byte~) bitmap_line_ydxd::$6 ← (const byte) bitmap_line_ydxd::y1#0 + (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) bitmap_init::$1 = >bitmap_init::bitmap#0 Constant (const byte) bitmap_line::yd#1 = bitmap_line::y1#0 Constant (const byte) bitmap_line::yd#11 = bitmap_line::y1#0 Constant (const byte) bitmap_line_xdyd::$6 = bitmap_line_xdyd::x1#0+1 Constant (const byte) bitmap_line_ydxi::$6 = bitmap_line_ydxi::y1#1+1 Constant (const byte) bitmap_line_ydxd::$6 = bitmap_line_ydxd::y1#0+1 Successful SSA optimization Pass2ConstantIdentification Constant (const byte) bitmap_line_xdyd::yd#0 = bitmap_line::yd#1 Constant (const byte) bitmap_line_ydxd::yd#0 = bitmap_line::yd#1 Constant (const byte) bitmap_line_xdyi::yd#1 = bitmap_line::yd#11 Constant (const byte) bitmap_line_ydxi::yd#1 = bitmap_line::yd#11 Successful SSA optimization Pass2ConstantIdentification Simplifying expression containing zero 1 in Successful SSA optimization PassNSimplifyExpressionWithZero Eliminating unused constant (const byte) bitmap_line_xdyi::y#0 Eliminating unused constant (const byte) bitmap_line_xdyi::x1#0 Eliminating unused constant (const byte) bitmap_line_xdyd::x1#0 Eliminating unused constant (const byte) bitmap_line_xdyd::x#1 Eliminating unused constant (const byte) bitmap_line_xdyd::y#1 Eliminating unused constant (const byte) bitmap_line_ydxi::y#0 Eliminating unused constant (const byte) bitmap_line_ydxi::y1#0 Eliminating unused constant (const byte) bitmap_line_ydxd::y#1 Eliminating unused constant (const byte) bitmap_line_ydxd::y1#1 Successful SSA optimization PassNEliminateUnusedVars Constant right-side identified [58] (byte) bitmap_line_xdyi::e#0 ← (const byte) bitmap_line_xdyi::yd#1 >> (byte) 1 Constant right-side identified [72] (byte) bitmap_line_xdyd::e#0 ← (const byte) bitmap_line_xdyd::yd#0 >> (byte) 1 Successful SSA optimization Pass2ConstantRValueConsolidation Constant (const byte) bitmap_line_xdyi::e#0 = bitmap_line_xdyi::yd#1>>1 Constant (const byte) bitmap_line_xdyd::e#0 = bitmap_line_xdyd::yd#0>>1 Successful SSA optimization Pass2ConstantIdentification Inlining Noop Cast [24] (byte*) bitmap_clear::bitmap#0 ← (byte*)(word~) bitmap_clear::$3 keeping bitmap_clear::bitmap#0 Inlining Noop Cast [38] (byte*) bitmap_plot::plotter#0 ← (byte*)(word~) bitmap_plot::$0 keeping bitmap_plot::plotter#0 Successful SSA optimization Pass2NopCastInlining 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::yoffs#0 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 Inlining constant with var siblings (const byte) bitmap_line_xdyi::x#1 Inlining constant with var siblings (const byte) bitmap_line_xdyi::y#1 Inlining constant with var siblings (const byte) bitmap_line_xdyi::e#0 Inlining constant with var siblings (const byte) bitmap_line_xdyd::y#0 Inlining constant with var siblings (const byte) bitmap_line_xdyd::e#0 Inlining constant with var siblings (const byte) bitmap_line_ydxi::y#1 Inlining constant with var siblings (const byte) bitmap_line_ydxi::x#1 Inlining constant with var siblings (const byte) bitmap_line_ydxd::y#0 Inlining constant with var siblings (const byte) bitmap_line_ydxd::x#0 Inlining constant with var siblings (const byte*) init_screen::c#0 Inlining constant with var siblings (const byte) next#11 Constant inlined bitmap_line_ydxi::x#1 = (const byte) bitmap_line::x0#0 Constant inlined bitmap_line::yd#1 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_line_xdyd::e#0 = (const byte) bitmap_line::y1#0>>(byte) 1 Constant inlined bitmap_line_xdyd::$6 = (byte) 1 Constant inlined bitmap_line_ydxi::$6 = (const byte) bitmap_line::y1#0+(byte) 1 Constant inlined bitmap_init::bits#0 = (byte) $80 Constant inlined bitmap_init::bits#2 = (byte) $80 Constant inlined bitmap_line_xdyi::e#0 = (const byte) bitmap_line::y1#0>>(byte) 1 Constant inlined bitmap_line_xdyd::y#0 = (const byte) bitmap_line::y1#0 Constant inlined init_screen::c#0 = (const nomodify byte*) SCREEN Constant inlined bitmap_line_ydxi::y#1 = (const byte) bitmap_line::y0#0 Constant inlined bitmap_line_xdyi::y#1 = (const byte) bitmap_line::y0#0 Constant inlined bitmap_init::yoffs#0 = (byte*) 0 Constant inlined next#11 = (byte) 0 Constant inlined bitmap_line_ydxd::yd#0 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_clear::x#0 = (byte) 0 Constant inlined bitmap_line_xdyi::yd#1 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_clear::y#0 = (byte) 0 Constant inlined bitmap_line::yd#11 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_line_xdyd::yd#0 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_line_ydxi::yd#1 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_line_ydxd::y#0 = (const byte) bitmap_line::y0#0 Constant inlined bitmap_line_ydxd::x#0 = (const byte) bitmap_line::x0#0 Constant inlined bitmap_line_ydxd::y1#0 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_init::$1 = >(const nomodify byte*) BITMAP Constant inlined bitmap_line_ydxd::$6 = (const byte) bitmap_line::y1#0+(byte) 1 Constant inlined bitmap_init::y#0 = (byte) 0 Constant inlined bitmap_init::x#0 = (byte) 0 Constant inlined bitmap_line_ydxi::y1#1 = (const byte) bitmap_line::y1#0 Constant inlined bitmap_init::bitmap#0 = (const nomodify byte*) BITMAP Constant inlined bitmap_line_xdyi::x#1 = (const byte) bitmap_line::x0#0 Successful SSA optimization Pass2ConstantInlining Added new block during phi lifting bitmap_init::@8(between bitmap_init::@2 and bitmap_init::@1) Added new block during phi lifting bitmap_init::@9(between bitmap_init::@1 and bitmap_init::@2) Added new block during phi lifting bitmap_init::@10(between bitmap_init::@6 and bitmap_init::@5) Added new block during phi lifting bitmap_init::@11(between bitmap_init::@5 and bitmap_init::@6) Added new block during phi lifting bitmap_clear::@4(between bitmap_clear::@3 and bitmap_clear::@1) Added new block during phi lifting bitmap_clear::@5(between bitmap_clear::@2 and bitmap_clear::@2) Added new block during phi lifting bitmap_line_xdyi::@5(between bitmap_line_xdyi::@2 and bitmap_line_xdyi::@1) Added new block during phi lifting bitmap_line_xdyi::@6(between bitmap_line_xdyi::@4 and bitmap_line_xdyi::@2) Added new block during phi lifting bitmap_line_xdyd::@5(between bitmap_line_xdyd::@2 and bitmap_line_xdyd::@1) Added new block during phi lifting bitmap_line_xdyd::@6(between bitmap_line_xdyd::@4 and bitmap_line_xdyd::@2) Added new block during phi lifting bitmap_line_ydxi::@5(between bitmap_line_ydxi::@2 and bitmap_line_ydxi::@1) Added new block during phi lifting bitmap_line_ydxi::@6(between bitmap_line_ydxi::@4 and bitmap_line_ydxi::@2) Added new block during phi lifting bitmap_line_ydxd::@5(between bitmap_line_ydxd::@2 and bitmap_line_ydxd::@1) Added new block during phi lifting bitmap_line_ydxd::@6(between bitmap_line_ydxd::@4 and bitmap_line_ydxd::@2) Adding NOP phi() at start of main::@2 Adding NOP phi() at start of main::@3 Adding NOP phi() at start of main::@4 Adding NOP phi() at start of bitmap_init Adding NOP phi() at start of bitmap_init::@3 Adding NOP phi() at start of bitmap_init::@4 Adding NOP phi() at start of init_screen Adding NOP phi() at start of bitmap_line::@18 Adding NOP phi() at start of bitmap_line::@17 Adding NOP phi() at start of bitmap_line::@22 Adding NOP phi() at start of bitmap_line::@21 Adding NOP phi() at start of bitmap_line_xdyi CALL GRAPH Calls in [main] to bitmap_init:4 bitmap_clear:6 init_screen:8 bitmap_line:12 Calls in [bitmap_line] to bitmap_line_ydxd:75 bitmap_line_xdyd:80 bitmap_line_ydxi:85 bitmap_line_xdyi:89 Calls in [bitmap_line_ydxd] to bitmap_plot:98 Calls in [bitmap_line_xdyd] to bitmap_plot:120 Calls in [bitmap_line_ydxi] to bitmap_plot:143 Calls in [bitmap_line_xdyi] to bitmap_plot:165 Created 34 initial phi equivalence classes Coalesced [14] next#15 ← next#0 Coalesced [37] bitmap_init::yoffs#7 ← bitmap_init::yoffs#1 Coalesced [42] bitmap_init::y#5 ← bitmap_init::y#1 Coalesced [43] bitmap_init::yoffs#5 ← bitmap_init::yoffs#4 Coalesced (already) [44] bitmap_init::yoffs#6 ← bitmap_init::yoffs#2 Coalesced [45] bitmap_init::x#5 ← bitmap_init::x#1 Coalesced [46] bitmap_init::bits#5 ← bitmap_init::bits#4 Coalesced [47] bitmap_init::bits#6 ← bitmap_init::bits#1 Coalesced [51] bitmap_clear::bitmap#7 ← bitmap_clear::bitmap#3 Coalesced [60] bitmap_clear::bitmap#6 ← bitmap_clear::bitmap#1 Coalesced [61] bitmap_clear::y#5 ← bitmap_clear::y#1 Coalesced (already) [62] bitmap_clear::bitmap#8 ← bitmap_clear::bitmap#1 Coalesced [63] bitmap_clear::x#3 ← bitmap_clear::x#1 Coalesced [70] init_screen::c#4 ← init_screen::c#1 Coalesced [92] bitmap_line_ydxd::e#7 ← bitmap_line_ydxd::e#0 Coalesced [96] bitmap_plot::x#7 ← bitmap_plot::x#3 Coalesced [97] bitmap_plot::y#7 ← bitmap_plot::y#3 Coalesced [104] bitmap_line_ydxd::x#9 ← bitmap_line_ydxd::x#2 Coalesced [105] bitmap_line_ydxd::e#9 ← bitmap_line_ydxd::e#2 Coalesced [109] bitmap_line_ydxd::x#8 ← bitmap_line_ydxd::x#6 Coalesced [110] bitmap_line_ydxd::y#9 ← bitmap_line_ydxd::y#3 Coalesced [111] bitmap_line_ydxd::e#8 ← bitmap_line_ydxd::e#6 Coalesced (already) [112] bitmap_line_ydxd::x#10 ← bitmap_line_ydxd::x#3 Coalesced [113] bitmap_line_ydxd::e#10 ← bitmap_line_ydxd::e#1 Coalesced [114] bitmap_line_xdyd::x#8 ← bitmap_line_xdyd::x#0 Coalesced [118] bitmap_plot::x#5 ← bitmap_plot::x#1 Coalesced [119] bitmap_plot::y#5 ← bitmap_plot::y#1 Coalesced [126] bitmap_line_xdyd::y#9 ← bitmap_line_xdyd::y#2 Coalesced [127] bitmap_line_xdyd::e#8 ← bitmap_line_xdyd::e#2 Coalesced [131] bitmap_line_xdyd::x#9 ← bitmap_line_xdyd::x#2 Coalesced [132] bitmap_line_xdyd::y#8 ← bitmap_line_xdyd::y#6 Coalesced [133] bitmap_line_xdyd::e#7 ← bitmap_line_xdyd::e#6 Coalesced (already) [134] bitmap_line_xdyd::y#10 ← bitmap_line_xdyd::y#3 Coalesced [135] bitmap_line_xdyd::e#9 ← bitmap_line_xdyd::e#1 Coalesced [137] bitmap_line_ydxi::e#7 ← bitmap_line_ydxi::e#0 Coalesced [141] bitmap_plot::x#8 ← bitmap_plot::x#2 Coalesced [142] bitmap_plot::y#8 ← bitmap_plot::y#2 Coalesced [149] bitmap_line_ydxi::x#9 ← bitmap_line_ydxi::x#2 Coalesced [150] bitmap_line_ydxi::e#9 ← bitmap_line_ydxi::e#2 Coalesced [154] bitmap_line_ydxi::x#8 ← bitmap_line_ydxi::x#6 Coalesced [155] bitmap_line_ydxi::y#8 ← bitmap_line_ydxi::y#2 Coalesced [156] bitmap_line_ydxi::e#8 ← bitmap_line_ydxi::e#6 Coalesced (already) [157] bitmap_line_ydxi::x#10 ← bitmap_line_ydxi::x#3 Coalesced [158] bitmap_line_ydxi::e#10 ← bitmap_line_ydxi::e#1 Coalesced [163] bitmap_plot::x#6 ← bitmap_plot::x#0 Coalesced [164] bitmap_plot::y#6 ← bitmap_plot::y#0 Coalesced [171] bitmap_line_xdyi::y#9 ← bitmap_line_xdyi::y#2 Coalesced [172] bitmap_line_xdyi::e#8 ← bitmap_line_xdyi::e#2 Coalesced [177] bitmap_line_xdyi::x#8 ← bitmap_line_xdyi::x#2 Coalesced [178] bitmap_line_xdyi::y#8 ← bitmap_line_xdyi::y#6 Coalesced [179] bitmap_line_xdyi::e#7 ← bitmap_line_xdyi::e#6 Coalesced (already) [180] bitmap_line_xdyi::y#10 ← bitmap_line_xdyi::y#3 Coalesced [181] bitmap_line_xdyi::e#9 ← bitmap_line_xdyi::e#1 Coalesced down to 23 phi equivalence classes Culled Empty Block (label) main::@4 Culled Empty Block (label) bitmap_init::@3 Culled Empty Block (label) bitmap_init::@4 Culled Empty Block (label) bitmap_init::@10 Culled Empty Block (label) bitmap_init::@11 Culled Empty Block (label) bitmap_init::@8 Culled Empty Block (label) bitmap_clear::@4 Culled Empty Block (label) bitmap_clear::@5 Culled Empty Block (label) bitmap_line::@18 Culled Empty Block (label) bitmap_line::@17 Culled Empty Block (label) bitmap_line::@22 Culled Empty Block (label) bitmap_line::@21 Culled Empty Block (label) bitmap_line_ydxd::@5 Culled Empty Block (label) bitmap_line_ydxd::@6 Culled Empty Block (label) bitmap_line_xdyd::@5 Culled Empty Block (label) bitmap_line_xdyd::@6 Culled Empty Block (label) bitmap_line_ydxi::@5 Culled Empty Block (label) bitmap_line_ydxi::@6 Culled Empty Block (label) bitmap_line_xdyi::@5 Culled Empty Block (label) bitmap_line_xdyi::@6 Renumbering block bitmap_init::@5 to bitmap_init::@3 Renumbering block bitmap_init::@6 to bitmap_init::@4 Renumbering block bitmap_init::@7 to bitmap_init::@5 Renumbering block bitmap_init::@9 to bitmap_init::@6 Renumbering block bitmap_line::@7 to bitmap_line::@3 Renumbering block bitmap_line::@9 to bitmap_line::@4 Renumbering block bitmap_line::@10 to bitmap_line::@5 Renumbering block bitmap_line::@11 to bitmap_line::@6 Renumbering block bitmap_line::@13 to bitmap_line::@7 Renumbering block bitmap_line::@14 to bitmap_line::@8 Renumbering block main::@5 to main::@4 Adding NOP phi() at start of main::@2 Adding NOP phi() at start of main::@3 Adding NOP phi() at start of bitmap_init Adding NOP phi() at start of bitmap_init::@6 Adding NOP phi() at start of init_screen Adding NOP phi() at start of bitmap_line_xdyd Adding NOP phi() at start of bitmap_line_xdyi FINAL CONTROL FLOW GRAPH (void()) main() main: scope:[main] from [0] *((const nomodify byte*) BORDER_COLOR) ← (byte) 0 [1] *((const nomodify byte*) BG_COLOR) ← (byte) 0 [2] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [3] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) BITMAP&(word) $3fff/(word) $400 [4] call bitmap_init to:main::@2 main::@2: scope:[main] from main [5] phi() [6] call bitmap_clear to:main::@3 main::@3: scope:[main] from main::@2 [7] phi() [8] call init_screen to:main::@1 main::@1: scope:[main] from main::@3 main::@4 [9] (byte) next#5 ← phi( main::@3/(byte) 0 main::@4/(byte) next#0 ) [10] (byte) bitmap_line::x1#0 ← (byte) next#5 [11] call bitmap_line to:main::@4 main::@4: scope:[main] from main::@1 [12] (byte) next#0 ← ++ (byte) next#5 to:main::@1 (void()) bitmap_init((byte*) bitmap_init::bitmap) bitmap_init: scope:[bitmap_init] from main [13] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 [14] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte) $80 bitmap_init::@2/(byte) bitmap_init::bits#4 ) [14] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte) 0 bitmap_init::@2/(byte) bitmap_init::x#1 ) [15] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [16] *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 [17] *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const nomodify byte*) BITMAP [18] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [19] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 [20] 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 [21] phi() to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6 [22] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@6/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte) $80 ) [23] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 [24] 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 [25] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@2/(byte*) 0 bitmap_init::@4/(byte*) bitmap_init::yoffs#4 ) [25] (byte) bitmap_init::y#2 ← phi( bitmap_init::@2/(byte) 0 bitmap_init::@4/(byte) bitmap_init::y#1 ) [26] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [27] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 [28] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$10 | (byte~) bitmap_init::$7 [29] *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 [30] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 [31] *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 [32] if((byte~) bitmap_init::$10!=(byte) 7) goto bitmap_init::@4 to:bitmap_init::@5 bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3 [33] (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 [34] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@5/(byte*) bitmap_init::yoffs#1 ) [35] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 [36] 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 [37] return to:@return (void()) bitmap_clear() bitmap_clear: scope:[bitmap_clear] from main::@2 [38] (word) bitmap_clear::bitmap#0 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo) [39] (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 [40] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 ) [40] (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 [41] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 ) [41] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 ) [42] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [43] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 [44] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 [45] 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 [46] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 [47] 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 [48] return to:@return (void()) init_screen() init_screen: scope:[init_screen] from main::@3 [49] phi() to:init_screen::@1 init_screen::@1: scope:[init_screen] from init_screen init_screen::@2 [50] (byte*) init_screen::c#2 ← phi( init_screen/(const nomodify byte*) SCREEN init_screen::@2/(byte*) init_screen::c#1 ) [51] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 to:init_screen::@return init_screen::@return: scope:[init_screen] from init_screen::@1 [52] return to:@return init_screen::@2: scope:[init_screen] from init_screen::@1 [53] *((byte*) init_screen::c#2) ← (byte) $14 [54] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2 to:init_screen::@1 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) bitmap_line: scope:[bitmap_line] from main::@1 [55] if((const byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 to:bitmap_line::@2 bitmap_line::@2: scope:[bitmap_line] from bitmap_line [56] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x1#0 to:bitmap_line::@3 bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@2 [57] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#2) goto bitmap_line::@4 to:bitmap_line::@5 bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@3 [58] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#2 [59] call bitmap_line_ydxd to:bitmap_line::@return bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@4 bitmap_line::@5 bitmap_line::@7 bitmap_line::@8 [60] return to:@return bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@3 [61] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 [62] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#2 [63] call bitmap_line_xdyd to:bitmap_line::@return bitmap_line::@1: scope:[bitmap_line] from bitmap_line [64] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 to:bitmap_line::@6 bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@1 [65] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#1) goto bitmap_line::@7 to:bitmap_line::@8 bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@6 [66] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#1 [67] call bitmap_line_ydxi to:bitmap_line::@return bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@6 [68] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 [69] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#1 [70] call bitmap_line_xdyi to:bitmap_line::@return (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) bitmap_line_ydxd: scope:[bitmap_line_ydxd] from bitmap_line::@5 [71] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 to:bitmap_line_ydxd::@1 bitmap_line_ydxd::@1: scope:[bitmap_line_ydxd] from bitmap_line_ydxd bitmap_line_ydxd::@2 [72] (byte) bitmap_line_ydxd::e#3 ← phi( bitmap_line_ydxd/(byte) bitmap_line_ydxd::e#0 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::e#6 ) [72] (byte) bitmap_line_ydxd::y#2 ← phi( bitmap_line_ydxd/(const byte) bitmap_line::y0#0 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::y#3 ) [72] (byte) bitmap_line_ydxd::x#3 ← phi( bitmap_line_ydxd/(const byte) bitmap_line::x0#0 bitmap_line_ydxd::@2/(byte) bitmap_line_ydxd::x#6 ) [73] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 [74] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 [75] call bitmap_plot to:bitmap_line_ydxd::@4 bitmap_line_ydxd::@4: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@1 [76] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 [77] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 [78] if((const byte) bitmap_line::y1#0>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 to:bitmap_line_ydxd::@3 bitmap_line_ydxd::@3: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@4 [79] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 [80] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 to:bitmap_line_ydxd::@2 bitmap_line_ydxd::@2: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@3 bitmap_line_ydxd::@4 [81] (byte) bitmap_line_ydxd::e#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::e#2 bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::e#1 ) [81] (byte) bitmap_line_ydxd::x#6 ← phi( bitmap_line_ydxd::@3/(byte) bitmap_line_ydxd::x#2 bitmap_line_ydxd::@4/(byte) bitmap_line_ydxd::x#3 ) [82] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 to:bitmap_line_ydxd::@return bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2 [83] return to:@return (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) bitmap_line_xdyd: scope:[bitmap_line_xdyd] from bitmap_line::@4 [84] phi() to:bitmap_line_xdyd::@1 bitmap_line_xdyd::@1: scope:[bitmap_line_xdyd] from bitmap_line_xdyd bitmap_line_xdyd::@2 [85] (byte) bitmap_line_xdyd::e#3 ← phi( bitmap_line_xdyd/(const byte) bitmap_line::y1#0>>(byte) 1 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::e#6 ) [85] (byte) bitmap_line_xdyd::y#3 ← phi( bitmap_line_xdyd/(const byte) bitmap_line::y1#0 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::y#6 ) [85] (byte) bitmap_line_xdyd::x#3 ← phi( bitmap_line_xdyd/(byte) bitmap_line_xdyd::x#0 bitmap_line_xdyd::@2/(byte) bitmap_line_xdyd::x#2 ) [86] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 [87] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 [88] call bitmap_plot to:bitmap_line_xdyd::@4 bitmap_line_xdyd::@4: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@1 [89] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 [90] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 [91] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 to:bitmap_line_xdyd::@3 bitmap_line_xdyd::@3: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@4 [92] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 [93] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 to:bitmap_line_xdyd::@2 bitmap_line_xdyd::@2: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@3 bitmap_line_xdyd::@4 [94] (byte) bitmap_line_xdyd::e#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::e#2 bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::e#1 ) [94] (byte) bitmap_line_xdyd::y#6 ← phi( bitmap_line_xdyd::@3/(byte) bitmap_line_xdyd::y#2 bitmap_line_xdyd::@4/(byte) bitmap_line_xdyd::y#3 ) [95] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 to:bitmap_line_xdyd::@return bitmap_line_xdyd::@return: scope:[bitmap_line_xdyd] from bitmap_line_xdyd::@2 [96] return to:@return (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) bitmap_line_ydxi: scope:[bitmap_line_ydxi] from bitmap_line::@8 [97] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 to:bitmap_line_ydxi::@1 bitmap_line_ydxi::@1: scope:[bitmap_line_ydxi] from bitmap_line_ydxi bitmap_line_ydxi::@2 [98] (byte) bitmap_line_ydxi::e#3 ← phi( bitmap_line_ydxi/(byte) bitmap_line_ydxi::e#0 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::e#6 ) [98] (byte) bitmap_line_ydxi::y#3 ← phi( bitmap_line_ydxi/(const byte) bitmap_line::y0#0 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::y#2 ) [98] (byte) bitmap_line_ydxi::x#3 ← phi( bitmap_line_ydxi/(const byte) bitmap_line::x0#0 bitmap_line_ydxi::@2/(byte) bitmap_line_ydxi::x#6 ) [99] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 [100] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 [101] call bitmap_plot to:bitmap_line_ydxi::@4 bitmap_line_ydxi::@4: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@1 [102] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 [103] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 [104] if((const byte) bitmap_line::y1#0>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 to:bitmap_line_ydxi::@3 bitmap_line_ydxi::@3: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@4 [105] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 [106] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 to:bitmap_line_ydxi::@2 bitmap_line_ydxi::@2: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@3 bitmap_line_ydxi::@4 [107] (byte) bitmap_line_ydxi::e#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::e#2 bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::e#1 ) [107] (byte) bitmap_line_ydxi::x#6 ← phi( bitmap_line_ydxi::@3/(byte) bitmap_line_ydxi::x#2 bitmap_line_ydxi::@4/(byte) bitmap_line_ydxi::x#3 ) [108] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 to:bitmap_line_ydxi::@return bitmap_line_ydxi::@return: scope:[bitmap_line_ydxi] from bitmap_line_ydxi::@2 [109] return to:@return (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) bitmap_line_xdyi: scope:[bitmap_line_xdyi] from bitmap_line::@7 [110] phi() to:bitmap_line_xdyi::@1 bitmap_line_xdyi::@1: scope:[bitmap_line_xdyi] from bitmap_line_xdyi bitmap_line_xdyi::@2 [111] (byte) bitmap_line_xdyi::e#3 ← phi( bitmap_line_xdyi/(const byte) bitmap_line::y1#0>>(byte) 1 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::e#6 ) [111] (byte) bitmap_line_xdyi::y#3 ← phi( bitmap_line_xdyi/(const byte) bitmap_line::y0#0 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::y#6 ) [111] (byte) bitmap_line_xdyi::x#3 ← phi( bitmap_line_xdyi/(const byte) bitmap_line::x0#0 bitmap_line_xdyi::@2/(byte) bitmap_line_xdyi::x#2 ) [112] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 [113] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 [114] call bitmap_plot to:bitmap_line_xdyi::@4 bitmap_line_xdyi::@4: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@1 [115] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 [116] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 [117] if((byte) bitmap_line_xdyi::xd#1>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 to:bitmap_line_xdyi::@3 bitmap_line_xdyi::@3: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@4 [118] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 [119] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 to:bitmap_line_xdyi::@2 bitmap_line_xdyi::@2: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@3 bitmap_line_xdyi::@4 [120] (byte) bitmap_line_xdyi::e#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::e#2 bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::e#1 ) [120] (byte) bitmap_line_xdyi::y#6 ← phi( bitmap_line_xdyi::@3/(byte) bitmap_line_xdyi::y#2 bitmap_line_xdyi::@4/(byte) bitmap_line_xdyi::y#3 ) [121] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#1 + (byte) 1 [122] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 to:bitmap_line_xdyi::@return bitmap_line_xdyi::@return: scope:[bitmap_line_xdyi] from bitmap_line_xdyi::@2 [123] return to:@return (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) bitmap_plot: scope:[bitmap_plot] from bitmap_line_xdyd::@1 bitmap_line_xdyi::@1 bitmap_line_ydxd::@1 bitmap_line_ydxi::@1 [124] (byte) bitmap_plot::y#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::y#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::y#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::y#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::y#2 ) [124] (byte) bitmap_plot::x#4 ← phi( bitmap_line_xdyd::@1/(byte) bitmap_plot::x#1 bitmap_line_xdyi::@1/(byte) bitmap_plot::x#0 bitmap_line_ydxd::@1/(byte) bitmap_plot::x#3 bitmap_line_ydxi::@1/(byte) bitmap_plot::x#2 ) [125] (word) bitmap_plot::plotter_x#0 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [126] (word) bitmap_plot::plotter_y#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [127] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [128] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [129] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot [130] return to:@return VARIABLE REGISTER WEIGHTS (byte) MOS6526_CIA::INTERRUPT (byte) MOS6526_CIA::PORT_A (byte) MOS6526_CIA::PORT_A_DDR (byte) MOS6526_CIA::PORT_B (byte) MOS6526_CIA::PORT_B_DDR (byte) MOS6526_CIA::SERIAL_DATA (word) MOS6526_CIA::TIMER_A (byte) MOS6526_CIA::TIMER_A_CONTROL (word) MOS6526_CIA::TIMER_B (byte) MOS6526_CIA::TIMER_B_CONTROL (byte) MOS6526_CIA::TOD_10THS (byte) MOS6526_CIA::TOD_HOURS (byte) MOS6526_CIA::TOD_MIN (byte) MOS6526_CIA::TOD_SEC (byte) MOS6569_VICII::BG_COLOR (byte) MOS6569_VICII::BG_COLOR1 (byte) MOS6569_VICII::BG_COLOR2 (byte) MOS6569_VICII::BG_COLOR3 (byte) MOS6569_VICII::BORDER_COLOR (byte) MOS6569_VICII::CONTROL1 (byte) MOS6569_VICII::CONTROL2 (byte) MOS6569_VICII::IRQ_ENABLE (byte) MOS6569_VICII::IRQ_STATUS (byte) MOS6569_VICII::LIGHTPEN_X (byte) MOS6569_VICII::LIGHTPEN_Y (byte) MOS6569_VICII::MEMORY (byte) MOS6569_VICII::RASTER (byte) MOS6569_VICII::SPRITE0_COLOR (byte) MOS6569_VICII::SPRITE0_X (byte) MOS6569_VICII::SPRITE0_Y (byte) MOS6569_VICII::SPRITE1_COLOR (byte) MOS6569_VICII::SPRITE1_X (byte) MOS6569_VICII::SPRITE1_Y (byte) MOS6569_VICII::SPRITE2_COLOR (byte) MOS6569_VICII::SPRITE2_X (byte) MOS6569_VICII::SPRITE2_Y (byte) MOS6569_VICII::SPRITE3_COLOR (byte) MOS6569_VICII::SPRITE3_X (byte) MOS6569_VICII::SPRITE3_Y (byte) MOS6569_VICII::SPRITE4_COLOR (byte) MOS6569_VICII::SPRITE4_X (byte) MOS6569_VICII::SPRITE4_Y (byte) MOS6569_VICII::SPRITE5_COLOR (byte) MOS6569_VICII::SPRITE5_X (byte) MOS6569_VICII::SPRITE5_Y (byte) MOS6569_VICII::SPRITE6_COLOR (byte) MOS6569_VICII::SPRITE6_X (byte) MOS6569_VICII::SPRITE6_Y (byte) MOS6569_VICII::SPRITE7_COLOR (byte) MOS6569_VICII::SPRITE7_X (byte) MOS6569_VICII::SPRITE7_Y (byte) MOS6569_VICII::SPRITES_BG_COLLISION (byte) MOS6569_VICII::SPRITES_COLLISION (byte) MOS6569_VICII::SPRITES_ENABLE (byte) MOS6569_VICII::SPRITES_EXPAND_X (byte) MOS6569_VICII::SPRITES_EXPAND_Y (byte) MOS6569_VICII::SPRITES_MC (byte) MOS6569_VICII::SPRITES_MCOLOR1 (byte) MOS6569_VICII::SPRITES_MCOLOR2 (byte) MOS6569_VICII::SPRITES_PRIORITY (byte) MOS6569_VICII::SPRITES_XMSB (byte) MOS6581_SID::CH1_ATTACK_DECAY (byte) MOS6581_SID::CH1_CONTROL (word) MOS6581_SID::CH1_FREQ (word) MOS6581_SID::CH1_PULSE_WIDTH (byte) MOS6581_SID::CH1_SUSTAIN_RELEASE (byte) MOS6581_SID::CH2_ATTACK_DECAY (byte) MOS6581_SID::CH2_CONTROL (word) MOS6581_SID::CH2_FREQ (word) MOS6581_SID::CH2_PULSE_WIDTH (byte) MOS6581_SID::CH2_SUSTAIN_RELEASE (byte) MOS6581_SID::CH3_ATTACK_DECAY (byte) MOS6581_SID::CH3_CONTROL (byte) MOS6581_SID::CH3_ENV (word) MOS6581_SID::CH3_FREQ (byte) MOS6581_SID::CH3_OSC (word) MOS6581_SID::CH3_PULSE_WIDTH (byte) MOS6581_SID::CH3_SUSTAIN_RELEASE (byte) MOS6581_SID::FILTER_CUTOFF_HIGH (byte) MOS6581_SID::FILTER_CUTOFF_LOW (byte) MOS6581_SID::FILTER_SETUP (byte) MOS6581_SID::POT_X (byte) MOS6581_SID::POT_Y (byte) MOS6581_SID::VOLUME_FILTER_MODE (void()) bitmap_clear() (byte*) bitmap_clear::bitmap (word) bitmap_clear::bitmap#0 11.0 (byte*) bitmap_clear::bitmap#1 420.59999999999997 (byte*) bitmap_clear::bitmap#2 1552.0 (byte*) bitmap_clear::bitmap#3 213.0 (byte*) bitmap_clear::bitmap#5 22.0 (byte) bitmap_clear::x (byte) bitmap_clear::x#1 1501.5 (byte) bitmap_clear::x#2 667.3333333333334 (byte) bitmap_clear::y (byte) bitmap_clear::y#1 151.5 (byte) bitmap_clear::y#4 33.666666666666664 (void()) bitmap_init((byte*) bitmap_init::bitmap) (byte~) bitmap_init::$0 202.0 (byte~) bitmap_init::$10 50.5 (byte~) bitmap_init::$7 202.0 (byte~) bitmap_init::$8 202.0 (byte~) bitmap_init::$9 202.0 (byte*) bitmap_init::bitmap (byte) bitmap_init::bits (byte) bitmap_init::bits#1 101.0 (byte) bitmap_init::bits#3 60.599999999999994 (byte) bitmap_init::bits#4 67.33333333333333 (byte) bitmap_init::x (byte) bitmap_init::x#1 151.5 (byte) bitmap_init::x#2 67.33333333333333 (byte) bitmap_init::y (byte) bitmap_init::y#1 151.5 (byte) bitmap_init::y#2 50.5 (byte*) bitmap_init::yoffs (byte*) bitmap_init::yoffs#1 202.0 (byte*) bitmap_init::yoffs#2 63.125 (byte*) bitmap_init::yoffs#4 101.0 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (byte) bitmap_line::x0 (byte) bitmap_line::x1 (byte) bitmap_line::x1#0 85.99999999999999 (byte) bitmap_line::xd (byte) bitmap_line::xd#1 134.66666666666666 (byte) bitmap_line::xd#2 134.66666666666666 (byte) bitmap_line::y0 (byte) bitmap_line::y1 (byte) bitmap_line::yd (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) (byte) bitmap_line_xdyd::e (byte) bitmap_line_xdyd::e#1 133334.66666666666 (byte) bitmap_line_xdyd::e#2 200002.0 (byte) bitmap_line_xdyd::e#3 40000.4 (byte) bitmap_line_xdyd::e#6 150001.5 (byte) bitmap_line_xdyd::x (byte) bitmap_line_xdyd::x#0 367.33333333333337 (byte) bitmap_line_xdyd::x#2 42857.57142857143 (byte) bitmap_line_xdyd::x#3 75251.0 (byte) bitmap_line_xdyd::x1 (byte) bitmap_line_xdyd::xd (byte) bitmap_line_xdyd::xd#0 15392.538461538461 (byte) bitmap_line_xdyd::y (byte) bitmap_line_xdyd::y#2 100001.0 (byte) bitmap_line_xdyd::y#3 57143.42857142857 (byte) bitmap_line_xdyd::y#6 150001.5 (byte) bitmap_line_xdyd::yd (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) (byte~) bitmap_line_xdyi::$6 200002.0 (byte) bitmap_line_xdyi::e (byte) bitmap_line_xdyi::e#1 133334.66666666666 (byte) bitmap_line_xdyi::e#2 200002.0 (byte) bitmap_line_xdyi::e#3 40000.4 (byte) bitmap_line_xdyi::e#6 100001.0 (byte) bitmap_line_xdyi::x (byte) bitmap_line_xdyi::x#2 37500.375 (byte) bitmap_line_xdyi::x#3 75000.75 (byte) bitmap_line_xdyi::x1 (byte) bitmap_line_xdyi::x1#1 6673.466666666667 (byte) bitmap_line_xdyi::xd (byte) bitmap_line_xdyi::xd#1 14293.071428571428 (byte) bitmap_line_xdyi::y (byte) bitmap_line_xdyi::y#2 100001.0 (byte) bitmap_line_xdyi::y#3 57143.42857142857 (byte) bitmap_line_xdyi::y#6 100001.0 (byte) bitmap_line_xdyi::yd (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) (byte) bitmap_line_ydxd::e (byte) bitmap_line_ydxd::e#0 2002.0 (byte) bitmap_line_ydxd::e#1 133334.66666666666 (byte) bitmap_line_ydxd::e#2 200002.0 (byte) bitmap_line_ydxd::e#3 40200.600000000006 (byte) bitmap_line_ydxd::e#6 150001.5 (byte) bitmap_line_ydxd::x (byte) bitmap_line_ydxd::x#2 100001.0 (byte) bitmap_line_ydxd::x#3 57143.42857142857 (byte) bitmap_line_ydxd::x#6 150001.5 (byte) bitmap_line_ydxd::xd (byte) bitmap_line_ydxd::xd#0 7777.153846153846 (byte) bitmap_line_ydxd::y (byte) bitmap_line_ydxd::y#2 75000.75 (byte) bitmap_line_ydxd::y#3 42857.57142857143 (byte) bitmap_line_ydxd::y1 (byte) bitmap_line_ydxd::yd (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) (byte) bitmap_line_ydxi::e (byte) bitmap_line_ydxi::e#0 2002.0 (byte) bitmap_line_ydxi::e#1 133334.66666666666 (byte) bitmap_line_ydxi::e#2 200002.0 (byte) bitmap_line_ydxi::e#3 40200.600000000006 (byte) bitmap_line_ydxi::e#6 150001.5 (byte) bitmap_line_ydxi::x (byte) bitmap_line_ydxi::x#2 100001.0 (byte) bitmap_line_ydxi::x#3 57143.42857142857 (byte) bitmap_line_ydxi::x#6 150001.5 (byte) bitmap_line_ydxi::xd (byte) bitmap_line_ydxi::xd#1 7777.153846153846 (byte) bitmap_line_ydxi::y (byte) bitmap_line_ydxi::y#2 42857.57142857143 (byte) bitmap_line_ydxi::y#3 75000.75 (byte) bitmap_line_ydxi::y1 (byte) bitmap_line_ydxi::yd (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) (byte~) bitmap_plot::$1 2000002.0 (byte*) bitmap_plot::plotter (word) bitmap_plot::plotter#0 500000.5 (word) bitmap_plot::plotter_x (word) bitmap_plot::plotter_x#0 1000001.0 (word) bitmap_plot::plotter_y (word) bitmap_plot::plotter_y#0 2000002.0 (byte) bitmap_plot::x (byte) bitmap_plot::x#0 100001.0 (byte) bitmap_plot::x#1 100001.0 (byte) bitmap_plot::x#2 100001.0 (byte) bitmap_plot::x#3 100001.0 (byte) bitmap_plot::x#4 850001.75 (byte) bitmap_plot::y (byte) bitmap_plot::y#0 200002.0 (byte) bitmap_plot::y#1 200002.0 (byte) bitmap_plot::y#2 200002.0 (byte) bitmap_plot::y#3 200002.0 (byte) bitmap_plot::y#4 1200003.0 (void()) init_screen() (byte*) init_screen::c (byte*) init_screen::c#1 202.0 (byte*) init_screen::c#2 134.66666666666666 (void()) main() (byte) next (byte) next#0 22.0 (byte) next#5 11.0 Initial phi equivalence classes [ next#5 next#0 ] [ bitmap_init::x#2 bitmap_init::x#1 ] [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] [ bitmap_init::y#2 bitmap_init::y#1 ] [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#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 ] [ init_screen::c#2 init_screen::c#1 ] [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] Added variable bitmap_line::x1#0 to live range equivalence class [ bitmap_line::x1#0 ] Added variable bitmap_init::$0 to live range equivalence class [ bitmap_init::$0 ] Added variable bitmap_init::$10 to live range equivalence class [ bitmap_init::$10 ] Added variable bitmap_init::$7 to live range equivalence class [ bitmap_init::$7 ] Added variable bitmap_init::$8 to live range equivalence class [ bitmap_init::$8 ] Added variable bitmap_init::$9 to live range equivalence class [ bitmap_init::$9 ] Added variable bitmap_clear::bitmap#0 to live range equivalence class [ bitmap_clear::bitmap#0 ] Added variable bitmap_line::xd#2 to live range equivalence class [ bitmap_line::xd#2 ] Added variable bitmap_line_ydxd::xd#0 to live range equivalence class [ bitmap_line_ydxd::xd#0 ] Added variable bitmap_line_xdyd::xd#0 to live range equivalence class [ bitmap_line_xdyd::xd#0 ] Added variable bitmap_line::xd#1 to live range equivalence class [ bitmap_line::xd#1 ] Added variable bitmap_line_ydxi::xd#1 to live range equivalence class [ bitmap_line_ydxi::xd#1 ] Added variable bitmap_line_xdyi::x1#1 to live range equivalence class [ bitmap_line_xdyi::x1#1 ] Added variable bitmap_line_xdyi::xd#1 to live range equivalence class [ bitmap_line_xdyi::xd#1 ] Added variable bitmap_line_xdyi::$6 to live range equivalence class [ bitmap_line_xdyi::$6 ] Added variable bitmap_plot::plotter_x#0 to live range equivalence class [ bitmap_plot::plotter_x#0 ] Added variable bitmap_plot::plotter_y#0 to live range equivalence class [ bitmap_plot::plotter_y#0 ] Added variable bitmap_plot::plotter#0 to live range equivalence class [ bitmap_plot::plotter#0 ] Added variable bitmap_plot::$1 to live range equivalence class [ bitmap_plot::$1 ] Complete equivalence classes [ next#5 next#0 ] [ bitmap_init::x#2 bitmap_init::x#1 ] [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] [ bitmap_init::y#2 bitmap_init::y#1 ] [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#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 ] [ init_screen::c#2 init_screen::c#1 ] [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] [ bitmap_line::x1#0 ] [ bitmap_init::$0 ] [ bitmap_init::$10 ] [ bitmap_init::$7 ] [ bitmap_init::$8 ] [ bitmap_init::$9 ] [ bitmap_clear::bitmap#0 ] [ bitmap_line::xd#2 ] [ bitmap_line_ydxd::xd#0 ] [ bitmap_line_xdyd::xd#0 ] [ bitmap_line::xd#1 ] [ bitmap_line_ydxi::xd#1 ] [ bitmap_line_xdyi::x1#1 ] [ bitmap_line_xdyi::xd#1 ] [ bitmap_line_xdyi::$6 ] [ bitmap_plot::plotter_x#0 ] [ bitmap_plot::plotter_y#0 ] [ bitmap_plot::plotter#0 ] [ bitmap_plot::$1 ] Allocated zp[1]:2 [ next#5 next#0 ] Allocated zp[1]:3 [ bitmap_init::x#2 bitmap_init::x#1 ] Allocated zp[1]:4 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] Allocated zp[1]:5 [ bitmap_init::y#2 bitmap_init::y#1 ] Allocated zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] Allocated zp[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Allocated zp[2]:9 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] Allocated zp[1]:11 [ bitmap_clear::x#2 bitmap_clear::x#1 ] Allocated zp[2]:12 [ init_screen::c#2 init_screen::c#1 ] Allocated zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Allocated zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Allocated zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] Allocated zp[1]:17 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] Allocated zp[1]:18 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] Allocated zp[1]:19 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] Allocated zp[1]:20 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] Allocated zp[1]:21 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] Allocated zp[1]:22 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] Allocated zp[1]:23 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] Allocated zp[1]:24 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Allocated zp[1]:25 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Allocated zp[1]:26 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] Allocated zp[1]:27 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] Allocated zp[1]:28 [ bitmap_line::x1#0 ] Allocated zp[1]:29 [ bitmap_init::$0 ] Allocated zp[1]:30 [ bitmap_init::$10 ] Allocated zp[1]:31 [ bitmap_init::$7 ] Allocated zp[1]:32 [ bitmap_init::$8 ] Allocated zp[1]:33 [ bitmap_init::$9 ] Allocated zp[2]:34 [ bitmap_clear::bitmap#0 ] Allocated zp[1]:36 [ bitmap_line::xd#2 ] Allocated zp[1]:37 [ bitmap_line_ydxd::xd#0 ] Allocated zp[1]:38 [ bitmap_line_xdyd::xd#0 ] Allocated zp[1]:39 [ bitmap_line::xd#1 ] Allocated zp[1]:40 [ bitmap_line_ydxi::xd#1 ] Allocated zp[1]:41 [ bitmap_line_xdyi::x1#1 ] Allocated zp[1]:42 [ bitmap_line_xdyi::xd#1 ] Allocated zp[1]:43 [ bitmap_line_xdyi::$6 ] Allocated zp[2]:44 [ bitmap_plot::plotter_x#0 ] Allocated zp[2]:46 [ bitmap_plot::plotter_y#0 ] Allocated zp[2]:48 [ bitmap_plot::plotter#0 ] Allocated zp[1]:50 [ bitmap_plot::$1 ] INITIAL ASM Target platform is c64basic / MOS6502X // File Comments // Illustrates problem with bitmap-draw.kc line() // Reported by Janne Johansson // Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" // Global Constants & labels .const VIC_BMM = $20 .const VIC_DEN = $10 .const VIC_RSEL = 8 .label BORDER_COLOR = $d020 .label BG_COLOR = $d021 .label D011 = $d011 .label VIC_MEMORY = $d018 .label SCREEN = $400 .label BITMAP = $2000 .label next = 2 // main main: { // [0] *((const nomodify byte*) BORDER_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDER_COLOR // [1] *((const nomodify byte*) BG_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BG_COLOR // [2] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 // [3] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) BITMAP&(word) $3fff/(word) $400 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400 sta VIC_MEMORY // [4] call bitmap_init // [13] phi from main to bitmap_init [phi:main->bitmap_init] bitmap_init_from_main: jsr bitmap_init // [5] phi from main to main::@2 [phi:main->main::@2] __b2_from_main: jmp __b2 // main::@2 __b2: // [6] call bitmap_clear jsr bitmap_clear // [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] __b3_from___b2: jmp __b3 // main::@3 __b3: // [8] call init_screen // [49] phi from main::@3 to init_screen [phi:main::@3->init_screen] init_screen_from___b3: jsr init_screen // [9] phi from main::@3 to main::@1 [phi:main::@3->main::@1] __b1_from___b3: // [9] phi (byte) next#5 = (byte) 0 [phi:main::@3->main::@1#0] -- vbuz1=vbuc1 lda #0 sta.z next jmp __b1 // main::@1 __b1: // [10] (byte) bitmap_line::x1#0 ← (byte) next#5 -- vbuz1=vbuz2 lda.z next sta.z bitmap_line.x1 // [11] call bitmap_line jsr bitmap_line jmp __b4 // main::@4 __b4: // [12] (byte) next#0 ← ++ (byte) next#5 -- vbuz1=_inc_vbuz1 inc.z next // [9] phi from main::@4 to main::@1 [phi:main::@4->main::@1] __b1_from___b4: // [9] phi (byte) next#5 = (byte) next#0 [phi:main::@4->main::@1#0] -- register_copy jmp __b1 } // bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { .label __0 = $1d .label __7 = $1f .label __8 = $20 .label __9 = $21 .label __10 = $1e .label bits = 4 .label x = 3 .label y = 5 .label yoffs = 6 // [14] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] __b1_from_bitmap_init: // [14] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#0] -- vbuz1=vbuc1 lda #$80 sta.z bits // [14] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#1] -- vbuz1=vbuc1 lda #0 sta.z x jmp __b1 // [14] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] __b1_from___b2: // [14] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy // [14] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp __b1 // bitmap_init::@1 __b1: // [15] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 -- vbuz1=vbuz2_band_vbuc1 lda #$f8 and.z x sta.z __0 // [16] *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuz1=vbuz2 lda.z __0 ldy.z x sta bitmap_plot_xlo,y // [17] *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const nomodify byte*) BITMAP -- pbuc1_derefidx_vbuz1=vbuc2 lda #>BITMAP ldy.z x sta bitmap_plot_xhi,y // [18] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuz1=vbuz2 lda.z bits ldy.z x sta bitmap_plot_bit,y // [19] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuz1=vbuz1_ror_1 lsr.z bits // [20] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuz1_neq_0_then_la1 lda.z bits cmp #0 bne __b6_from___b1 // [22] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] __b2_from___b1: // [22] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuz1=vbuc1 lda #$80 sta.z bits jmp __b2 // [21] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] __b6_from___b1: jmp __b6 // bitmap_init::@6 __b6: // [22] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] __b2_from___b6: // [22] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy jmp __b2 // bitmap_init::@2 __b2: // [23] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuz1=_inc_vbuz1 inc.z x // [24] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuz1_neq_0_then_la1 lda.z x cmp #0 bne __b1_from___b2 // [25] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] __b3_from___b2: // [25] phi (byte*) bitmap_init::yoffs#2 = (byte*) 0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #<0 sta.z yoffs lda #>0 sta.z yoffs+1 // [25] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuz1=vbuc1 lda #0 sta.z y jmp __b3 // [25] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] __b3_from___b4: // [25] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy // [25] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp __b3 // bitmap_init::@3 __b3: // [26] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuz2_band_vbuc1 lda #7 and.z y sta.z __10 // [27] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuz1=_lo_pbuz2 lda.z yoffs sta.z __7 // [28] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$10 | (byte~) bitmap_init::$7 -- vbuz1=vbuz2_bor_vbuz3 lda.z __10 ora.z __7 sta.z __8 // [29] *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuz1=vbuz2 lda.z __8 ldy.z y sta bitmap_plot_ylo,y // [30] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuz1=_hi_pbuz2 lda.z yoffs+1 sta.z __9 // [31] *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuz1=vbuz2 lda.z __9 ldy.z y sta bitmap_plot_yhi,y // [32] if((byte~) bitmap_init::$10!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda #7 cmp.z __10 bne __b4_from___b3 jmp __b5 // bitmap_init::@5 __b5: // [33] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda.z yoffs adc #<$28*8 sta.z yoffs lda.z yoffs+1 adc #>$28*8 sta.z yoffs+1 // [34] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] __b4_from___b3: __b4_from___b5: // [34] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy jmp __b4 // bitmap_init::@4 __b4: // [35] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuz1=_inc_vbuz1 inc.z y // [36] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuz1_neq_0_then_la1 lda.z y cmp #0 bne __b3_from___b4 jmp __breturn // bitmap_init::@return __breturn: // [37] return rts } // bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = $22 .label bitmap_1 = 9 .label x = $b .label y = 8 // [38] (word) bitmap_clear::bitmap#0 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_xlo sta.z bitmap lda bitmap_plot_xhi sta.z bitmap+1 // [39] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 -- pbuz1=pbuz2 lda.z bitmap sta.z bitmap_1 lda.z bitmap+1 sta.z bitmap_1+1 // [40] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] __b1_from_bitmap_clear: // [40] phi (byte) bitmap_clear::y#4 = (byte) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta.z y // [40] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp __b1 // [40] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] __b1_from___b3: // [40] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy // [40] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp __b1 // bitmap_clear::@1 __b1: // [41] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] __b2_from___b1: // [41] phi (byte) bitmap_clear::x#2 = (byte) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuz1=vbuc1 lda #0 sta.z x // [41] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp __b2 // [41] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] __b2_from___b2: // [41] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy // [41] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp __b2 // bitmap_clear::@2 __b2: // [42] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (bitmap_1),y // [43] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc.z bitmap_1 bne !+ inc.z bitmap_1+1 !: // [44] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuz1=_inc_vbuz1 inc.z x // [45] if((byte) bitmap_clear::x#1!=(byte) $c8) goto bitmap_clear::@2 -- vbuz1_neq_vbuc1_then_la1 lda #$c8 cmp.z x bne __b2_from___b2 jmp __b3 // bitmap_clear::@3 __b3: // [46] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc.z y // [47] if((byte) bitmap_clear::y#1!=(byte) $28) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp.z y bne __b1_from___b3 jmp __breturn // bitmap_clear::@return __breturn: // [48] return rts } // init_screen init_screen: { .label c = $c // [50] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] __b1_from_init_screen: // [50] phi (byte*) init_screen::c#2 = (const nomodify byte*) SCREEN [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta.z c+1 jmp __b1 // init_screen::@1 __b1: // [51] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z c+1 cmp #>SCREEN+$400 bne __b2 lda.z c cmp #init_screen::@1] __b1_from___b2: // [50] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@1#0] -- register_copy jmp __b1 } // bitmap_line // Draw a line on the bitmap // bitmap_line(byte zp($1c) x1) bitmap_line: { .label x0 = 0 .label y0 = 0 .label y1 = $64 .label xd = $27 .label xd_1 = $24 .label x1 = $1c // [55] if((const byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuc1_lt_vbuz1_then_la1 lda #x0 cmp.z x1 bcc __b1 jmp __b2 // bitmap_line::@2 __b2: // [56] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda.z x1 sta.z xd_1 jmp __b3 // bitmap_line::@3 __b3: // [57] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#2) goto bitmap_line::@4 -- vbuc1_lt_vbuz1_then_la1 lda #y1 cmp.z xd_1 bcc __b4 jmp __b5 // bitmap_line::@5 __b5: // [58] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#2 -- vbuz1=vbuz2 lda.z xd_1 sta.z bitmap_line_ydxd.xd // [59] call bitmap_line_ydxd jsr bitmap_line_ydxd jmp __breturn // bitmap_line::@return __breturn: // [60] return rts // bitmap_line::@4 __b4: // [61] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda.z x1 sta.z bitmap_line_xdyd.x // [62] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#2 -- vbuz1=vbuz2 lda.z xd_1 sta.z bitmap_line_xdyd.xd // [63] call bitmap_line_xdyd // [84] phi from bitmap_line::@4 to bitmap_line_xdyd [phi:bitmap_line::@4->bitmap_line_xdyd] bitmap_line_xdyd_from___b4: jsr bitmap_line_xdyd jmp __breturn // bitmap_line::@1 __b1: // [64] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda.z x1 sta.z xd jmp __b6 // bitmap_line::@6 __b6: // [65] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#1) goto bitmap_line::@7 -- vbuc1_lt_vbuz1_then_la1 lda #y1 cmp.z xd bcc __b7 jmp __b8 // bitmap_line::@8 __b8: // [66] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda.z xd sta.z bitmap_line_ydxi.xd // [67] call bitmap_line_ydxi jsr bitmap_line_ydxi jmp __breturn // bitmap_line::@7 __b7: // [68] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuz2 lda.z x1 sta.z bitmap_line_xdyi.x1 // [69] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuz2 lda.z xd sta.z bitmap_line_xdyi.xd // [70] call bitmap_line_xdyi // [110] phi from bitmap_line::@7 to bitmap_line_xdyi [phi:bitmap_line::@7->bitmap_line_xdyi] bitmap_line_xdyi_from___b7: jsr bitmap_line_xdyi jmp __breturn } // bitmap_line_ydxd // bitmap_line_ydxd(byte zp($f) y, byte zp($e) x, byte zp($25) xd) bitmap_line_ydxd: { .label xd = $25 .label e = $10 .label y = $f .label x = $e // [71] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd lsr sta.z e // [72] phi from bitmap_line_ydxd to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1] __b1_from_bitmap_line_ydxd: // [72] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#0] -- register_copy // [72] phi (byte) bitmap_line_ydxd::y#2 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [72] phi (byte) bitmap_line_ydxd::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x jmp __b1 // [72] phi from bitmap_line_ydxd::@2 to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1] __b1_from___b2: // [72] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#6 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#0] -- register_copy // [72] phi (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#3 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#1] -- register_copy // [72] phi (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#6 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#2] -- register_copy jmp __b1 // bitmap_line_ydxd::@1 __b1: // [73] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuz1=vbuz2 lda.z x sta.z bitmap_plot.x // [74] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuz1=vbuz2 lda.z y sta.z bitmap_plot.y // [75] call bitmap_plot // [124] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] bitmap_plot_from___b1: // [124] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy // [124] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_ydxd::@4 __b4: // [76] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc.z y // [77] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 -- vbuz1=vbuz1_plus_vbuz2 lda.z e clc adc.z xd sta.z e // [78] if((const byte) bitmap_line::y1#0>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuc1_ge_vbuz1_then_la1 lda #bitmap_line.y1 cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_ydxd::@3 __b3: // [79] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 dec.z x // [80] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_minus_vbuc1 lax.z e axs #bitmap_line.y1 stx.z e // [81] phi from bitmap_line_ydxd::@3 bitmap_line_ydxd::@4 to bitmap_line_ydxd::@2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2] __b2_from___b3: __b2_from___b4: // [81] phi (byte) bitmap_line_ydxd::e#6 = (byte) bitmap_line_ydxd::e#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2#0] -- register_copy // [81] phi (byte) bitmap_line_ydxd::x#6 = (byte) bitmap_line_ydxd::x#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2#1] -- register_copy jmp __b2 // bitmap_line_ydxd::@2 __b2: // [82] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuc1_then_la1 lda #bitmap_line.y1+1 cmp.z y bne __b1_from___b2 jmp __breturn // bitmap_line_ydxd::@return __breturn: // [83] return rts } // bitmap_line_xdyd // bitmap_line_xdyd(byte zp($11) x, byte zp($12) y, byte zp($26) xd) bitmap_line_xdyd: { .label x = $11 .label xd = $26 .label e = $13 .label y = $12 // [85] phi from bitmap_line_xdyd to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1] __b1_from_bitmap_line_xdyd: // [85] phi (byte) bitmap_line_xdyd::e#3 = (const byte) bitmap_line::y1#0>>(byte) 1 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#0] -- vbuz1=vbuc1 lda #bitmap_line.y1>>1 sta.z e // [85] phi (byte) bitmap_line_xdyd::y#3 = (const byte) bitmap_line::y1#0 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y1 sta.z y // [85] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#2] -- register_copy jmp __b1 // [85] phi from bitmap_line_xdyd::@2 to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1] __b1_from___b2: // [85] phi (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#6 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#0] -- register_copy // [85] phi (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#6 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#1] -- register_copy // [85] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#2 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#2] -- register_copy jmp __b1 // bitmap_line_xdyd::@1 __b1: // [86] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuz1=vbuz2 lda.z x sta.z bitmap_plot.x // [87] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuz1=vbuz2 lda.z y sta.z bitmap_plot.y // [88] call bitmap_plot // [124] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] bitmap_plot_from___b1: // [124] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy // [124] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_xdyd::@4 __b4: // [89] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc.z x // [90] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_plus_vbuc1 lax.z e axs #-[bitmap_line.y1] stx.z e // [91] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 lda.z xd cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_xdyd::@3 __b3: // [92] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec.z y // [93] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec sbc.z xd sta.z e // [94] phi from bitmap_line_xdyd::@3 bitmap_line_xdyd::@4 to bitmap_line_xdyd::@2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2] __b2_from___b3: __b2_from___b4: // [94] phi (byte) bitmap_line_xdyd::e#6 = (byte) bitmap_line_xdyd::e#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2#0] -- register_copy // [94] phi (byte) bitmap_line_xdyd::y#6 = (byte) bitmap_line_xdyd::y#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2#1] -- register_copy jmp __b2 // bitmap_line_xdyd::@2 __b2: // [95] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuc1_then_la1 lda #1 cmp.z x bne __b1_from___b2 jmp __breturn // bitmap_line_xdyd::@return __breturn: // [96] return rts } // bitmap_line_ydxi // bitmap_line_ydxi(byte zp($15) y, byte zp($14) x, byte zp($28) xd) bitmap_line_ydxi: { .label xd = $28 .label e = $16 .label y = $15 .label x = $14 // [97] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd lsr sta.z e // [98] phi from bitmap_line_ydxi to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1] __b1_from_bitmap_line_ydxi: // [98] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#0] -- register_copy // [98] phi (byte) bitmap_line_ydxi::y#3 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [98] phi (byte) bitmap_line_ydxi::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x jmp __b1 // [98] phi from bitmap_line_ydxi::@2 to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1] __b1_from___b2: // [98] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#6 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#0] -- register_copy // [98] phi (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#2 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#1] -- register_copy // [98] phi (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#6 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#2] -- register_copy jmp __b1 // bitmap_line_ydxi::@1 __b1: // [99] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuz1=vbuz2 lda.z x sta.z bitmap_plot.x // [100] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuz1=vbuz2 lda.z y sta.z bitmap_plot.y // [101] call bitmap_plot // [124] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] bitmap_plot_from___b1: // [124] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy // [124] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_ydxi::@4 __b4: // [102] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc.z y // [103] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 -- vbuz1=vbuz1_plus_vbuz2 lda.z e clc adc.z xd sta.z e // [104] if((const byte) bitmap_line::y1#0>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuc1_ge_vbuz1_then_la1 lda #bitmap_line.y1 cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_ydxi::@3 __b3: // [105] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 inc.z x // [106] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_minus_vbuc1 lax.z e axs #bitmap_line.y1 stx.z e // [107] phi from bitmap_line_ydxi::@3 bitmap_line_ydxi::@4 to bitmap_line_ydxi::@2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2] __b2_from___b3: __b2_from___b4: // [107] phi (byte) bitmap_line_ydxi::e#6 = (byte) bitmap_line_ydxi::e#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2#0] -- register_copy // [107] phi (byte) bitmap_line_ydxi::x#6 = (byte) bitmap_line_ydxi::x#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2#1] -- register_copy jmp __b2 // bitmap_line_ydxi::@2 __b2: // [108] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuc1_then_la1 lda #bitmap_line.y1+1 cmp.z y bne __b1_from___b2 jmp __breturn // bitmap_line_ydxi::@return __breturn: // [109] return rts } // bitmap_line_xdyi // bitmap_line_xdyi(byte zp($17) x, byte zp($18) y, byte zp($29) x1, byte zp($2a) xd) bitmap_line_xdyi: { .label __6 = $2b .label x1 = $29 .label xd = $2a .label x = $17 .label e = $19 .label y = $18 // [111] phi from bitmap_line_xdyi to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1] __b1_from_bitmap_line_xdyi: // [111] phi (byte) bitmap_line_xdyi::e#3 = (const byte) bitmap_line::y1#0>>(byte) 1 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#0] -- vbuz1=vbuc1 lda #bitmap_line.y1>>1 sta.z e // [111] phi (byte) bitmap_line_xdyi::y#3 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [111] phi (byte) bitmap_line_xdyi::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x jmp __b1 // [111] phi from bitmap_line_xdyi::@2 to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1] __b1_from___b2: // [111] phi (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#6 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#0] -- register_copy // [111] phi (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#6 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#1] -- register_copy // [111] phi (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#2 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#2] -- register_copy jmp __b1 // bitmap_line_xdyi::@1 __b1: // [112] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuz1=vbuz2 lda.z x sta.z bitmap_plot.x // [113] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuz1=vbuz2 lda.z y sta.z bitmap_plot.y // [114] call bitmap_plot // [124] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] bitmap_plot_from___b1: // [124] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy // [124] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_xdyi::@4 __b4: // [115] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc.z x // [116] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_plus_vbuc1 lax.z e axs #-[bitmap_line.y1] stx.z e // [117] if((byte) bitmap_line_xdyi::xd#1>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 lda.z xd cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_xdyi::@3 __b3: // [118] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc.z y // [119] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec sbc.z xd sta.z e // [120] phi from bitmap_line_xdyi::@3 bitmap_line_xdyi::@4 to bitmap_line_xdyi::@2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2] __b2_from___b3: __b2_from___b4: // [120] phi (byte) bitmap_line_xdyi::e#6 = (byte) bitmap_line_xdyi::e#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2#0] -- register_copy // [120] phi (byte) bitmap_line_xdyi::y#6 = (byte) bitmap_line_xdyi::y#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2#1] -- register_copy jmp __b2 // bitmap_line_xdyi::@2 __b2: // [121] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#1 + (byte) 1 -- vbuz1=vbuz2_plus_1 ldy.z x1 iny sty.z __6 // [122] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuz2_then_la1 lda.z x cmp.z __6 bne __b1_from___b2 jmp __breturn // bitmap_line_xdyi::@return __breturn: // [123] return rts } // bitmap_plot // bitmap_plot(byte zp($1a) x, byte zp($1b) y) bitmap_plot: { .label __1 = $32 .label plotter_x = $2c .label plotter_y = $2e .label plotter = $30 .label x = $1a .label y = $1b // [125] (word) bitmap_plot::plotter_x#0 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 ldy.z x lda bitmap_plot_xhi,y sta.z plotter_x+1 lda bitmap_plot_xlo,y sta.z plotter_x // [126] (word) bitmap_plot::plotter_y#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuz2_word_pbuc2_derefidx_vbuz2 ldy.z y lda bitmap_plot_yhi,y sta.z plotter_y+1 lda bitmap_plot_ylo,y sta.z plotter_y // [127] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz2_plus_vwuz3 lda.z plotter_x clc adc.z plotter_y sta.z plotter lda.z plotter_x+1 adc.z plotter_y+1 sta.z plotter+1 // [128] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) -- vbuz1=_deref_pbuz2_bor_pbuc1_derefidx_vbuz3 ldy #0 lda (plotter),y ldy.z x ora bitmap_plot_bit,y sta.z __1 // [129] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuz2 lda.z __1 ldy #0 sta (plotter),y jmp __breturn // bitmap_plot::@return __breturn: // [130] return rts } // File Data // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 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[1]:31 [ bitmap_init::$7 ] has ALU potential. Statement [0] *((const nomodify byte*) BORDER_COLOR) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a Statement [1] *((const nomodify byte*) BG_COLOR) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a Statement [2] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [ ] ( [ ] { } ) always clobbers reg byte a Statement [3] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( [ ] { } ) always clobbers reg byte a Statement [17] *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const nomodify byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( bitmap_init:4 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:3 [ bitmap_init::x#2 bitmap_init::x#1 ] Removing always clobbered register reg byte a as potential for zp[1]:4 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] Statement [18] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( bitmap_init:4 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Statement [33] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( bitmap_init:4 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:5 [ bitmap_init::y#2 bitmap_init::y#1 ] Statement [38] (word) bitmap_clear::bitmap#0 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( bitmap_clear:6 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a Statement [39] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( bitmap_clear:6 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a Statement [42] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( bitmap_clear:6 [ 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[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte y as potential for zp[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Removing always clobbered register reg byte a as potential for zp[1]:11 [ bitmap_clear::x#2 bitmap_clear::x#1 ] Removing always clobbered register reg byte y as potential for zp[1]:11 [ bitmap_clear::x#2 bitmap_clear::x#1 ] Statement [51] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( init_screen:8 [ init_screen::c#2 ] { } ) always clobbers reg byte a Statement [53] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( init_screen:8 [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y Statement [71] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] ( bitmap_line:11::bitmap_line_ydxd:59 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:2 [ next#5 next#0 ] Removing always clobbered register reg byte a as potential for zp[1]:37 [ bitmap_line_ydxd::xd#0 ] Statement [77] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( bitmap_line:11::bitmap_line_ydxd:59 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Statement [80] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( bitmap_line:11::bitmap_line_ydxd:59 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [90] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( bitmap_line:11::bitmap_line_xdyd:63 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:38 [ bitmap_line_xdyd::xd#0 ] Removing always clobbered register reg byte a as potential for zp[1]:18 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] Removing always clobbered register reg byte a as potential for zp[1]:17 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] Statement [93] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( bitmap_line:11::bitmap_line_xdyd:63 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [97] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] ( bitmap_line:11::bitmap_line_ydxi:67 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:40 [ bitmap_line_ydxi::xd#1 ] Statement [103] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( bitmap_line:11::bitmap_line_ydxi:67 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:20 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:21 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] Statement [106] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( bitmap_line:11::bitmap_line_ydxi:67 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [116] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( bitmap_line:11::bitmap_line_xdyi:70 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:41 [ bitmap_line_xdyi::x1#1 ] Removing always clobbered register reg byte a as potential for zp[1]:42 [ bitmap_line_xdyi::xd#1 ] Removing always clobbered register reg byte a as potential for zp[1]:24 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Removing always clobbered register reg byte a as potential for zp[1]:23 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] Statement [119] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( bitmap_line:11::bitmap_line_xdyi:70 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [125] (word) bitmap_plot::plotter_x#0 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] Removing always clobbered register reg byte a as potential for zp[1]:26 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] Removing always clobbered register reg byte a as potential for zp[1]:27 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] Removing always clobbered register reg byte a as potential for zp[1]:19 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] Removing always clobbered register reg byte a as potential for zp[1]:22 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] Removing always clobbered register reg byte a as potential for zp[1]:25 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Statement [126] (word) bitmap_plot::plotter_y#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte a Statement [127] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte a Statement [128] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:2 [ next#5 next#0 ] Removing always clobbered register reg byte y as potential for zp[1]:37 [ bitmap_line_ydxd::xd#0 ] Removing always clobbered register reg byte y as potential for zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Removing always clobbered register reg byte y as potential for zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte y as potential for zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] Removing always clobbered register reg byte y as potential for zp[1]:38 [ bitmap_line_xdyd::xd#0 ] Removing always clobbered register reg byte y as potential for zp[1]:17 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] Removing always clobbered register reg byte y as potential for zp[1]:18 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] Removing always clobbered register reg byte y as potential for zp[1]:19 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] Removing always clobbered register reg byte y as potential for zp[1]:40 [ bitmap_line_ydxi::xd#1 ] Removing always clobbered register reg byte y as potential for zp[1]:20 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] Removing always clobbered register reg byte y as potential for zp[1]:21 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] Removing always clobbered register reg byte y as potential for zp[1]:22 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] Removing always clobbered register reg byte y as potential for zp[1]:41 [ bitmap_line_xdyi::x1#1 ] Removing always clobbered register reg byte y as potential for zp[1]:42 [ bitmap_line_xdyi::xd#1 ] Removing always clobbered register reg byte y as potential for zp[1]:23 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] Removing always clobbered register reg byte y as potential for zp[1]:24 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Removing always clobbered register reg byte y as potential for zp[1]:25 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Statement [129] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte y Statement [0] *((const nomodify byte*) BORDER_COLOR) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a Statement [1] *((const nomodify byte*) BG_COLOR) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a Statement [2] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [ ] ( [ ] { } ) always clobbers reg byte a Statement [3] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( [ ] { } ) always clobbers reg byte a Statement [15] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( bitmap_init:4 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] { } ) always clobbers reg byte a Statement [17] *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const nomodify byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( bitmap_init:4 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Statement [18] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( bitmap_init:4 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Statement [26] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( bitmap_init:4 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] { } ) always clobbers reg byte a Statement [33] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( bitmap_init:4 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Statement [38] (word) bitmap_clear::bitmap#0 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( bitmap_clear:6 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a Statement [39] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( bitmap_clear:6 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a Statement [42] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( bitmap_clear:6 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] { } ) always clobbers reg byte a reg byte y Statement [51] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( init_screen:8 [ init_screen::c#2 ] { } ) always clobbers reg byte a Statement [53] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( init_screen:8 [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y Statement [71] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] ( bitmap_line:11::bitmap_line_ydxd:59 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [77] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( bitmap_line:11::bitmap_line_ydxd:59 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [80] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( bitmap_line:11::bitmap_line_ydxd:59 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:2 [ next#5 next#0 ] Removing always clobbered register reg byte x as potential for zp[1]:37 [ bitmap_line_ydxd::xd#0 ] Removing always clobbered register reg byte x as potential for zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Removing always clobbered register reg byte x as potential for zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Statement [82] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] ( bitmap_line:11::bitmap_line_ydxd:59 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [90] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( bitmap_line:11::bitmap_line_xdyd:63 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:38 [ bitmap_line_xdyd::xd#0 ] Removing always clobbered register reg byte x as potential for zp[1]:18 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] Removing always clobbered register reg byte x as potential for zp[1]:17 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] Statement [91] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( bitmap_line:11::bitmap_line_xdyd:63 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [93] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( bitmap_line:11::bitmap_line_xdyd:63 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [95] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] ( bitmap_line:11::bitmap_line_xdyd:63 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [97] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] ( bitmap_line:11::bitmap_line_ydxi:67 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [103] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( bitmap_line:11::bitmap_line_ydxi:67 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [106] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( bitmap_line:11::bitmap_line_ydxi:67 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:40 [ bitmap_line_ydxi::xd#1 ] Removing always clobbered register reg byte x as potential for zp[1]:21 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] Removing always clobbered register reg byte x as potential for zp[1]:20 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] Statement [108] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] ( bitmap_line:11::bitmap_line_ydxi:67 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [116] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( bitmap_line:11::bitmap_line_xdyi:70 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:41 [ bitmap_line_xdyi::x1#1 ] Removing always clobbered register reg byte x as potential for zp[1]:42 [ bitmap_line_xdyi::xd#1 ] Removing always clobbered register reg byte x as potential for zp[1]:24 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Removing always clobbered register reg byte x as potential for zp[1]:23 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] Statement [117] if((byte) bitmap_line_xdyi::xd#1>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( bitmap_line:11::bitmap_line_xdyi:70 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [119] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( bitmap_line:11::bitmap_line_xdyi:70 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [125] (word) bitmap_plot::plotter_x#0 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte a Statement [126] (word) bitmap_plot::plotter_y#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte a Statement [127] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte a Statement [128] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte a reg byte y Statement [129] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte y Statement [0] *((const nomodify byte*) BORDER_COLOR) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a Statement [1] *((const nomodify byte*) BG_COLOR) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a Statement [2] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 [ ] ( [ ] { } ) always clobbers reg byte a Statement [3] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) BITMAP&(word) $3fff/(word) $400 [ ] ( [ ] { } ) always clobbers reg byte a Statement [15] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] ( bitmap_init:4 [ bitmap_init::x#2 bitmap_init::bits#3 bitmap_init::$0 ] { } ) always clobbers reg byte a Statement [17] *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const nomodify byte*) BITMAP [ bitmap_init::x#2 bitmap_init::bits#3 ] ( bitmap_init:4 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Statement [18] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 [ bitmap_init::x#2 bitmap_init::bits#3 ] ( bitmap_init:4 [ bitmap_init::x#2 bitmap_init::bits#3 ] { } ) always clobbers reg byte a Statement [26] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] ( bitmap_init:4 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$10 ] { } ) always clobbers reg byte a Statement [33] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( bitmap_init:4 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Statement [38] (word) bitmap_clear::bitmap#0 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo) [ bitmap_clear::bitmap#0 ] ( bitmap_clear:6 [ bitmap_clear::bitmap#0 ] { } ) always clobbers reg byte a Statement [39] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 [ bitmap_clear::bitmap#5 ] ( bitmap_clear:6 [ bitmap_clear::bitmap#5 ] { } ) always clobbers reg byte a Statement [42] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] ( bitmap_clear:6 [ bitmap_clear::y#4 bitmap_clear::bitmap#2 bitmap_clear::x#2 ] { } ) always clobbers reg byte a reg byte y Statement [51] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 [ init_screen::c#2 ] ( init_screen:8 [ init_screen::c#2 ] { } ) always clobbers reg byte a Statement [53] *((byte*) init_screen::c#2) ← (byte) $14 [ init_screen::c#2 ] ( init_screen:8 [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y Statement [71] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] ( bitmap_line:11::bitmap_line_ydxd:59 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::e#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [77] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] ( bitmap_line:11::bitmap_line_ydxd:59 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#1 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [80] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] ( bitmap_line:11::bitmap_line_ydxd:59 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::y#3 bitmap_line_ydxd::x#2 bitmap_line_ydxd::e#2 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x Statement [82] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 [ bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] ( bitmap_line:11::bitmap_line_ydxd:59 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#6 bitmap_line_ydxd::y#3 bitmap_line_ydxd::e#6 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [90] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( bitmap_line:11::bitmap_line_xdyd:63 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a reg byte x Statement [91] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] ( bitmap_line:11::bitmap_line_xdyd:63 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::y#3 bitmap_line_xdyd::x#2 bitmap_line_xdyd::e#1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [93] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] ( bitmap_line:11::bitmap_line_xdyd:63 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#2 bitmap_line_xdyd::e#2 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [95] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 [ bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] ( bitmap_line:11::bitmap_line_xdyd:63 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#2 bitmap_line_xdyd::y#6 bitmap_line_xdyd::e#6 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } } ) always clobbers reg byte a Statement [97] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] ( bitmap_line:11::bitmap_line_ydxi:67 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::e#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [103] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] ( bitmap_line:11::bitmap_line_ydxi:67 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#1 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [106] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] ( bitmap_line:11::bitmap_line_ydxi:67 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::y#2 bitmap_line_ydxi::x#2 bitmap_line_ydxi::e#2 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a reg byte x Statement [108] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 [ bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] ( bitmap_line:11::bitmap_line_ydxi:67 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#6 bitmap_line_ydxi::y#2 bitmap_line_ydxi::e#6 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [116] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( bitmap_line:11::bitmap_line_xdyi:70 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a reg byte x Statement [117] if((byte) bitmap_line_xdyi::xd#1>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] ( bitmap_line:11::bitmap_line_xdyi:70 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::y#3 bitmap_line_xdyi::x#2 bitmap_line_xdyi::e#1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [119] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 [ bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] ( bitmap_line:11::bitmap_line_xdyi:70 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#2 bitmap_line_xdyi::y#2 bitmap_line_xdyi::e#2 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } } ) always clobbers reg byte a Statement [125] (word) bitmap_plot::plotter_x#0 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) [ bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::y#4 bitmap_plot::plotter_x#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte a Statement [126] (word) bitmap_plot::plotter_y#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) [ bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter_x#0 bitmap_plot::plotter_y#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte a Statement [127] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte a Statement [128] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) [ bitmap_plot::plotter#0 bitmap_plot::$1 ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte a reg byte y Statement [129] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 [ ] ( bitmap_line:11::bitmap_line_ydxd:59::bitmap_plot:75 [ next#5 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::x#3 bitmap_line_ydxd::y#2 bitmap_line_ydxd::e#3 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line_ydxd::x#3 } { bitmap_plot::y#3 = bitmap_plot::y#4 bitmap_line_ydxd::y#2 } } bitmap_line:11::bitmap_line_xdyd:63::bitmap_plot:88 [ next#5 bitmap_line_xdyd::xd#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::y#3 bitmap_line_xdyd::e#3 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyd::x#0 } { bitmap_line_xdyd::xd#0 = bitmap_line::xd#2 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line_xdyd::x#3 } { bitmap_plot::y#1 = bitmap_plot::y#4 bitmap_line_xdyd::y#3 } } bitmap_line:11::bitmap_line_ydxi:67::bitmap_plot:101 [ next#5 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::x#3 bitmap_line_ydxi::y#3 bitmap_line_ydxi::e#3 ] { { next#5 = bitmap_line::x1#0 } { bitmap_line_ydxi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line_ydxi::x#3 } { bitmap_plot::y#2 = bitmap_plot::y#4 bitmap_line_ydxi::y#3 } } bitmap_line:11::bitmap_line_xdyi:70::bitmap_plot:114 [ next#5 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::x#3 bitmap_line_xdyi::y#3 bitmap_line_xdyi::e#3 ] { { next#5 = bitmap_line::x1#0 bitmap_line_xdyi::x1#1 } { bitmap_line_xdyi::xd#1 = bitmap_line::xd#1 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line_xdyi::x#3 } { bitmap_plot::y#0 = bitmap_plot::y#4 bitmap_line_xdyi::y#3 } } ) always clobbers reg byte y Potential registers zp[1]:2 [ next#5 next#0 ] : zp[1]:2 , Potential registers zp[1]:3 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp[1]:3 , reg byte x , reg byte y , Potential registers zp[1]:4 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp[1]:4 , reg byte x , reg byte y , Potential registers zp[1]:5 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp[1]:5 , reg byte x , reg byte y , Potential registers zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp[2]:6 , Potential registers zp[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] : zp[1]:8 , reg byte x , Potential registers zp[2]:9 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] : zp[2]:9 , Potential registers zp[1]:11 [ bitmap_clear::x#2 bitmap_clear::x#1 ] : zp[1]:11 , reg byte x , Potential registers zp[2]:12 [ init_screen::c#2 init_screen::c#1 ] : zp[2]:12 , Potential registers zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] : zp[1]:14 , Potential registers zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] : zp[1]:15 , Potential registers zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] : zp[1]:16 , reg byte x , Potential registers zp[1]:17 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] : zp[1]:17 , Potential registers zp[1]:18 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] : zp[1]:18 , Potential registers zp[1]:19 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] : zp[1]:19 , reg byte x , Potential registers zp[1]:20 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] : zp[1]:20 , Potential registers zp[1]:21 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] : zp[1]:21 , Potential registers zp[1]:22 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] : zp[1]:22 , reg byte x , Potential registers zp[1]:23 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] : zp[1]:23 , Potential registers zp[1]:24 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] : zp[1]:24 , Potential registers zp[1]:25 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] : zp[1]:25 , reg byte x , Potential registers zp[1]:26 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] : zp[1]:26 , reg byte x , reg byte y , Potential registers zp[1]:27 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] : zp[1]:27 , reg byte x , reg byte y , Potential registers zp[1]:28 [ bitmap_line::x1#0 ] : zp[1]:28 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:29 [ bitmap_init::$0 ] : zp[1]:29 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:30 [ bitmap_init::$10 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:31 [ bitmap_init::$7 ] : zp[1]:31 , reg byte a , reg byte x , reg byte y , reg byte alu , Potential registers zp[1]:32 [ bitmap_init::$8 ] : zp[1]:32 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:33 [ bitmap_init::$9 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:34 [ bitmap_clear::bitmap#0 ] : zp[2]:34 , Potential registers zp[1]:36 [ bitmap_line::xd#2 ] : zp[1]:36 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:37 [ bitmap_line_ydxd::xd#0 ] : zp[1]:37 , Potential registers zp[1]:38 [ bitmap_line_xdyd::xd#0 ] : zp[1]:38 , Potential registers zp[1]:39 [ bitmap_line::xd#1 ] : zp[1]:39 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:40 [ bitmap_line_ydxi::xd#1 ] : zp[1]:40 , Potential registers zp[1]:41 [ bitmap_line_xdyi::x1#1 ] : zp[1]:41 , Potential registers zp[1]:42 [ bitmap_line_xdyi::xd#1 ] : zp[1]:42 , Potential registers zp[1]:43 [ bitmap_line_xdyi::$6 ] : zp[1]:43 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:44 [ bitmap_plot::plotter_x#0 ] : zp[2]:44 , Potential registers zp[2]:46 [ bitmap_plot::plotter_y#0 ] : zp[2]:46 , Potential registers zp[2]:48 [ bitmap_plot::plotter#0 ] : zp[2]:48 , Potential registers zp[1]:50 [ bitmap_plot::$1 ] : zp[1]:50 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [bitmap_plot] 2,000,011: zp[1]:27 [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] 2,000,002: zp[2]:46 [ bitmap_plot::plotter_y#0 ] 2,000,002: zp[1]:50 [ bitmap_plot::$1 ] 1,250,005.75: zp[1]:26 [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] 1,000,001: zp[2]:44 [ bitmap_plot::plotter_x#0 ] 500,000.5: zp[2]:48 [ bitmap_plot::plotter#0 ] Uplift Scope [bitmap_line_xdyi] 473,338.07: zp[1]:25 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] 257,145.43: zp[1]:24 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] 200,002: zp[1]:43 [ bitmap_line_xdyi::$6 ] 112,501.12: zp[1]:23 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] 14,293.07: zp[1]:42 [ bitmap_line_xdyi::xd#1 ] 6,673.47: zp[1]:41 [ bitmap_line_xdyi::x1#1 ] Uplift Scope [bitmap_line_xdyd] 523,338.57: zp[1]:19 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] 307,145.93: zp[1]:18 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] 118,475.9: zp[1]:17 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] 15,392.54: zp[1]:38 [ bitmap_line_xdyd::xd#0 ] Uplift Scope [bitmap_line_ydxi] 525,540.77: zp[1]:22 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] 307,145.93: zp[1]:20 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] 117,858.32: zp[1]:21 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] 7,777.15: zp[1]:40 [ bitmap_line_ydxi::xd#1 ] Uplift Scope [bitmap_line_ydxd] 525,540.77: zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] 307,145.93: zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] 117,858.32: zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] 7,777.15: zp[1]:37 [ bitmap_line_ydxd::xd#0 ] Uplift Scope [bitmap_clear] 2,207.6: zp[2]:9 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] 2,168.83: zp[1]:11 [ bitmap_clear::x#2 bitmap_clear::x#1 ] 185.17: zp[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] 11: zp[2]:34 [ bitmap_clear::bitmap#0 ] Uplift Scope [bitmap_init] 366.12: zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 228.93: zp[1]:4 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 218.83: zp[1]:3 [ bitmap_init::x#2 bitmap_init::x#1 ] 202: zp[1]:5 [ bitmap_init::y#2 bitmap_init::y#1 ] 202: zp[1]:29 [ bitmap_init::$0 ] 202: zp[1]:31 [ bitmap_init::$7 ] 202: zp[1]:32 [ bitmap_init::$8 ] 202: zp[1]:33 [ bitmap_init::$9 ] 50.5: zp[1]:30 [ bitmap_init::$10 ] Uplift Scope [bitmap_line] 134.67: zp[1]:36 [ bitmap_line::xd#2 ] 134.67: zp[1]:39 [ bitmap_line::xd#1 ] 86: zp[1]:28 [ bitmap_line::x1#0 ] Uplift Scope [init_screen] 336.67: zp[2]:12 [ init_screen::c#2 init_screen::c#1 ] Uplift Scope [] 33: zp[1]:2 [ next#5 next#0 ] Uplift Scope [MOS6526_CIA] Uplift Scope [MOS6569_VICII] Uplift Scope [MOS6581_SID] Uplift Scope [main] Uplifting [bitmap_plot] best 40153 combination reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] zp[2]:46 [ bitmap_plot::plotter_y#0 ] reg byte a [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] zp[2]:44 [ bitmap_plot::plotter_x#0 ] zp[2]:48 [ bitmap_plot::plotter#0 ] Uplifting [bitmap_line_xdyi] best 39553 combination zp[1]:25 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] zp[1]:24 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] reg byte x [ bitmap_line_xdyi::$6 ] zp[1]:23 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] zp[1]:42 [ bitmap_line_xdyi::xd#1 ] zp[1]:41 [ bitmap_line_xdyi::x1#1 ] Uplifting [bitmap_line_xdyd] best 39553 combination zp[1]:19 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] zp[1]:18 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] zp[1]:17 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] zp[1]:38 [ bitmap_line_xdyd::xd#0 ] Uplifting [bitmap_line_ydxi] best 39553 combination zp[1]:22 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] zp[1]:20 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] zp[1]:21 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] zp[1]:40 [ bitmap_line_ydxi::xd#1 ] Uplifting [bitmap_line_ydxd] best 39553 combination zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] zp[1]:37 [ bitmap_line_ydxd::xd#0 ] Uplifting [bitmap_clear] best 38653 combination zp[2]:9 [ 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[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:34 [ bitmap_clear::bitmap#0 ] Uplifting [bitmap_init] best 38133 combination zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$0 ] zp[1]:31 [ bitmap_init::$7 ] zp[1]:32 [ bitmap_init::$8 ] zp[1]:33 [ bitmap_init::$9 ] zp[1]:30 [ bitmap_init::$10 ] Limited combination testing to 100 combinations of 34560 possible. Uplifting [bitmap_line] best 38077 combination reg byte x [ bitmap_line::xd#2 ] reg byte x [ bitmap_line::xd#1 ] reg byte a [ bitmap_line::x1#0 ] Uplifting [init_screen] best 38077 combination zp[2]:12 [ init_screen::c#2 init_screen::c#1 ] Uplifting [] best 38077 combination zp[1]:2 [ next#5 next#0 ] Uplifting [MOS6526_CIA] best 38077 combination Uplifting [MOS6569_VICII] best 38077 combination Uplifting [MOS6581_SID] best 38077 combination Uplifting [main] best 38077 combination Attempting to uplift remaining variables inzp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] Uplifting [bitmap_line_ydxd] best 38077 combination zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] Attempting to uplift remaining variables inzp[1]:22 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] Uplifting [bitmap_line_ydxi] best 38077 combination zp[1]:22 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] Attempting to uplift remaining variables inzp[1]:19 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] Uplifting [bitmap_line_xdyd] best 38077 combination zp[1]:19 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] Attempting to uplift remaining variables inzp[1]:25 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Uplifting [bitmap_line_xdyi] best 38077 combination zp[1]:25 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] Attempting to uplift remaining variables inzp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Uplifting [bitmap_line_ydxd] best 38077 combination zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Attempting to uplift remaining variables inzp[1]:18 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] Uplifting [bitmap_line_xdyd] best 38077 combination zp[1]:18 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] Attempting to uplift remaining variables inzp[1]:20 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] Uplifting [bitmap_line_ydxi] best 38077 combination zp[1]:20 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] Attempting to uplift remaining variables inzp[1]:24 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Uplifting [bitmap_line_xdyi] best 38077 combination zp[1]:24 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] Attempting to uplift remaining variables inzp[1]:17 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] Uplifting [bitmap_line_xdyd] best 38077 combination zp[1]:17 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] Attempting to uplift remaining variables inzp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Uplifting [bitmap_line_ydxd] best 38077 combination zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Attempting to uplift remaining variables inzp[1]:21 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] Uplifting [bitmap_line_ydxi] best 38077 combination zp[1]:21 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] Attempting to uplift remaining variables inzp[1]:23 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] Uplifting [bitmap_line_xdyi] best 38077 combination zp[1]:23 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] Attempting to uplift remaining variables inzp[1]:38 [ bitmap_line_xdyd::xd#0 ] Uplifting [bitmap_line_xdyd] best 38077 combination zp[1]:38 [ bitmap_line_xdyd::xd#0 ] Attempting to uplift remaining variables inzp[1]:42 [ bitmap_line_xdyi::xd#1 ] Uplifting [bitmap_line_xdyi] best 38077 combination zp[1]:42 [ bitmap_line_xdyi::xd#1 ] Attempting to uplift remaining variables inzp[1]:37 [ bitmap_line_ydxd::xd#0 ] Uplifting [bitmap_line_ydxd] best 38077 combination zp[1]:37 [ bitmap_line_ydxd::xd#0 ] Attempting to uplift remaining variables inzp[1]:40 [ bitmap_line_ydxi::xd#1 ] Uplifting [bitmap_line_ydxi] best 38077 combination zp[1]:40 [ bitmap_line_ydxi::xd#1 ] Attempting to uplift remaining variables inzp[1]:41 [ bitmap_line_xdyi::x1#1 ] Uplifting [bitmap_line_xdyi] best 38077 combination zp[1]:41 [ bitmap_line_xdyi::x1#1 ] Attempting to uplift remaining variables inzp[1]:31 [ bitmap_init::$7 ] Uplifting [bitmap_init] best 38017 combination reg byte a [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp[1]:32 [ bitmap_init::$8 ] Uplifting [bitmap_init] best 37957 combination reg byte a [ bitmap_init::$8 ] Attempting to uplift remaining variables inzp[1]:33 [ bitmap_init::$9 ] Uplifting [bitmap_init] best 37897 combination reg byte a [ bitmap_init::$9 ] Attempting to uplift remaining variables inzp[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Uplifting [bitmap_clear] best 37897 combination zp[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] Attempting to uplift remaining variables inzp[1]:30 [ bitmap_init::$10 ] Uplifting [bitmap_init] best 37897 combination zp[1]:30 [ bitmap_init::$10 ] Attempting to uplift remaining variables inzp[1]:2 [ next#5 next#0 ] Uplifting [] best 37897 combination zp[1]:2 [ next#5 next#0 ] Coalescing zero page register [ zp[2]:9 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp[2]:34 [ bitmap_clear::bitmap#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:44 [ bitmap_plot::plotter_x#0 ] ] with [ zp[2]:48 [ bitmap_plot::plotter#0 ] ] - score: 1 Coalescing zero page register [ zp[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 ] ] with [ zp[1]:2 [ next#5 next#0 ] ] Coalescing zero page register [ zp[2]:9 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 ] ] with [ zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] Coalescing zero page register [ zp[1]:17 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 ] ] with [ zp[1]:14 [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] ] Coalescing zero page register [ zp[1]:18 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ] ] with [ zp[1]:15 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] ] Coalescing zero page register [ zp[1]:19 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ] ] with [ zp[1]:16 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] ] Coalescing zero page register [ zp[1]:23 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 ] ] with [ zp[1]:20 [ bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] ] Coalescing zero page register [ zp[1]:24 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ] ] with [ zp[1]:21 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] ] Coalescing zero page register [ zp[1]:25 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ] ] with [ zp[1]:22 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] ] Coalescing zero page register [ zp[1]:37 [ bitmap_line_ydxd::xd#0 ] ] with [ zp[1]:30 [ bitmap_init::$10 ] ] Coalescing zero page register [ zp[1]:40 [ bitmap_line_ydxi::xd#1 ] ] with [ zp[1]:38 [ bitmap_line_xdyd::xd#0 ] ] Coalescing zero page register [ zp[2]:44 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 ] ] with [ zp[2]:12 [ init_screen::c#2 init_screen::c#1 ] ] Coalescing zero page register [ zp[1]:23 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 ] ] with [ zp[1]:17 [ bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] ] Coalescing zero page register [ zp[1]:24 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 ] ] with [ zp[1]:18 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] ] Coalescing zero page register [ zp[1]:25 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ] ] with [ zp[1]:19 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] ] Coalescing zero page register [ zp[1]:40 [ bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#0 ] ] with [ zp[1]:37 [ bitmap_line_ydxd::xd#0 bitmap_init::$10 ] ] Coalescing zero page register [ zp[1]:41 [ bitmap_line_xdyi::x1#1 ] ] with [ zp[1]:8 [ bitmap_clear::y#4 bitmap_clear::y#1 next#5 next#0 ] ] Coalescing zero page register [ zp[2]:44 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 init_screen::c#2 init_screen::c#1 ] ] with [ zp[2]:9 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] Coalescing zero page register [ zp[1]:42 [ bitmap_line_xdyi::xd#1 ] ] with [ zp[1]:40 [ bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#0 bitmap_init::$10 ] ] Allocated (was zp[1]:23) zp[1]:2 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] Allocated (was zp[1]:24) zp[1]:3 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] Allocated (was zp[1]:25) zp[1]:4 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] Allocated (was zp[1]:41) zp[1]:5 [ bitmap_line_xdyi::x1#1 bitmap_clear::y#4 bitmap_clear::y#1 next#5 next#0 ] Allocated (was zp[1]:42) zp[1]:6 [ bitmap_line_xdyi::xd#1 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#0 bitmap_init::$10 ] Allocated (was zp[2]:44) zp[2]:7 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 init_screen::c#2 init_screen::c#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] Allocated (was zp[2]:46) zp[2]:9 [ bitmap_plot::plotter_y#0 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments // Illustrates problem with bitmap-draw.kc line() // Reported by Janne Johansson // Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" // Global Constants & labels .const VIC_BMM = $20 .const VIC_DEN = $10 .const VIC_RSEL = 8 .label BORDER_COLOR = $d020 .label BG_COLOR = $d021 .label D011 = $d011 .label VIC_MEMORY = $d018 .label SCREEN = $400 .label BITMAP = $2000 .label next = 5 // main main: { // [0] *((const nomodify byte*) BORDER_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDER_COLOR // [1] *((const nomodify byte*) BG_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BG_COLOR // [2] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 // [3] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) BITMAP&(word) $3fff/(word) $400 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400 sta VIC_MEMORY // [4] call bitmap_init // [13] phi from main to bitmap_init [phi:main->bitmap_init] bitmap_init_from_main: jsr bitmap_init // [5] phi from main to main::@2 [phi:main->main::@2] __b2_from_main: jmp __b2 // main::@2 __b2: // [6] call bitmap_clear jsr bitmap_clear // [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] __b3_from___b2: jmp __b3 // main::@3 __b3: // [8] call init_screen // [49] phi from main::@3 to init_screen [phi:main::@3->init_screen] init_screen_from___b3: jsr init_screen // [9] phi from main::@3 to main::@1 [phi:main::@3->main::@1] __b1_from___b3: // [9] phi (byte) next#5 = (byte) 0 [phi:main::@3->main::@1#0] -- vbuz1=vbuc1 lda #0 sta.z next jmp __b1 // main::@1 __b1: // [10] (byte) bitmap_line::x1#0 ← (byte) next#5 -- vbuaa=vbuz1 lda.z next // [11] call bitmap_line jsr bitmap_line jmp __b4 // main::@4 __b4: // [12] (byte) next#0 ← ++ (byte) next#5 -- vbuz1=_inc_vbuz1 inc.z next // [9] phi from main::@4 to main::@1 [phi:main::@4->main::@1] __b1_from___b4: // [9] phi (byte) next#5 = (byte) next#0 [phi:main::@4->main::@1#0] -- register_copy jmp __b1 } // bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { .label __10 = 6 .label yoffs = 7 // [14] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] __b1_from_bitmap_init: // [14] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#0] -- vbuyy=vbuc1 ldy #$80 // [14] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#1] -- vbuxx=vbuc1 ldx #0 jmp __b1 // [14] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] __b1_from___b2: // [14] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy // [14] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp __b1 // bitmap_init::@1 __b1: // [15] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 // [16] *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_xlo,x // [17] *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const nomodify byte*) BITMAP -- pbuc1_derefidx_vbuxx=vbuc2 lda #>BITMAP sta bitmap_plot_xhi,x // [18] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy tya sta bitmap_plot_bit,x // [19] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuyy=vbuyy_ror_1 tya lsr tay // [20] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuyy_neq_0_then_la1 cpy #0 bne __b6_from___b1 // [22] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] __b2_from___b1: // [22] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuyy=vbuc1 ldy #$80 jmp __b2 // [21] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] __b6_from___b1: jmp __b6 // bitmap_init::@6 __b6: // [22] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] __b2_from___b6: // [22] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy jmp __b2 // bitmap_init::@2 __b2: // [23] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx // [24] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne __b1_from___b2 // [25] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] __b3_from___b2: // [25] phi (byte*) bitmap_init::yoffs#2 = (byte*) 0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #<0 sta.z yoffs lda #>0 sta.z yoffs+1 // [25] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 jmp __b3 // [25] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] __b3_from___b4: // [25] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy // [25] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp __b3 // bitmap_init::@3 __b3: // [26] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 sax.z __10 // [27] (byte~) bitmap_init::$7 ← < (byte*) bitmap_init::yoffs#2 -- vbuaa=_lo_pbuz1 lda.z yoffs // [28] (byte~) bitmap_init::$8 ← (byte~) bitmap_init::$10 | (byte~) bitmap_init::$7 -- vbuaa=vbuz1_bor_vbuaa ora.z __10 // [29] *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$8 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x // [30] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda.z yoffs+1 // [31] *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x // [32] if((byte~) bitmap_init::$10!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda #7 cmp.z __10 bne __b4_from___b3 jmp __b5 // bitmap_init::@5 __b5: // [33] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda.z yoffs adc #<$28*8 sta.z yoffs lda.z yoffs+1 adc #>$28*8 sta.z yoffs+1 // [34] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] __b4_from___b3: __b4_from___b5: // [34] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy jmp __b4 // bitmap_init::@4 __b4: // [35] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx // [36] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne __b3_from___b4 jmp __breturn // bitmap_init::@return __breturn: // [37] return rts } // bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 7 .label y = 5 // [38] (word) bitmap_clear::bitmap#0 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_xlo sta.z bitmap lda bitmap_plot_xhi sta.z bitmap+1 // [39] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 // [40] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] __b1_from_bitmap_clear: // [40] phi (byte) bitmap_clear::y#4 = (byte) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta.z y // [40] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy jmp __b1 // [40] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] __b1_from___b3: // [40] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy // [40] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy jmp __b1 // bitmap_clear::@1 __b1: // [41] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] __b2_from___b1: // [41] phi (byte) bitmap_clear::x#2 = (byte) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 ldx #0 // [41] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy jmp __b2 // [41] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] __b2_from___b2: // [41] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy // [41] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy jmp __b2 // bitmap_clear::@2 __b2: // [42] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 ldy #0 sta (bitmap),y // [43] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc.z bitmap bne !+ inc.z bitmap+1 !: // [44] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx // [45] if((byte) bitmap_clear::x#1!=(byte) $c8) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$c8 bne __b2_from___b2 jmp __b3 // bitmap_clear::@3 __b3: // [46] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc.z y // [47] if((byte) bitmap_clear::y#1!=(byte) $28) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp.z y bne __b1_from___b3 jmp __breturn // bitmap_clear::@return __breturn: // [48] return rts } // init_screen init_screen: { .label c = 7 // [50] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] __b1_from_init_screen: // [50] phi (byte*) init_screen::c#2 = (const nomodify byte*) SCREEN [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta.z c+1 jmp __b1 // init_screen::@1 __b1: // [51] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z c+1 cmp #>SCREEN+$400 bne __b2 lda.z c cmp #init_screen::@1] __b1_from___b2: // [50] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@1#0] -- register_copy jmp __b1 } // bitmap_line // Draw a line on the bitmap // bitmap_line(byte register(A) x1) bitmap_line: { .label x0 = 0 .label y0 = 0 .label y1 = $64 // [55] if((const byte) bitmap_line::x0#0<(byte) bitmap_line::x1#0) goto bitmap_line::@1 -- vbuc1_lt_vbuaa_then_la1 cmp #x0 beq !+ bcs __b1 !: jmp __b2 // bitmap_line::@2 __b2: // [56] (byte) bitmap_line::xd#2 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuaa tax jmp __b3 // bitmap_line::@3 __b3: // [57] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#2) goto bitmap_line::@4 -- vbuc1_lt_vbuxx_then_la1 cpx #y1 beq !+ bcs __b4 !: jmp __b5 // bitmap_line::@5 __b5: // [58] (byte) bitmap_line_ydxd::xd#0 ← (byte) bitmap_line::xd#2 -- vbuz1=vbuxx stx.z bitmap_line_ydxd.xd // [59] call bitmap_line_ydxd jsr bitmap_line_ydxd jmp __breturn // bitmap_line::@return __breturn: // [60] return rts // bitmap_line::@4 __b4: // [61] (byte) bitmap_line_xdyd::x#0 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuaa sta.z bitmap_line_xdyd.x // [62] (byte) bitmap_line_xdyd::xd#0 ← (byte) bitmap_line::xd#2 -- vbuz1=vbuxx stx.z bitmap_line_xdyd.xd // [63] call bitmap_line_xdyd // [84] phi from bitmap_line::@4 to bitmap_line_xdyd [phi:bitmap_line::@4->bitmap_line_xdyd] bitmap_line_xdyd_from___b4: jsr bitmap_line_xdyd jmp __breturn // bitmap_line::@1 __b1: // [64] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuaa tax jmp __b6 // bitmap_line::@6 __b6: // [65] if((const byte) bitmap_line::y1#0<(byte) bitmap_line::xd#1) goto bitmap_line::@7 -- vbuc1_lt_vbuxx_then_la1 cpx #y1 beq !+ bcs __b7 !: jmp __b8 // bitmap_line::@8 __b8: // [66] (byte) bitmap_line_ydxi::xd#1 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuxx stx.z bitmap_line_ydxi.xd // [67] call bitmap_line_ydxi jsr bitmap_line_ydxi jmp __breturn // bitmap_line::@7 __b7: // [68] (byte) bitmap_line_xdyi::x1#1 ← (byte) bitmap_line::x1#0 -- vbuz1=vbuaa sta.z bitmap_line_xdyi.x1 // [69] (byte) bitmap_line_xdyi::xd#1 ← (byte) bitmap_line::xd#1 -- vbuz1=vbuxx stx.z bitmap_line_xdyi.xd // [70] call bitmap_line_xdyi // [110] phi from bitmap_line::@7 to bitmap_line_xdyi [phi:bitmap_line::@7->bitmap_line_xdyi] bitmap_line_xdyi_from___b7: jsr bitmap_line_xdyi jmp __breturn } // bitmap_line_ydxd // bitmap_line_ydxd(byte zp(3) y, byte zp(2) x, byte zp(6) xd) bitmap_line_ydxd: { .label xd = 6 .label e = 4 .label y = 3 .label x = 2 // [71] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd lsr sta.z e // [72] phi from bitmap_line_ydxd to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1] __b1_from_bitmap_line_ydxd: // [72] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#0] -- register_copy // [72] phi (byte) bitmap_line_ydxd::y#2 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [72] phi (byte) bitmap_line_ydxd::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x jmp __b1 // [72] phi from bitmap_line_ydxd::@2 to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1] __b1_from___b2: // [72] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#6 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#0] -- register_copy // [72] phi (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#3 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#1] -- register_copy // [72] phi (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#6 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#2] -- register_copy jmp __b1 // bitmap_line_ydxd::@1 __b1: // [73] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuxx=vbuz1 ldx.z x // [74] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 ldy.z y // [75] call bitmap_plot // [124] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] bitmap_plot_from___b1: // [124] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy // [124] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_ydxd::@4 __b4: // [76] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc.z y // [77] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 -- vbuz1=vbuz1_plus_vbuz2 lda.z e clc adc.z xd sta.z e // [78] if((const byte) bitmap_line::y1#0>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuc1_ge_vbuz1_then_la1 lda #bitmap_line.y1 cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_ydxd::@3 __b3: // [79] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 dec.z x // [80] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_minus_vbuc1 lax.z e axs #bitmap_line.y1 stx.z e // [81] phi from bitmap_line_ydxd::@3 bitmap_line_ydxd::@4 to bitmap_line_ydxd::@2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2] __b2_from___b3: __b2_from___b4: // [81] phi (byte) bitmap_line_ydxd::e#6 = (byte) bitmap_line_ydxd::e#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2#0] -- register_copy // [81] phi (byte) bitmap_line_ydxd::x#6 = (byte) bitmap_line_ydxd::x#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2#1] -- register_copy jmp __b2 // bitmap_line_ydxd::@2 __b2: // [82] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuc1_then_la1 lda #bitmap_line.y1+1 cmp.z y bne __b1_from___b2 jmp __breturn // bitmap_line_ydxd::@return __breturn: // [83] return rts } // bitmap_line_xdyd // bitmap_line_xdyd(byte zp(2) x, byte zp(3) y, byte zp(6) xd) bitmap_line_xdyd: { .label x = 2 .label xd = 6 .label e = 4 .label y = 3 // [85] phi from bitmap_line_xdyd to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1] __b1_from_bitmap_line_xdyd: // [85] phi (byte) bitmap_line_xdyd::e#3 = (const byte) bitmap_line::y1#0>>(byte) 1 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#0] -- vbuz1=vbuc1 lda #bitmap_line.y1>>1 sta.z e // [85] phi (byte) bitmap_line_xdyd::y#3 = (const byte) bitmap_line::y1#0 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y1 sta.z y // [85] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#2] -- register_copy jmp __b1 // [85] phi from bitmap_line_xdyd::@2 to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1] __b1_from___b2: // [85] phi (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#6 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#0] -- register_copy // [85] phi (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#6 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#1] -- register_copy // [85] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#2 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#2] -- register_copy jmp __b1 // bitmap_line_xdyd::@1 __b1: // [86] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 ldx.z x // [87] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 ldy.z y // [88] call bitmap_plot // [124] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] bitmap_plot_from___b1: // [124] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy // [124] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_xdyd::@4 __b4: // [89] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc.z x // [90] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_plus_vbuc1 lax.z e axs #-[bitmap_line.y1] stx.z e // [91] if((byte) bitmap_line_xdyd::xd#0>=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 lda.z xd cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_xdyd::@3 __b3: // [92] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec.z y // [93] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec sbc.z xd sta.z e // [94] phi from bitmap_line_xdyd::@3 bitmap_line_xdyd::@4 to bitmap_line_xdyd::@2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2] __b2_from___b3: __b2_from___b4: // [94] phi (byte) bitmap_line_xdyd::e#6 = (byte) bitmap_line_xdyd::e#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2#0] -- register_copy // [94] phi (byte) bitmap_line_xdyd::y#6 = (byte) bitmap_line_xdyd::y#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2#1] -- register_copy jmp __b2 // bitmap_line_xdyd::@2 __b2: // [95] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuc1_then_la1 lda #1 cmp.z x bne __b1_from___b2 jmp __breturn // bitmap_line_xdyd::@return __breturn: // [96] return rts } // bitmap_line_ydxi // bitmap_line_ydxi(byte zp(3) y, byte zp(2) x, byte zp(6) xd) bitmap_line_ydxi: { .label xd = 6 .label e = 4 .label y = 3 .label x = 2 // [97] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd lsr sta.z e // [98] phi from bitmap_line_ydxi to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1] __b1_from_bitmap_line_ydxi: // [98] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#0] -- register_copy // [98] phi (byte) bitmap_line_ydxi::y#3 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [98] phi (byte) bitmap_line_ydxi::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x jmp __b1 // [98] phi from bitmap_line_ydxi::@2 to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1] __b1_from___b2: // [98] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#6 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#0] -- register_copy // [98] phi (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#2 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#1] -- register_copy // [98] phi (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#6 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#2] -- register_copy jmp __b1 // bitmap_line_ydxi::@1 __b1: // [99] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuxx=vbuz1 ldx.z x // [100] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 ldy.z y // [101] call bitmap_plot // [124] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] bitmap_plot_from___b1: // [124] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy // [124] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_ydxi::@4 __b4: // [102] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc.z y // [103] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 -- vbuz1=vbuz1_plus_vbuz2 lda.z e clc adc.z xd sta.z e // [104] if((const byte) bitmap_line::y1#0>=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuc1_ge_vbuz1_then_la1 lda #bitmap_line.y1 cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_ydxi::@3 __b3: // [105] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 inc.z x // [106] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_minus_vbuc1 lax.z e axs #bitmap_line.y1 stx.z e // [107] phi from bitmap_line_ydxi::@3 bitmap_line_ydxi::@4 to bitmap_line_ydxi::@2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2] __b2_from___b3: __b2_from___b4: // [107] phi (byte) bitmap_line_ydxi::e#6 = (byte) bitmap_line_ydxi::e#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2#0] -- register_copy // [107] phi (byte) bitmap_line_ydxi::x#6 = (byte) bitmap_line_ydxi::x#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2#1] -- register_copy jmp __b2 // bitmap_line_ydxi::@2 __b2: // [108] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuc1_then_la1 lda #bitmap_line.y1+1 cmp.z y bne __b1_from___b2 jmp __breturn // bitmap_line_ydxi::@return __breturn: // [109] return rts } // bitmap_line_xdyi // bitmap_line_xdyi(byte zp(2) x, byte zp(3) y, byte zp(5) x1, byte zp(6) xd) bitmap_line_xdyi: { .label x1 = 5 .label xd = 6 .label x = 2 .label e = 4 .label y = 3 // [111] phi from bitmap_line_xdyi to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1] __b1_from_bitmap_line_xdyi: // [111] phi (byte) bitmap_line_xdyi::e#3 = (const byte) bitmap_line::y1#0>>(byte) 1 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#0] -- vbuz1=vbuc1 lda #bitmap_line.y1>>1 sta.z e // [111] phi (byte) bitmap_line_xdyi::y#3 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [111] phi (byte) bitmap_line_xdyi::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x jmp __b1 // [111] phi from bitmap_line_xdyi::@2 to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1] __b1_from___b2: // [111] phi (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#6 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#0] -- register_copy // [111] phi (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#6 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#1] -- register_copy // [111] phi (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#2 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#2] -- register_copy jmp __b1 // bitmap_line_xdyi::@1 __b1: // [112] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 ldx.z x // [113] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 ldy.z y // [114] call bitmap_plot // [124] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] bitmap_plot_from___b1: // [124] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy // [124] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b4 // bitmap_line_xdyi::@4 __b4: // [115] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc.z x // [116] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_plus_vbuc1 lax.z e axs #-[bitmap_line.y1] stx.z e // [117] if((byte) bitmap_line_xdyi::xd#1>=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 lda.z xd cmp.z e bcs __b2_from___b4 jmp __b3 // bitmap_line_xdyi::@3 __b3: // [118] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc.z y // [119] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 -- vbuz1=vbuz1_minus_vbuz2 lda.z e sec sbc.z xd sta.z e // [120] phi from bitmap_line_xdyi::@3 bitmap_line_xdyi::@4 to bitmap_line_xdyi::@2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2] __b2_from___b3: __b2_from___b4: // [120] phi (byte) bitmap_line_xdyi::e#6 = (byte) bitmap_line_xdyi::e#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2#0] -- register_copy // [120] phi (byte) bitmap_line_xdyi::y#6 = (byte) bitmap_line_xdyi::y#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2#1] -- register_copy jmp __b2 // bitmap_line_xdyi::@2 __b2: // [121] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#1 + (byte) 1 -- vbuxx=vbuz1_plus_1 ldx.z x1 inx // [122] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuxx_then_la1 cpx.z x bne __b1_from___b2 jmp __breturn // bitmap_line_xdyi::@return __breturn: // [123] return rts } // bitmap_plot // bitmap_plot(byte register(X) x, byte register(Y) y) bitmap_plot: { .label plotter_x = 7 .label plotter_y = 9 .label plotter = 7 // [125] (word) bitmap_plot::plotter_x#0 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_xhi,x sta.z plotter_x+1 lda bitmap_plot_xlo,x sta.z plotter_x // [126] (word) bitmap_plot::plotter_y#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy lda bitmap_plot_yhi,y sta.z plotter_y+1 lda bitmap_plot_ylo,y sta.z plotter_y // [127] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z plotter clc adc.z plotter_y sta.z plotter lda.z plotter+1 adc.z plotter_y+1 sta.z plotter+1 // [128] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx lda bitmap_plot_bit,x ldy #0 ora (plotter),y // [129] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa ldy #0 sta (plotter),y jmp __breturn // bitmap_plot::@return __breturn: // [130] return rts } // File Data // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 bitmap_plot_ylo: .fill $100, 0 bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 ASSEMBLER OPTIMIZATIONS Removing instruction jmp __b2 Removing instruction jmp __b3 Removing instruction jmp __b1 Removing instruction jmp __b4 Removing instruction jmp __b1 Removing instruction jmp __b6 Removing instruction jmp __b2 Removing instruction jmp __b3 Removing instruction jmp __b5 Removing instruction jmp __b4 Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __b2 Removing instruction jmp __b3 Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __breturn Removing instruction jmp __b2 Removing instruction jmp __b3 Removing instruction jmp __b5 Removing instruction jmp __breturn Removing instruction jmp __b6 Removing instruction jmp __b8 Removing instruction jmp __b1 Removing instruction jmp __b4 Removing instruction jmp __b3 Removing instruction jmp __b2 Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __b4 Removing instruction jmp __b3 Removing instruction jmp __b2 Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __b4 Removing instruction jmp __b3 Removing instruction jmp __b2 Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __b4 Removing instruction jmp __b3 Removing instruction jmp __b2 Removing instruction jmp __breturn Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 Removing instruction lda #>0 Replacing instruction ldx #0 with TAX Replacing instruction ldy #0 with TAY Removing instruction ldy #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination Replacing label __b6_from___b1 with __b2 Replacing label __b1_from___b2 with __b1 Replacing label __b4_from___b3 with __b4 Replacing label __b3_from___b4 with __b3 Replacing label __b2_from___b2 with __b2 Replacing label __b1_from___b3 with __b1 Replacing label __b2_from___b4 with __b2 Replacing label __b1_from___b2 with __b1 Replacing label __b2_from___b4 with __b2 Replacing label __b1_from___b2 with __b1 Replacing label __b2_from___b4 with __b2 Replacing label __b1_from___b2 with __b1 Replacing label __b2_from___b4 with __b2 Replacing label __b1_from___b2 with __b1 Removing instruction __b2_from_main: Removing instruction __b3_from___b2: Removing instruction init_screen_from___b3: Removing instruction __b1_from___b2: Removing instruction __b6_from___b1: Removing instruction __b6: Removing instruction __b2_from___b6: Removing instruction __b3_from___b4: Removing instruction __b4_from___b3: Removing instruction __b4_from___b5: Removing instruction __b1_from___b3: Removing instruction __b2_from___b1: Removing instruction __b2_from___b2: Removing instruction __b1_from___b2: Removing instruction __b2_from___b3: Removing instruction __b2_from___b4: Removing instruction __b1_from___b2: Removing instruction __b2_from___b3: Removing instruction __b2_from___b4: Removing instruction __b1_from___b2: Removing instruction __b2_from___b3: Removing instruction __b2_from___b4: Removing instruction __b1_from___b2: Removing instruction __b2_from___b3: Removing instruction __b2_from___b4: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction bitmap_init_from_main: Removing instruction __b2: Removing instruction __b3: Removing instruction __b1_from___b3: Removing instruction __b4: Removing instruction __b1_from___b4: Removing instruction __b1_from_bitmap_init: Removing instruction __b2_from___b1: Removing instruction __b3_from___b2: Removing instruction __b5: Removing instruction __breturn: Removing instruction __b1_from_bitmap_clear: Removing instruction __b3: Removing instruction __breturn: Removing instruction __b1_from_init_screen: Removing instruction __breturn: Removing instruction __b1_from___b2: Removing instruction __b2: Removing instruction __b3: Removing instruction __b5: Removing instruction bitmap_line_xdyd_from___b4: Removing instruction __b6: Removing instruction __b8: Removing instruction bitmap_line_xdyi_from___b7: Removing instruction __b1_from_bitmap_line_ydxd: Removing instruction bitmap_plot_from___b1: Removing instruction __b4: Removing instruction __b3: Removing instruction __breturn: Removing instruction __b1_from_bitmap_line_xdyd: Removing instruction bitmap_plot_from___b1: Removing instruction __b4: Removing instruction __b3: Removing instruction __breturn: Removing instruction __b1_from_bitmap_line_ydxi: Removing instruction bitmap_plot_from___b1: Removing instruction __b4: Removing instruction __b3: Removing instruction __breturn: Removing instruction __b1_from_bitmap_line_xdyi: Removing instruction bitmap_plot_from___b1: Removing instruction __b4: Removing instruction __b3: Removing instruction __breturn: Removing instruction __breturn: Succesful ASM optimization Pass5UnusedLabelElimination Replacing jump to rts with rts in jmp __breturn Replacing jump to rts with rts in jmp __breturn Replacing jump to rts with rts in jmp __breturn Succesful ASM optimization Pass5DoubleJumpElimination Removing instruction jmp __b1 Removing instruction jmp __b2 Removing instruction jmp __b3 Removing instruction jmp __b1 Removing instruction jmp __b2 Removing instruction jmp __b1 Removing instruction jmp __b1 Removing instruction jmp __b1 Removing instruction jmp __b1 Succesful ASM optimization Pass5NextJumpElimination Replacing instruction lda.z e with TXA Replacing instruction lda.z e with TXA Removing instruction __breturn: Succesful ASM optimization Pass5UnusedLabelElimination FINAL SYMBOL TABLE (const nomodify byte*) BG_COLOR = (byte*) 53281 (const nomodify byte*) BITMAP = (byte*) 8192 (const nomodify byte*) BORDER_COLOR = (byte*) 53280 (const nomodify byte*) D011 = (byte*) 53265 (byte) MOS6526_CIA::INTERRUPT (byte) MOS6526_CIA::PORT_A (byte) MOS6526_CIA::PORT_A_DDR (byte) MOS6526_CIA::PORT_B (byte) MOS6526_CIA::PORT_B_DDR (byte) MOS6526_CIA::SERIAL_DATA (word) MOS6526_CIA::TIMER_A (byte) MOS6526_CIA::TIMER_A_CONTROL (word) MOS6526_CIA::TIMER_B (byte) MOS6526_CIA::TIMER_B_CONTROL (byte) MOS6526_CIA::TOD_10THS (byte) MOS6526_CIA::TOD_HOURS (byte) MOS6526_CIA::TOD_MIN (byte) MOS6526_CIA::TOD_SEC (byte) MOS6569_VICII::BG_COLOR (byte) MOS6569_VICII::BG_COLOR1 (byte) MOS6569_VICII::BG_COLOR2 (byte) MOS6569_VICII::BG_COLOR3 (byte) MOS6569_VICII::BORDER_COLOR (byte) MOS6569_VICII::CONTROL1 (byte) MOS6569_VICII::CONTROL2 (byte) MOS6569_VICII::IRQ_ENABLE (byte) MOS6569_VICII::IRQ_STATUS (byte) MOS6569_VICII::LIGHTPEN_X (byte) MOS6569_VICII::LIGHTPEN_Y (byte) MOS6569_VICII::MEMORY (byte) MOS6569_VICII::RASTER (byte) MOS6569_VICII::SPRITE0_COLOR (byte) MOS6569_VICII::SPRITE0_X (byte) MOS6569_VICII::SPRITE0_Y (byte) MOS6569_VICII::SPRITE1_COLOR (byte) MOS6569_VICII::SPRITE1_X (byte) MOS6569_VICII::SPRITE1_Y (byte) MOS6569_VICII::SPRITE2_COLOR (byte) MOS6569_VICII::SPRITE2_X (byte) MOS6569_VICII::SPRITE2_Y (byte) MOS6569_VICII::SPRITE3_COLOR (byte) MOS6569_VICII::SPRITE3_X (byte) MOS6569_VICII::SPRITE3_Y (byte) MOS6569_VICII::SPRITE4_COLOR (byte) MOS6569_VICII::SPRITE4_X (byte) MOS6569_VICII::SPRITE4_Y (byte) MOS6569_VICII::SPRITE5_COLOR (byte) MOS6569_VICII::SPRITE5_X (byte) MOS6569_VICII::SPRITE5_Y (byte) MOS6569_VICII::SPRITE6_COLOR (byte) MOS6569_VICII::SPRITE6_X (byte) MOS6569_VICII::SPRITE6_Y (byte) MOS6569_VICII::SPRITE7_COLOR (byte) MOS6569_VICII::SPRITE7_X (byte) MOS6569_VICII::SPRITE7_Y (byte) MOS6569_VICII::SPRITES_BG_COLLISION (byte) MOS6569_VICII::SPRITES_COLLISION (byte) MOS6569_VICII::SPRITES_ENABLE (byte) MOS6569_VICII::SPRITES_EXPAND_X (byte) MOS6569_VICII::SPRITES_EXPAND_Y (byte) MOS6569_VICII::SPRITES_MC (byte) MOS6569_VICII::SPRITES_MCOLOR1 (byte) MOS6569_VICII::SPRITES_MCOLOR2 (byte) MOS6569_VICII::SPRITES_PRIORITY (byte) MOS6569_VICII::SPRITES_XMSB (byte) MOS6581_SID::CH1_ATTACK_DECAY (byte) MOS6581_SID::CH1_CONTROL (word) MOS6581_SID::CH1_FREQ (word) MOS6581_SID::CH1_PULSE_WIDTH (byte) MOS6581_SID::CH1_SUSTAIN_RELEASE (byte) MOS6581_SID::CH2_ATTACK_DECAY (byte) MOS6581_SID::CH2_CONTROL (word) MOS6581_SID::CH2_FREQ (word) MOS6581_SID::CH2_PULSE_WIDTH (byte) MOS6581_SID::CH2_SUSTAIN_RELEASE (byte) MOS6581_SID::CH3_ATTACK_DECAY (byte) MOS6581_SID::CH3_CONTROL (byte) MOS6581_SID::CH3_ENV (word) MOS6581_SID::CH3_FREQ (byte) MOS6581_SID::CH3_OSC (word) MOS6581_SID::CH3_PULSE_WIDTH (byte) MOS6581_SID::CH3_SUSTAIN_RELEASE (byte) MOS6581_SID::FILTER_CUTOFF_HIGH (byte) MOS6581_SID::FILTER_CUTOFF_LOW (byte) MOS6581_SID::FILTER_SETUP (byte) MOS6581_SID::POT_X (byte) MOS6581_SID::POT_Y (byte) MOS6581_SID::VOLUME_FILTER_MODE (const nomodify byte*) SCREEN = (byte*) 1024 (const nomodify byte) VIC_BMM = (byte) $20 (const nomodify byte) VIC_DEN = (byte) $10 (const nomodify byte*) VIC_MEMORY = (byte*) 53272 (const nomodify byte) VIC_RSEL = (byte) 8 (void()) bitmap_clear() (label) bitmap_clear::@1 (label) bitmap_clear::@2 (label) bitmap_clear::@3 (label) bitmap_clear::@return (byte*) bitmap_clear::bitmap (word) bitmap_clear::bitmap#0 bitmap zp[2]:7 11.0 (byte*) bitmap_clear::bitmap#1 bitmap zp[2]:7 420.59999999999997 (byte*) bitmap_clear::bitmap#2 bitmap zp[2]:7 1552.0 (byte*) bitmap_clear::bitmap#3 bitmap zp[2]:7 213.0 (byte*) bitmap_clear::bitmap#5 bitmap zp[2]:7 22.0 (byte) bitmap_clear::x (byte) bitmap_clear::x#1 reg byte x 1501.5 (byte) bitmap_clear::x#2 reg byte x 667.3333333333334 (byte) bitmap_clear::y (byte) bitmap_clear::y#1 y zp[1]:5 151.5 (byte) bitmap_clear::y#4 y zp[1]:5 33.666666666666664 (void()) bitmap_init((byte*) bitmap_init::bitmap) (byte~) bitmap_init::$0 reg byte a 202.0 (byte~) bitmap_init::$10 zp[1]:6 50.5 (byte~) bitmap_init::$7 reg byte a 202.0 (byte~) bitmap_init::$8 reg byte a 202.0 (byte~) bitmap_init::$9 reg byte a 202.0 (label) bitmap_init::@1 (label) bitmap_init::@2 (label) bitmap_init::@3 (label) bitmap_init::@4 (label) bitmap_init::@5 (label) bitmap_init::@6 (label) bitmap_init::@return (byte*) bitmap_init::bitmap (byte) bitmap_init::bits (byte) bitmap_init::bits#1 reg byte y 101.0 (byte) bitmap_init::bits#3 reg byte y 60.599999999999994 (byte) bitmap_init::bits#4 reg byte y 67.33333333333333 (byte) bitmap_init::x (byte) bitmap_init::x#1 reg byte x 151.5 (byte) bitmap_init::x#2 reg byte x 67.33333333333333 (byte) bitmap_init::y (byte) bitmap_init::y#1 reg byte x 151.5 (byte) bitmap_init::y#2 reg byte x 50.5 (byte*) bitmap_init::yoffs (byte*) bitmap_init::yoffs#1 yoffs zp[2]:7 202.0 (byte*) bitmap_init::yoffs#2 yoffs zp[2]:7 63.125 (byte*) bitmap_init::yoffs#4 yoffs zp[2]:7 101.0 (void()) bitmap_line((byte) bitmap_line::x0 , (byte) bitmap_line::x1 , (byte) bitmap_line::y0 , (byte) bitmap_line::y1) (label) bitmap_line::@1 (label) bitmap_line::@2 (label) bitmap_line::@3 (label) bitmap_line::@4 (label) bitmap_line::@5 (label) bitmap_line::@6 (label) bitmap_line::@7 (label) bitmap_line::@8 (label) bitmap_line::@return (byte) bitmap_line::x0 (const byte) bitmap_line::x0#0 x0 = (byte) 0 (byte) bitmap_line::x1 (byte) bitmap_line::x1#0 reg byte a 85.99999999999999 (byte) bitmap_line::xd (byte) bitmap_line::xd#1 reg byte x 134.66666666666666 (byte) bitmap_line::xd#2 reg byte x 134.66666666666666 (byte) bitmap_line::y0 (const byte) bitmap_line::y0#0 y0 = (byte) 0 (byte) bitmap_line::y1 (const byte) bitmap_line::y1#0 y1 = (byte) $64 (byte) bitmap_line::yd (void()) bitmap_line_xdyd((byte) bitmap_line_xdyd::x , (byte) bitmap_line_xdyd::y , (byte) bitmap_line_xdyd::x1 , (byte) bitmap_line_xdyd::xd , (byte) bitmap_line_xdyd::yd) (label) bitmap_line_xdyd::@1 (label) bitmap_line_xdyd::@2 (label) bitmap_line_xdyd::@3 (label) bitmap_line_xdyd::@4 (label) bitmap_line_xdyd::@return (byte) bitmap_line_xdyd::e (byte) bitmap_line_xdyd::e#1 e zp[1]:4 133334.66666666666 (byte) bitmap_line_xdyd::e#2 e zp[1]:4 200002.0 (byte) bitmap_line_xdyd::e#3 e zp[1]:4 40000.4 (byte) bitmap_line_xdyd::e#6 e zp[1]:4 150001.5 (byte) bitmap_line_xdyd::x (byte) bitmap_line_xdyd::x#0 x zp[1]:2 367.33333333333337 (byte) bitmap_line_xdyd::x#2 x zp[1]:2 42857.57142857143 (byte) bitmap_line_xdyd::x#3 x zp[1]:2 75251.0 (byte) bitmap_line_xdyd::x1 (byte) bitmap_line_xdyd::xd (byte) bitmap_line_xdyd::xd#0 xd zp[1]:6 15392.538461538461 (byte) bitmap_line_xdyd::y (byte) bitmap_line_xdyd::y#2 y zp[1]:3 100001.0 (byte) bitmap_line_xdyd::y#3 y zp[1]:3 57143.42857142857 (byte) bitmap_line_xdyd::y#6 y zp[1]:3 150001.5 (byte) bitmap_line_xdyd::yd (void()) bitmap_line_xdyi((byte) bitmap_line_xdyi::x , (byte) bitmap_line_xdyi::y , (byte) bitmap_line_xdyi::x1 , (byte) bitmap_line_xdyi::xd , (byte) bitmap_line_xdyi::yd) (byte~) bitmap_line_xdyi::$6 reg byte x 200002.0 (label) bitmap_line_xdyi::@1 (label) bitmap_line_xdyi::@2 (label) bitmap_line_xdyi::@3 (label) bitmap_line_xdyi::@4 (label) bitmap_line_xdyi::@return (byte) bitmap_line_xdyi::e (byte) bitmap_line_xdyi::e#1 e zp[1]:4 133334.66666666666 (byte) bitmap_line_xdyi::e#2 e zp[1]:4 200002.0 (byte) bitmap_line_xdyi::e#3 e zp[1]:4 40000.4 (byte) bitmap_line_xdyi::e#6 e zp[1]:4 100001.0 (byte) bitmap_line_xdyi::x (byte) bitmap_line_xdyi::x#2 x zp[1]:2 37500.375 (byte) bitmap_line_xdyi::x#3 x zp[1]:2 75000.75 (byte) bitmap_line_xdyi::x1 (byte) bitmap_line_xdyi::x1#1 x1 zp[1]:5 6673.466666666667 (byte) bitmap_line_xdyi::xd (byte) bitmap_line_xdyi::xd#1 xd zp[1]:6 14293.071428571428 (byte) bitmap_line_xdyi::y (byte) bitmap_line_xdyi::y#2 y zp[1]:3 100001.0 (byte) bitmap_line_xdyi::y#3 y zp[1]:3 57143.42857142857 (byte) bitmap_line_xdyi::y#6 y zp[1]:3 100001.0 (byte) bitmap_line_xdyi::yd (void()) bitmap_line_ydxd((byte) bitmap_line_ydxd::y , (byte) bitmap_line_ydxd::x , (byte) bitmap_line_ydxd::y1 , (byte) bitmap_line_ydxd::yd , (byte) bitmap_line_ydxd::xd) (label) bitmap_line_ydxd::@1 (label) bitmap_line_ydxd::@2 (label) bitmap_line_ydxd::@3 (label) bitmap_line_ydxd::@4 (label) bitmap_line_ydxd::@return (byte) bitmap_line_ydxd::e (byte) bitmap_line_ydxd::e#0 e zp[1]:4 2002.0 (byte) bitmap_line_ydxd::e#1 e zp[1]:4 133334.66666666666 (byte) bitmap_line_ydxd::e#2 e zp[1]:4 200002.0 (byte) bitmap_line_ydxd::e#3 e zp[1]:4 40200.600000000006 (byte) bitmap_line_ydxd::e#6 e zp[1]:4 150001.5 (byte) bitmap_line_ydxd::x (byte) bitmap_line_ydxd::x#2 x zp[1]:2 100001.0 (byte) bitmap_line_ydxd::x#3 x zp[1]:2 57143.42857142857 (byte) bitmap_line_ydxd::x#6 x zp[1]:2 150001.5 (byte) bitmap_line_ydxd::xd (byte) bitmap_line_ydxd::xd#0 xd zp[1]:6 7777.153846153846 (byte) bitmap_line_ydxd::y (byte) bitmap_line_ydxd::y#2 y zp[1]:3 75000.75 (byte) bitmap_line_ydxd::y#3 y zp[1]:3 42857.57142857143 (byte) bitmap_line_ydxd::y1 (byte) bitmap_line_ydxd::yd (void()) bitmap_line_ydxi((byte) bitmap_line_ydxi::y , (byte) bitmap_line_ydxi::x , (byte) bitmap_line_ydxi::y1 , (byte) bitmap_line_ydxi::yd , (byte) bitmap_line_ydxi::xd) (label) bitmap_line_ydxi::@1 (label) bitmap_line_ydxi::@2 (label) bitmap_line_ydxi::@3 (label) bitmap_line_ydxi::@4 (label) bitmap_line_ydxi::@return (byte) bitmap_line_ydxi::e (byte) bitmap_line_ydxi::e#0 e zp[1]:4 2002.0 (byte) bitmap_line_ydxi::e#1 e zp[1]:4 133334.66666666666 (byte) bitmap_line_ydxi::e#2 e zp[1]:4 200002.0 (byte) bitmap_line_ydxi::e#3 e zp[1]:4 40200.600000000006 (byte) bitmap_line_ydxi::e#6 e zp[1]:4 150001.5 (byte) bitmap_line_ydxi::x (byte) bitmap_line_ydxi::x#2 x zp[1]:2 100001.0 (byte) bitmap_line_ydxi::x#3 x zp[1]:2 57143.42857142857 (byte) bitmap_line_ydxi::x#6 x zp[1]:2 150001.5 (byte) bitmap_line_ydxi::xd (byte) bitmap_line_ydxi::xd#1 xd zp[1]:6 7777.153846153846 (byte) bitmap_line_ydxi::y (byte) bitmap_line_ydxi::y#2 y zp[1]:3 42857.57142857143 (byte) bitmap_line_ydxi::y#3 y zp[1]:3 75000.75 (byte) bitmap_line_ydxi::y1 (byte) bitmap_line_ydxi::yd (void()) bitmap_plot((byte) bitmap_plot::x , (byte) bitmap_plot::y) (byte~) bitmap_plot::$1 reg byte a 2000002.0 (label) bitmap_plot::@return (byte*) bitmap_plot::plotter (word) bitmap_plot::plotter#0 plotter zp[2]:7 500000.5 (word) bitmap_plot::plotter_x (word) bitmap_plot::plotter_x#0 plotter_x zp[2]:7 1000001.0 (word) bitmap_plot::plotter_y (word) bitmap_plot::plotter_y#0 plotter_y zp[2]:9 2000002.0 (byte) bitmap_plot::x (byte) bitmap_plot::x#0 reg byte x 100001.0 (byte) bitmap_plot::x#1 reg byte x 100001.0 (byte) bitmap_plot::x#2 reg byte x 100001.0 (byte) bitmap_plot::x#3 reg byte x 100001.0 (byte) bitmap_plot::x#4 reg byte x 850001.75 (byte) bitmap_plot::y (byte) bitmap_plot::y#0 reg byte y 200002.0 (byte) bitmap_plot::y#1 reg byte y 200002.0 (byte) bitmap_plot::y#2 reg byte y 200002.0 (byte) bitmap_plot::y#3 reg byte y 200002.0 (byte) bitmap_plot::y#4 reg byte y 1200003.0 (const to_nomodify byte*) bitmap_plot_bit[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_xhi[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_xlo[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_yhi[(number) $100] = { fill( $100, 0) } (const to_nomodify byte*) bitmap_plot_ylo[(number) $100] = { fill( $100, 0) } (void()) init_screen() (label) init_screen::@1 (label) init_screen::@2 (label) init_screen::@return (byte*) init_screen::c (byte*) init_screen::c#1 c zp[2]:7 202.0 (byte*) init_screen::c#2 c zp[2]:7 134.66666666666666 (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@4 (byte) next (byte) next#0 next zp[1]:5 22.0 (byte) next#5 next zp[1]:5 11.0 reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte y [ 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_clear::x#2 bitmap_clear::x#1 ] zp[1]:2 [ bitmap_line_xdyi::x#3 bitmap_line_xdyi::x#2 bitmap_line_ydxi::x#3 bitmap_line_ydxi::x#6 bitmap_line_ydxi::x#2 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] zp[1]:3 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#2 bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#3 ] zp[1]:4 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] reg byte x [ bitmap_plot::x#4 bitmap_plot::x#1 bitmap_plot::x#0 bitmap_plot::x#3 bitmap_plot::x#2 ] reg byte y [ bitmap_plot::y#4 bitmap_plot::y#1 bitmap_plot::y#0 bitmap_plot::y#3 bitmap_plot::y#2 ] reg byte a [ bitmap_line::x1#0 ] reg byte a [ bitmap_init::$0 ] reg byte a [ bitmap_init::$7 ] reg byte a [ bitmap_init::$8 ] reg byte a [ bitmap_init::$9 ] reg byte x [ bitmap_line::xd#2 ] reg byte x [ bitmap_line::xd#1 ] zp[1]:5 [ bitmap_line_xdyi::x1#1 bitmap_clear::y#4 bitmap_clear::y#1 next#5 next#0 ] zp[1]:6 [ bitmap_line_xdyi::xd#1 bitmap_line_ydxi::xd#1 bitmap_line_xdyd::xd#0 bitmap_line_ydxd::xd#0 bitmap_init::$10 ] reg byte x [ bitmap_line_xdyi::$6 ] zp[2]:7 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 init_screen::c#2 init_screen::c#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] zp[2]:9 [ bitmap_plot::plotter_y#0 ] reg byte a [ bitmap_plot::$1 ] FINAL ASSEMBLER Score: 30221 // File Comments // Illustrates problem with bitmap-draw.kc line() // Reported by Janne Johansson // Upstart .pc = $801 "Basic" :BasicUpstart(main) .pc = $80d "Program" // Global Constants & labels .const VIC_BMM = $20 .const VIC_DEN = $10 .const VIC_RSEL = 8 .label BORDER_COLOR = $d020 .label BG_COLOR = $d021 .label D011 = $d011 .label VIC_MEMORY = $d018 .label SCREEN = $400 .label BITMAP = $2000 .label next = 5 // main main: { // *BORDER_COLOR = 0 // [0] *((const nomodify byte*) BORDER_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2 lda #0 sta BORDER_COLOR // *BG_COLOR = 0 // [1] *((const nomodify byte*) BG_COLOR) ← (byte) 0 -- _deref_pbuc1=vbuc2 sta BG_COLOR // *D011 = VIC_BMM|VIC_DEN|VIC_RSEL|3 // [2] *((const nomodify byte*) D011) ← (const nomodify byte) VIC_BMM|(const nomodify byte) VIC_DEN|(const nomodify byte) VIC_RSEL|(byte) 3 -- _deref_pbuc1=vbuc2 lda #VIC_BMM|VIC_DEN|VIC_RSEL|3 sta D011 // *VIC_MEMORY = (byte)((((word)SCREEN&$3fff)/$40)|(((word)BITMAP&$3fff)/$400)) // [3] *((const nomodify byte*) VIC_MEMORY) ← (byte)(word)(const nomodify byte*) SCREEN&(word) $3fff/(byte) $40|(word)(const nomodify byte*) BITMAP&(word) $3fff/(word) $400 -- _deref_pbuc1=vbuc2 lda #(SCREEN&$3fff)/$40|(BITMAP&$3fff)/$400 sta VIC_MEMORY // bitmap_init(BITMAP) // [4] call bitmap_init // [13] phi from main to bitmap_init [phi:main->bitmap_init] jsr bitmap_init // [5] phi from main to main::@2 [phi:main->main::@2] // main::@2 // bitmap_clear() // [6] call bitmap_clear jsr bitmap_clear // [7] phi from main::@2 to main::@3 [phi:main::@2->main::@3] // main::@3 // init_screen() // [8] call init_screen // [49] phi from main::@3 to init_screen [phi:main::@3->init_screen] jsr init_screen // [9] phi from main::@3 to main::@1 [phi:main::@3->main::@1] // [9] phi (byte) next#5 = (byte) 0 [phi:main::@3->main::@1#0] -- vbuz1=vbuc1 lda #0 sta.z next // main::@1 __b1: // bitmap_line(0,next,0,100) // [10] (byte) bitmap_line::x1#0 ← (byte) next#5 -- vbuaa=vbuz1 lda.z next // [11] call bitmap_line jsr bitmap_line // main::@4 // next++; // [12] (byte) next#0 ← ++ (byte) next#5 -- vbuz1=_inc_vbuz1 inc.z next // [9] phi from main::@4 to main::@1 [phi:main::@4->main::@1] // [9] phi (byte) next#5 = (byte) next#0 [phi:main::@4->main::@1#0] -- register_copy jmp __b1 } // bitmap_init // Initialize the bitmap plotter tables for a specific bitmap bitmap_init: { .label __10 = 6 .label yoffs = 7 // [14] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] // [14] phi (byte) bitmap_init::bits#3 = (byte) $80 [phi:bitmap_init->bitmap_init::@1#0] -- vbuyy=vbuc1 ldy #$80 // [14] phi (byte) bitmap_init::x#2 = (byte) 0 [phi:bitmap_init->bitmap_init::@1#1] -- vbuxx=vbuc1 ldx #0 // [14] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] // [14] phi (byte) bitmap_init::bits#3 = (byte) bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy // [14] phi (byte) bitmap_init::x#2 = (byte) bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy // bitmap_init::@1 __b1: // x&$f8 // [15] (byte~) bitmap_init::$0 ← (byte) bitmap_init::x#2 & (byte) $f8 -- vbuaa=vbuxx_band_vbuc1 txa and #$f8 // bitmap_plot_xlo[x] = x&$f8 // [16] *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_init::x#2) ← (byte~) bitmap_init::$0 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_xlo,x // bitmap_plot_xhi[x] = >bitmap // [17] *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_init::x#2) ← >(const nomodify byte*) BITMAP -- pbuc1_derefidx_vbuxx=vbuc2 lda #>BITMAP sta bitmap_plot_xhi,x // bitmap_plot_bit[x] = bits // [18] *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuyy tya sta bitmap_plot_bit,x // bits = bits>>1 // [19] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte) 1 -- vbuyy=vbuyy_ror_1 tya lsr tay // if(bits==0) // [20] if((byte) bitmap_init::bits#1!=(byte) 0) goto bitmap_init::@6 -- vbuyy_neq_0_then_la1 cpy #0 bne __b2 // [22] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] // [22] phi (byte) bitmap_init::bits#4 = (byte) $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuyy=vbuc1 ldy #$80 // [21] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] // bitmap_init::@6 // [22] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] // [22] phi (byte) bitmap_init::bits#4 = (byte) bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy // bitmap_init::@2 __b2: // for(char x : 0..255) // [23] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx // [24] if((byte) bitmap_init::x#1!=(byte) 0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne __b1 // [25] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] // [25] phi (byte*) bitmap_init::yoffs#2 = (byte*) 0 [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #<0 sta.z yoffs sta.z yoffs+1 // [25] phi (byte) bitmap_init::y#2 = (byte) 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 tax // [25] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] // [25] phi (byte*) bitmap_init::yoffs#2 = (byte*) bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy // [25] phi (byte) bitmap_init::y#2 = (byte) bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy // bitmap_init::@3 __b3: // y&$7 // [26] (byte~) bitmap_init::$10 ← (byte) bitmap_init::y#2 & (byte) 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 sax.z __10 // yoffs // [30] (byte~) bitmap_init::$9 ← > (byte*) bitmap_init::yoffs#2 -- vbuaa=_hi_pbuz1 lda.z yoffs+1 // bitmap_plot_yhi[y] = >yoffs // [31] *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$9 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x // if((y&$7)==7) // [32] if((byte~) bitmap_init::$10!=(byte) 7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda #7 cmp.z __10 bne __b4 // bitmap_init::@5 // yoffs = yoffs + 40*8 // [33] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (word)(number) $28*(number) 8 -- pbuz1=pbuz1_plus_vwuc1 clc lda.z yoffs adc #<$28*8 sta.z yoffs lda.z yoffs+1 adc #>$28*8 sta.z yoffs+1 // [34] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] // [34] phi (byte*) bitmap_init::yoffs#4 = (byte*) bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy // bitmap_init::@4 __b4: // for(char y : 0..255) // [35] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx // [36] if((byte) bitmap_init::y#1!=(byte) 0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne __b3 // bitmap_init::@return // } // [37] return rts } // bitmap_clear // Clear all graphics on the bitmap bitmap_clear: { .label bitmap = 7 .label y = 5 // bitmap = (char*) { bitmap_plot_xhi[0], bitmap_plot_xlo[0] } // [38] (word) bitmap_clear::bitmap#0 ← *((const to_nomodify byte*) bitmap_plot_xhi) w= *((const to_nomodify byte*) bitmap_plot_xlo) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 lda bitmap_plot_xlo sta.z bitmap lda bitmap_plot_xhi sta.z bitmap+1 // [39] (byte*) bitmap_clear::bitmap#5 ← (byte*)(word) bitmap_clear::bitmap#0 // [40] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] // [40] phi (byte) bitmap_clear::y#4 = (byte) 0 [phi:bitmap_clear->bitmap_clear::@1#0] -- vbuz1=vbuc1 lda #0 sta.z y // [40] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#5 [phi:bitmap_clear->bitmap_clear::@1#1] -- register_copy // [40] phi from bitmap_clear::@3 to bitmap_clear::@1 [phi:bitmap_clear::@3->bitmap_clear::@1] // [40] phi (byte) bitmap_clear::y#4 = (byte) bitmap_clear::y#1 [phi:bitmap_clear::@3->bitmap_clear::@1#0] -- register_copy // [40] phi (byte*) bitmap_clear::bitmap#3 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@3->bitmap_clear::@1#1] -- register_copy // bitmap_clear::@1 __b1: // [41] phi from bitmap_clear::@1 to bitmap_clear::@2 [phi:bitmap_clear::@1->bitmap_clear::@2] // [41] phi (byte) bitmap_clear::x#2 = (byte) 0 [phi:bitmap_clear::@1->bitmap_clear::@2#0] -- vbuxx=vbuc1 ldx #0 // [41] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#3 [phi:bitmap_clear::@1->bitmap_clear::@2#1] -- register_copy // [41] phi from bitmap_clear::@2 to bitmap_clear::@2 [phi:bitmap_clear::@2->bitmap_clear::@2] // [41] phi (byte) bitmap_clear::x#2 = (byte) bitmap_clear::x#1 [phi:bitmap_clear::@2->bitmap_clear::@2#0] -- register_copy // [41] phi (byte*) bitmap_clear::bitmap#2 = (byte*) bitmap_clear::bitmap#1 [phi:bitmap_clear::@2->bitmap_clear::@2#1] -- register_copy // bitmap_clear::@2 __b2: // *bitmap++ = 0 // [42] *((byte*) bitmap_clear::bitmap#2) ← (byte) 0 -- _deref_pbuz1=vbuc1 lda #0 tay sta (bitmap),y // *bitmap++ = 0; // [43] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2 -- pbuz1=_inc_pbuz1 inc.z bitmap bne !+ inc.z bitmap+1 !: // for( char x: 0..199 ) // [44] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2 -- vbuxx=_inc_vbuxx inx // [45] if((byte) bitmap_clear::x#1!=(byte) $c8) goto bitmap_clear::@2 -- vbuxx_neq_vbuc1_then_la1 cpx #$c8 bne __b2 // bitmap_clear::@3 // for( char y: 0..39 ) // [46] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4 -- vbuz1=_inc_vbuz1 inc.z y // [47] if((byte) bitmap_clear::y#1!=(byte) $28) goto bitmap_clear::@1 -- vbuz1_neq_vbuc1_then_la1 lda #$28 cmp.z y bne __b1 // bitmap_clear::@return // } // [48] return rts } // init_screen init_screen: { .label c = 7 // [50] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1] // [50] phi (byte*) init_screen::c#2 = (const nomodify byte*) SCREEN [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1 lda #SCREEN sta.z c+1 // init_screen::@1 __b1: // for(byte* c = SCREEN; c!=SCREEN+$400;c++) // [51] if((byte*) init_screen::c#2!=(const nomodify byte*) SCREEN+(word) $400) goto init_screen::@2 -- pbuz1_neq_pbuc1_then_la1 lda.z c+1 cmp #>SCREEN+$400 bne __b2 lda.z c cmp #init_screen::@1] // [50] phi (byte*) init_screen::c#2 = (byte*) init_screen::c#1 [phi:init_screen::@2->init_screen::@1#0] -- register_copy jmp __b1 } // bitmap_line // Draw a line on the bitmap // bitmap_line(byte register(A) x1) bitmap_line: { .label x0 = 0 .label y0 = 0 .label y1 = $64 // if(x0bitmap_line_xdyd] jsr bitmap_line_xdyd rts // bitmap_line::@1 __b1: // xd = x1-x0 // [64] (byte) bitmap_line::xd#1 ← (byte) bitmap_line::x1#0 -- vbuxx=vbuaa tax // bitmap_line::@6 // if(ydbitmap_line_xdyi] jsr bitmap_line_xdyi rts } // bitmap_line_ydxd // bitmap_line_ydxd(byte zp(3) y, byte zp(2) x, byte zp(6) xd) bitmap_line_ydxd: { .label xd = 6 .label e = 4 .label y = 3 .label x = 2 // e = xd>>1 // [71] (byte) bitmap_line_ydxd::e#0 ← (byte) bitmap_line_ydxd::xd#0 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd lsr sta.z e // [72] phi from bitmap_line_ydxd to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1] // [72] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#0] -- register_copy // [72] phi (byte) bitmap_line_ydxd::y#2 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [72] phi (byte) bitmap_line_ydxd::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_ydxd->bitmap_line_ydxd::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x // [72] phi from bitmap_line_ydxd::@2 to bitmap_line_ydxd::@1 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1] // [72] phi (byte) bitmap_line_ydxd::e#3 = (byte) bitmap_line_ydxd::e#6 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#0] -- register_copy // [72] phi (byte) bitmap_line_ydxd::y#2 = (byte) bitmap_line_ydxd::y#3 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#1] -- register_copy // [72] phi (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#6 [phi:bitmap_line_ydxd::@2->bitmap_line_ydxd::@1#2] -- register_copy // bitmap_line_ydxd::@1 __b1: // bitmap_plot(x,y) // [73] (byte) bitmap_plot::x#3 ← (byte) bitmap_line_ydxd::x#3 -- vbuxx=vbuz1 ldx.z x // [74] (byte) bitmap_plot::y#3 ← (byte) bitmap_line_ydxd::y#2 -- vbuyy=vbuz1 ldy.z y // [75] call bitmap_plot // [124] phi from bitmap_line_ydxd::@1 to bitmap_plot [phi:bitmap_line_ydxd::@1->bitmap_plot] // [124] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#0] -- register_copy // [124] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#3 [phi:bitmap_line_ydxd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot // bitmap_line_ydxd::@4 // y = y++; // [76] (byte) bitmap_line_ydxd::y#3 ← ++ (byte) bitmap_line_ydxd::y#2 -- vbuz1=_inc_vbuz1 inc.z y // e = e+xd // [77] (byte) bitmap_line_ydxd::e#1 ← (byte) bitmap_line_ydxd::e#3 + (byte) bitmap_line_ydxd::xd#0 -- vbuz1=vbuz1_plus_vbuz2 lda.z e clc adc.z xd sta.z e // if(yd=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2 -- vbuc1_ge_vbuz1_then_la1 lda #bitmap_line.y1 cmp.z e bcs __b2 // bitmap_line_ydxd::@3 // x--; // [79] (byte) bitmap_line_ydxd::x#2 ← -- (byte) bitmap_line_ydxd::x#3 -- vbuz1=_dec_vbuz1 dec.z x // e = e - yd // [80] (byte) bitmap_line_ydxd::e#2 ← (byte) bitmap_line_ydxd::e#1 - (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_minus_vbuc1 lax.z e axs #bitmap_line.y1 stx.z e // [81] phi from bitmap_line_ydxd::@3 bitmap_line_ydxd::@4 to bitmap_line_ydxd::@2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2] // [81] phi (byte) bitmap_line_ydxd::e#6 = (byte) bitmap_line_ydxd::e#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2#0] -- register_copy // [81] phi (byte) bitmap_line_ydxd::x#6 = (byte) bitmap_line_ydxd::x#2 [phi:bitmap_line_ydxd::@3/bitmap_line_ydxd::@4->bitmap_line_ydxd::@2#1] -- register_copy // bitmap_line_ydxd::@2 __b2: // while (y!=(y1+1)) // [82] if((byte) bitmap_line_ydxd::y#3!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxd::@1 -- vbuz1_neq_vbuc1_then_la1 lda #bitmap_line.y1+1 cmp.z y bne __b1 // bitmap_line_ydxd::@return // } // [83] return rts } // bitmap_line_xdyd // bitmap_line_xdyd(byte zp(2) x, byte zp(3) y, byte zp(6) xd) bitmap_line_xdyd: { .label x = 2 .label xd = 6 .label e = 4 .label y = 3 // [85] phi from bitmap_line_xdyd to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1] // [85] phi (byte) bitmap_line_xdyd::e#3 = (const byte) bitmap_line::y1#0>>(byte) 1 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#0] -- vbuz1=vbuc1 lda #bitmap_line.y1>>1 sta.z e // [85] phi (byte) bitmap_line_xdyd::y#3 = (const byte) bitmap_line::y1#0 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y1 sta.z y // [85] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#0 [phi:bitmap_line_xdyd->bitmap_line_xdyd::@1#2] -- register_copy // [85] phi from bitmap_line_xdyd::@2 to bitmap_line_xdyd::@1 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1] // [85] phi (byte) bitmap_line_xdyd::e#3 = (byte) bitmap_line_xdyd::e#6 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#0] -- register_copy // [85] phi (byte) bitmap_line_xdyd::y#3 = (byte) bitmap_line_xdyd::y#6 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#1] -- register_copy // [85] phi (byte) bitmap_line_xdyd::x#3 = (byte) bitmap_line_xdyd::x#2 [phi:bitmap_line_xdyd::@2->bitmap_line_xdyd::@1#2] -- register_copy // bitmap_line_xdyd::@1 __b1: // bitmap_plot(x,y) // [86] (byte) bitmap_plot::x#1 ← (byte) bitmap_line_xdyd::x#3 -- vbuxx=vbuz1 ldx.z x // [87] (byte) bitmap_plot::y#1 ← (byte) bitmap_line_xdyd::y#3 -- vbuyy=vbuz1 ldy.z y // [88] call bitmap_plot // [124] phi from bitmap_line_xdyd::@1 to bitmap_plot [phi:bitmap_line_xdyd::@1->bitmap_plot] // [124] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#0] -- register_copy // [124] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#1 [phi:bitmap_line_xdyd::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot // bitmap_line_xdyd::@4 // x++; // [89] (byte) bitmap_line_xdyd::x#2 ← ++ (byte) bitmap_line_xdyd::x#3 -- vbuz1=_inc_vbuz1 inc.z x // e = e+yd // [90] (byte) bitmap_line_xdyd::e#1 ← (byte) bitmap_line_xdyd::e#3 + (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_plus_vbuc1 lax.z e axs #-[bitmap_line.y1] stx.z e // if(xd=(byte) bitmap_line_xdyd::e#1) goto bitmap_line_xdyd::@2 -- vbuz1_ge_vbuz2_then_la1 lda.z xd cmp.z e bcs __b2 // bitmap_line_xdyd::@3 // y--; // [92] (byte) bitmap_line_xdyd::y#2 ← -- (byte) bitmap_line_xdyd::y#3 -- vbuz1=_dec_vbuz1 dec.z y // e = e - xd // [93] (byte) bitmap_line_xdyd::e#2 ← (byte) bitmap_line_xdyd::e#1 - (byte) bitmap_line_xdyd::xd#0 -- vbuz1=vbuz1_minus_vbuz2 txa sec sbc.z xd sta.z e // [94] phi from bitmap_line_xdyd::@3 bitmap_line_xdyd::@4 to bitmap_line_xdyd::@2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2] // [94] phi (byte) bitmap_line_xdyd::e#6 = (byte) bitmap_line_xdyd::e#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2#0] -- register_copy // [94] phi (byte) bitmap_line_xdyd::y#6 = (byte) bitmap_line_xdyd::y#2 [phi:bitmap_line_xdyd::@3/bitmap_line_xdyd::@4->bitmap_line_xdyd::@2#1] -- register_copy // bitmap_line_xdyd::@2 __b2: // while (x!=(x1+1)) // [95] if((byte) bitmap_line_xdyd::x#2!=(byte) 1) goto bitmap_line_xdyd::@1 -- vbuz1_neq_vbuc1_then_la1 lda #1 cmp.z x bne __b1 // bitmap_line_xdyd::@return // } // [96] return rts } // bitmap_line_ydxi // bitmap_line_ydxi(byte zp(3) y, byte zp(2) x, byte zp(6) xd) bitmap_line_ydxi: { .label xd = 6 .label e = 4 .label y = 3 .label x = 2 // e = xd>>1 // [97] (byte) bitmap_line_ydxi::e#0 ← (byte) bitmap_line_ydxi::xd#1 >> (byte) 1 -- vbuz1=vbuz2_ror_1 lda.z xd lsr sta.z e // [98] phi from bitmap_line_ydxi to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1] // [98] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#0] -- register_copy // [98] phi (byte) bitmap_line_ydxi::y#3 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [98] phi (byte) bitmap_line_ydxi::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_ydxi->bitmap_line_ydxi::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x // [98] phi from bitmap_line_ydxi::@2 to bitmap_line_ydxi::@1 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1] // [98] phi (byte) bitmap_line_ydxi::e#3 = (byte) bitmap_line_ydxi::e#6 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#0] -- register_copy // [98] phi (byte) bitmap_line_ydxi::y#3 = (byte) bitmap_line_ydxi::y#2 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#1] -- register_copy // [98] phi (byte) bitmap_line_ydxi::x#3 = (byte) bitmap_line_ydxi::x#6 [phi:bitmap_line_ydxi::@2->bitmap_line_ydxi::@1#2] -- register_copy // bitmap_line_ydxi::@1 __b1: // bitmap_plot(x,y) // [99] (byte) bitmap_plot::x#2 ← (byte) bitmap_line_ydxi::x#3 -- vbuxx=vbuz1 ldx.z x // [100] (byte) bitmap_plot::y#2 ← (byte) bitmap_line_ydxi::y#3 -- vbuyy=vbuz1 ldy.z y // [101] call bitmap_plot // [124] phi from bitmap_line_ydxi::@1 to bitmap_plot [phi:bitmap_line_ydxi::@1->bitmap_plot] // [124] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#0] -- register_copy // [124] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#2 [phi:bitmap_line_ydxi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot // bitmap_line_ydxi::@4 // y++; // [102] (byte) bitmap_line_ydxi::y#2 ← ++ (byte) bitmap_line_ydxi::y#3 -- vbuz1=_inc_vbuz1 inc.z y // e = e+xd // [103] (byte) bitmap_line_ydxi::e#1 ← (byte) bitmap_line_ydxi::e#3 + (byte) bitmap_line_ydxi::xd#1 -- vbuz1=vbuz1_plus_vbuz2 lda.z e clc adc.z xd sta.z e // if(yd=(byte) bitmap_line_ydxi::e#1) goto bitmap_line_ydxi::@2 -- vbuc1_ge_vbuz1_then_la1 lda #bitmap_line.y1 cmp.z e bcs __b2 // bitmap_line_ydxi::@3 // x++; // [105] (byte) bitmap_line_ydxi::x#2 ← ++ (byte) bitmap_line_ydxi::x#3 -- vbuz1=_inc_vbuz1 inc.z x // e = e - yd // [106] (byte) bitmap_line_ydxi::e#2 ← (byte) bitmap_line_ydxi::e#1 - (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_minus_vbuc1 lax.z e axs #bitmap_line.y1 stx.z e // [107] phi from bitmap_line_ydxi::@3 bitmap_line_ydxi::@4 to bitmap_line_ydxi::@2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2] // [107] phi (byte) bitmap_line_ydxi::e#6 = (byte) bitmap_line_ydxi::e#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2#0] -- register_copy // [107] phi (byte) bitmap_line_ydxi::x#6 = (byte) bitmap_line_ydxi::x#2 [phi:bitmap_line_ydxi::@3/bitmap_line_ydxi::@4->bitmap_line_ydxi::@2#1] -- register_copy // bitmap_line_ydxi::@2 __b2: // while (y!=(y1+1)) // [108] if((byte) bitmap_line_ydxi::y#2!=(const byte) bitmap_line::y1#0+(byte) 1) goto bitmap_line_ydxi::@1 -- vbuz1_neq_vbuc1_then_la1 lda #bitmap_line.y1+1 cmp.z y bne __b1 // bitmap_line_ydxi::@return // } // [109] return rts } // bitmap_line_xdyi // bitmap_line_xdyi(byte zp(2) x, byte zp(3) y, byte zp(5) x1, byte zp(6) xd) bitmap_line_xdyi: { .label x1 = 5 .label xd = 6 .label x = 2 .label e = 4 .label y = 3 // [111] phi from bitmap_line_xdyi to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1] // [111] phi (byte) bitmap_line_xdyi::e#3 = (const byte) bitmap_line::y1#0>>(byte) 1 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#0] -- vbuz1=vbuc1 lda #bitmap_line.y1>>1 sta.z e // [111] phi (byte) bitmap_line_xdyi::y#3 = (const byte) bitmap_line::y0#0 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#1] -- vbuz1=vbuc1 lda #bitmap_line.y0 sta.z y // [111] phi (byte) bitmap_line_xdyi::x#3 = (const byte) bitmap_line::x0#0 [phi:bitmap_line_xdyi->bitmap_line_xdyi::@1#2] -- vbuz1=vbuc1 lda #bitmap_line.x0 sta.z x // [111] phi from bitmap_line_xdyi::@2 to bitmap_line_xdyi::@1 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1] // [111] phi (byte) bitmap_line_xdyi::e#3 = (byte) bitmap_line_xdyi::e#6 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#0] -- register_copy // [111] phi (byte) bitmap_line_xdyi::y#3 = (byte) bitmap_line_xdyi::y#6 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#1] -- register_copy // [111] phi (byte) bitmap_line_xdyi::x#3 = (byte) bitmap_line_xdyi::x#2 [phi:bitmap_line_xdyi::@2->bitmap_line_xdyi::@1#2] -- register_copy // bitmap_line_xdyi::@1 __b1: // bitmap_plot(x,y) // [112] (byte) bitmap_plot::x#0 ← (byte) bitmap_line_xdyi::x#3 -- vbuxx=vbuz1 ldx.z x // [113] (byte) bitmap_plot::y#0 ← (byte) bitmap_line_xdyi::y#3 -- vbuyy=vbuz1 ldy.z y // [114] call bitmap_plot // [124] phi from bitmap_line_xdyi::@1 to bitmap_plot [phi:bitmap_line_xdyi::@1->bitmap_plot] // [124] phi (byte) bitmap_plot::y#4 = (byte) bitmap_plot::y#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#0] -- register_copy // [124] phi (byte) bitmap_plot::x#4 = (byte) bitmap_plot::x#0 [phi:bitmap_line_xdyi::@1->bitmap_plot#1] -- register_copy jsr bitmap_plot // bitmap_line_xdyi::@4 // x++; // [115] (byte) bitmap_line_xdyi::x#2 ← ++ (byte) bitmap_line_xdyi::x#3 -- vbuz1=_inc_vbuz1 inc.z x // e = e+yd // [116] (byte) bitmap_line_xdyi::e#1 ← (byte) bitmap_line_xdyi::e#3 + (const byte) bitmap_line::y1#0 -- vbuz1=vbuz1_plus_vbuc1 lax.z e axs #-[bitmap_line.y1] stx.z e // if(xd=(byte) bitmap_line_xdyi::e#1) goto bitmap_line_xdyi::@2 -- vbuz1_ge_vbuz2_then_la1 lda.z xd cmp.z e bcs __b2 // bitmap_line_xdyi::@3 // y++; // [118] (byte) bitmap_line_xdyi::y#2 ← ++ (byte) bitmap_line_xdyi::y#3 -- vbuz1=_inc_vbuz1 inc.z y // e = e - xd // [119] (byte) bitmap_line_xdyi::e#2 ← (byte) bitmap_line_xdyi::e#1 - (byte) bitmap_line_xdyi::xd#1 -- vbuz1=vbuz1_minus_vbuz2 txa sec sbc.z xd sta.z e // [120] phi from bitmap_line_xdyi::@3 bitmap_line_xdyi::@4 to bitmap_line_xdyi::@2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2] // [120] phi (byte) bitmap_line_xdyi::e#6 = (byte) bitmap_line_xdyi::e#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2#0] -- register_copy // [120] phi (byte) bitmap_line_xdyi::y#6 = (byte) bitmap_line_xdyi::y#2 [phi:bitmap_line_xdyi::@3/bitmap_line_xdyi::@4->bitmap_line_xdyi::@2#1] -- register_copy // bitmap_line_xdyi::@2 __b2: // x1+1 // [121] (byte~) bitmap_line_xdyi::$6 ← (byte) bitmap_line_xdyi::x1#1 + (byte) 1 -- vbuxx=vbuz1_plus_1 ldx.z x1 inx // while (x!=(x1+1)) // [122] if((byte) bitmap_line_xdyi::x#2!=(byte~) bitmap_line_xdyi::$6) goto bitmap_line_xdyi::@1 -- vbuz1_neq_vbuxx_then_la1 cpx.z x bne __b1 // bitmap_line_xdyi::@return // } // [123] return rts } // bitmap_plot // bitmap_plot(byte register(X) x, byte register(Y) y) bitmap_plot: { .label plotter_x = 7 .label plotter_y = 9 .label plotter = 7 // plotter_x = { bitmap_plot_xhi[x], bitmap_plot_xlo[x] } // [125] (word) bitmap_plot::plotter_x#0 ← *((const to_nomodify byte*) bitmap_plot_xhi + (byte) bitmap_plot::x#4) w= *((const to_nomodify byte*) bitmap_plot_xlo + (byte) bitmap_plot::x#4) -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_xhi,x sta.z plotter_x+1 lda bitmap_plot_xlo,x sta.z plotter_x // plotter_y = { bitmap_plot_yhi[y], bitmap_plot_ylo[y] } // [126] (word) bitmap_plot::plotter_y#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4) -- vwuz1=pbuc1_derefidx_vbuyy_word_pbuc2_derefidx_vbuyy lda bitmap_plot_yhi,y sta.z plotter_y+1 lda bitmap_plot_ylo,y sta.z plotter_y // plotter_x+plotter_y // [127] (word) bitmap_plot::plotter#0 ← (word) bitmap_plot::plotter_x#0 + (word) bitmap_plot::plotter_y#0 -- vwuz1=vwuz1_plus_vwuz2 lda.z plotter clc adc.z plotter_y sta.z plotter lda.z plotter+1 adc.z plotter_y+1 sta.z plotter+1 // *plotter | bitmap_plot_bit[x] // [128] (byte~) bitmap_plot::$1 ← *((byte*)(word) bitmap_plot::plotter#0) | *((const to_nomodify byte*) bitmap_plot_bit + (byte) bitmap_plot::x#4) -- vbuaa=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx lda bitmap_plot_bit,x ldy #0 ora (plotter),y // *plotter = *plotter | bitmap_plot_bit[x] // [129] *((byte*)(word) bitmap_plot::plotter#0) ← (byte~) bitmap_plot::$1 -- _deref_pbuz1=vbuaa sta (plotter),y // bitmap_plot::@return // } // [130] return rts } // File Data // Tables for the plotter - initialized by calling bitmap_draw_init(); bitmap_plot_xlo: .fill $100, 0 bitmap_plot_xhi: .fill $100, 0 bitmap_plot_ylo: .fill $100, 0 bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0