Inlined call vicSelectGfxBank::$0 = call toDd00(vicSelectGfxBank::gfx) Inlined call main::$2 = call toD018(SCREEN, BITMAP) Inlined call call __init Eliminating unused variable with no statement bitmap_clear::$1 Eliminating unused variable with no statement bitmap_line::$1 Eliminating unused variable with no statement bitmap_line::$3 Eliminating unused variable with no statement bitmap_line::$9 Eliminating unused variable with no statement bitmap_line::$11 Eliminating unused variable with no statement bitmap_line::$15 Eliminating unused variable with no statement bitmap_line::$20 Eliminating unused variable with no statement memset::$2 CONTROL FLOW GRAPH SSA void bitmap_init(char *gfx , char *screen) bitmap_init: scope:[bitmap_init] from main bitmap_init::screen#1 = phi( main/bitmap_init::screen#0 ) bitmap_init::gfx#1 = phi( main/bitmap_init::gfx#0 ) bitmap_gfx#0 = bitmap_init::gfx#1 bitmap_screen#0 = bitmap_init::screen#1 bitmap_init::bits#0 = $80 bitmap_init::x#0 = 0 to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 bitmap_screen#27 = phi( bitmap_init/bitmap_screen#0, bitmap_init::@2/bitmap_screen#24 ) bitmap_gfx#28 = phi( bitmap_init/bitmap_gfx#0, bitmap_init::@2/bitmap_gfx#25 ) bitmap_init::gfx#4 = phi( bitmap_init/bitmap_init::gfx#1, bitmap_init::@2/bitmap_init::gfx#3 ) bitmap_init::x#2 = phi( bitmap_init/bitmap_init::x#0, bitmap_init::@2/bitmap_init::x#1 ) bitmap_init::bits#3 = phi( bitmap_init/bitmap_init::bits#0, bitmap_init::@2/bitmap_init::bits#4 ) bitmap_plot_bit[bitmap_init::x#2] = bitmap_init::bits#3 bitmap_init::bits#1 = bitmap_init::bits#3 >> 1 bitmap_init::$0 = bitmap_init::bits#1 == 0 bitmap_init::$1 = ! bitmap_init::$0 if(bitmap_init::$1) goto bitmap_init::@2 to:bitmap_init::@3 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@3 bitmap_screen#24 = phi( bitmap_init::@1/bitmap_screen#27, bitmap_init::@3/bitmap_screen#28 ) bitmap_gfx#25 = phi( bitmap_init::@1/bitmap_gfx#28, bitmap_init::@3/bitmap_gfx#29 ) bitmap_init::gfx#3 = phi( bitmap_init::@1/bitmap_init::gfx#4, bitmap_init::@3/bitmap_init::gfx#5 ) bitmap_init::bits#4 = phi( bitmap_init::@1/bitmap_init::bits#1, bitmap_init::@3/bitmap_init::bits#2 ) bitmap_init::x#3 = phi( bitmap_init::@1/bitmap_init::x#2, bitmap_init::@3/bitmap_init::x#4 ) bitmap_init::x#1 = bitmap_init::x#3 + rangenext(0,$ff) bitmap_init::$2 = bitmap_init::x#1 != rangelast(0,$ff) if(bitmap_init::$2) goto bitmap_init::@1 to:bitmap_init::@4 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@1 bitmap_screen#28 = phi( bitmap_init::@1/bitmap_screen#27 ) bitmap_gfx#29 = phi( bitmap_init::@1/bitmap_gfx#28 ) bitmap_init::gfx#5 = phi( bitmap_init::@1/bitmap_init::gfx#4 ) bitmap_init::x#4 = phi( bitmap_init::@1/bitmap_init::x#2 ) bitmap_init::bits#2 = $80 to:bitmap_init::@2 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@2 bitmap_screen#21 = phi( bitmap_init::@2/bitmap_screen#24 ) bitmap_gfx#22 = phi( bitmap_init::@2/bitmap_gfx#25 ) bitmap_init::gfx#2 = phi( bitmap_init::@2/bitmap_init::gfx#3 ) bitmap_init::yoffs#0 = bitmap_init::gfx#2 bitmap_init::y#0 = 0 to:bitmap_init::@5 bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@4 bitmap_init::@6 bitmap_screen#17 = phi( bitmap_init::@4/bitmap_screen#21, bitmap_init::@6/bitmap_screen#13 ) bitmap_gfx#18 = phi( bitmap_init::@4/bitmap_gfx#22, bitmap_init::@6/bitmap_gfx#13 ) bitmap_init::yoffs#2 = phi( bitmap_init::@4/bitmap_init::yoffs#0, bitmap_init::@6/bitmap_init::yoffs#4 ) bitmap_init::y#2 = phi( bitmap_init::@4/bitmap_init::y#0, bitmap_init::@6/bitmap_init::y#1 ) bitmap_init::$3 = bitmap_init::y#2 & 7 bitmap_init::$4 = byte0 bitmap_init::yoffs#2 bitmap_init::$5 = bitmap_init::$3 | bitmap_init::$4 bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$5 bitmap_init::$6 = byte1 bitmap_init::yoffs#2 bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$6 bitmap_init::$7 = bitmap_init::y#2 & 7 bitmap_init::$8 = bitmap_init::$7 == 7 bitmap_init::$9 = ! bitmap_init::$8 if(bitmap_init::$9) goto bitmap_init::@6 to:bitmap_init::@7 bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@5 bitmap_init::@7 bitmap_screen#13 = phi( bitmap_init::@5/bitmap_screen#17, bitmap_init::@7/bitmap_screen#18 ) bitmap_gfx#13 = phi( bitmap_init::@5/bitmap_gfx#18, bitmap_init::@7/bitmap_gfx#19 ) bitmap_init::yoffs#4 = phi( bitmap_init::@5/bitmap_init::yoffs#2, bitmap_init::@7/bitmap_init::yoffs#1 ) bitmap_init::y#3 = phi( bitmap_init::@5/bitmap_init::y#2, bitmap_init::@7/bitmap_init::y#4 ) bitmap_init::y#1 = bitmap_init::y#3 + rangenext(0,$ff) bitmap_init::$11 = bitmap_init::y#1 != rangelast(0,$ff) if(bitmap_init::$11) goto bitmap_init::@5 to:bitmap_init::@return bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@5 bitmap_screen#18 = phi( bitmap_init::@5/bitmap_screen#17 ) bitmap_gfx#19 = phi( bitmap_init::@5/bitmap_gfx#18 ) bitmap_init::y#4 = phi( bitmap_init::@5/bitmap_init::y#2 ) bitmap_init::yoffs#3 = phi( bitmap_init::@5/bitmap_init::yoffs#2 ) bitmap_init::$10 = bitmap_init::yoffs#3 + $28*8 bitmap_init::yoffs#1 = bitmap_init::$10 to:bitmap_init::@6 bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@6 bitmap_screen#7 = phi( bitmap_init::@6/bitmap_screen#13 ) bitmap_gfx#7 = phi( bitmap_init::@6/bitmap_gfx#13 ) bitmap_gfx#1 = bitmap_gfx#7 bitmap_screen#1 = bitmap_screen#7 return to:@return void bitmap_clear(char bgcol , char fgcol) bitmap_clear: scope:[bitmap_clear] from main::@6 bitmap_gfx#14 = phi( main::@6/bitmap_gfx#2 ) bitmap_screen#8 = phi( main::@6/bitmap_screen#2 ) bitmap_clear::bgcol#1 = phi( main::@6/bitmap_clear::bgcol#0 ) bitmap_clear::fgcol#1 = phi( main::@6/bitmap_clear::fgcol#0 ) bitmap_clear::$0 = bitmap_clear::fgcol#1 * $10 bitmap_clear::col#0 = bitmap_clear::$0 + bitmap_clear::bgcol#1 memset::str#0 = (void *)bitmap_screen#8 memset::c#0 = bitmap_clear::col#0 memset::num#0 = $3e8 call memset memset::return#0 = memset::return#3 to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_gfx#8 = phi( bitmap_clear/bitmap_gfx#14 ) memset::str#1 = (void *)bitmap_gfx#8 memset::c#1 = 0 memset::num#1 = $1f40 call memset memset::return#1 = memset::return#3 to:bitmap_clear::@2 bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@2 return to:@return void bitmap_plot(unsigned int x , char y) bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9 bitmap_plot::x#4 = phi( bitmap_line::@3/bitmap_plot::x#2, bitmap_line::@4/bitmap_plot::x#0, bitmap_line::@6/bitmap_plot::x#1, bitmap_line::@9/bitmap_plot::x#3 ) bitmap_plot::y#4 = phi( bitmap_line::@3/bitmap_plot::y#2, bitmap_line::@4/bitmap_plot::y#0, bitmap_line::@6/bitmap_plot::y#1, bitmap_line::@9/bitmap_plot::y#3 ) bitmap_plot::$0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] bitmap_plot::plotter#0 = (char *)bitmap_plot::$0 bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 bitmap_plot::plotter#1 = bitmap_plot::plotter#0 + bitmap_plot::$1 bitmap_plot::$2 = byte0 bitmap_plot::x#4 *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot return to:@return void bitmap_line(unsigned int x1 , unsigned int y1 , unsigned int x2 , unsigned int y2) bitmap_line: scope:[bitmap_line] from main::@2 bitmap_line::y2#4 = phi( main::@2/bitmap_line::y2#0 ) bitmap_line::x2#1 = phi( main::@2/bitmap_line::x2#0 ) bitmap_line::y1#1 = phi( main::@2/bitmap_line::y1#0 ) bitmap_line::x1#1 = phi( main::@2/bitmap_line::x1#0 ) bitmap_line::x#0 = bitmap_line::x1#1 bitmap_line::y#0 = bitmap_line::y1#1 bitmap_line::$0 = bitmap_line::x2#1 - bitmap_line::x1#1 abs_u16::w#0 = bitmap_line::$0 call abs_u16 abs_u16::return#0 = abs_u16::return#4 to:bitmap_line::@12 bitmap_line::@12: scope:[bitmap_line] from bitmap_line bitmap_line::y#16 = phi( bitmap_line/bitmap_line::y#0 ) bitmap_line::x#16 = phi( bitmap_line/bitmap_line::x#0 ) bitmap_line::x1#4 = phi( bitmap_line/bitmap_line::x1#1 ) bitmap_line::x2#7 = phi( bitmap_line/bitmap_line::x2#1 ) bitmap_line::y1#2 = phi( bitmap_line/bitmap_line::y1#1 ) bitmap_line::y2#1 = phi( bitmap_line/bitmap_line::y2#4 ) abs_u16::return#5 = phi( bitmap_line/abs_u16::return#0 ) bitmap_line::dx#0 = abs_u16::return#5 bitmap_line::$2 = bitmap_line::y2#1 - bitmap_line::y1#2 abs_u16::w#1 = bitmap_line::$2 call abs_u16 abs_u16::return#1 = abs_u16::return#4 to:bitmap_line::@13 bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@12 bitmap_line::y1#5 = phi( bitmap_line::@12/bitmap_line::y1#2 ) bitmap_line::y2#8 = phi( bitmap_line::@12/bitmap_line::y2#1 ) bitmap_line::y#10 = phi( bitmap_line::@12/bitmap_line::y#16 ) bitmap_line::x#10 = phi( bitmap_line::@12/bitmap_line::x#16 ) bitmap_line::x1#3 = phi( bitmap_line::@12/bitmap_line::x1#4 ) bitmap_line::x2#4 = phi( bitmap_line::@12/bitmap_line::x2#7 ) bitmap_line::dx#1 = phi( bitmap_line::@12/bitmap_line::dx#0 ) abs_u16::return#6 = phi( bitmap_line::@12/abs_u16::return#1 ) bitmap_line::dy#0 = abs_u16::return#6 bitmap_line::$4 = bitmap_line::dx#1 == 0 bitmap_line::$5 = bitmap_line::dy#0 == 0 bitmap_line::$6 = bitmap_line::$4 && bitmap_line::$5 bitmap_line::$7 = ! bitmap_line::$6 if(bitmap_line::$7) goto bitmap_line::@1 to:bitmap_line::@4 bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::y#19 = phi( bitmap_line::@13/bitmap_line::y#10 ) bitmap_line::x#19 = phi( bitmap_line::@13/bitmap_line::x#10 ) bitmap_line::dy#9 = phi( bitmap_line::@13/bitmap_line::dy#0 ) bitmap_line::dx#10 = phi( bitmap_line::@13/bitmap_line::dx#1 ) bitmap_line::y1#4 = phi( bitmap_line::@13/bitmap_line::y1#5 ) bitmap_line::y2#5 = phi( bitmap_line::@13/bitmap_line::y2#8 ) bitmap_line::x1#2 = phi( bitmap_line::@13/bitmap_line::x1#3 ) bitmap_line::x2#2 = phi( bitmap_line::@13/bitmap_line::x2#4 ) bitmap_line::$8 = bitmap_line::x2#2 - bitmap_line::x1#2 sgn_u16::w#0 = bitmap_line::$8 call sgn_u16 sgn_u16::return#0 = sgn_u16::return#4 to:bitmap_line::@14 bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@1 bitmap_line::x2#11 = phi( bitmap_line::@1/bitmap_line::x2#2 ) bitmap_line::y#18 = phi( bitmap_line::@1/bitmap_line::y#19 ) bitmap_line::x#18 = phi( bitmap_line::@1/bitmap_line::x#19 ) bitmap_line::dy#6 = phi( bitmap_line::@1/bitmap_line::dy#9 ) bitmap_line::dx#7 = phi( bitmap_line::@1/bitmap_line::dx#10 ) bitmap_line::y1#3 = phi( bitmap_line::@1/bitmap_line::y1#4 ) bitmap_line::y2#2 = phi( bitmap_line::@1/bitmap_line::y2#5 ) sgn_u16::return#5 = phi( bitmap_line::@1/sgn_u16::return#0 ) bitmap_line::sx#0 = sgn_u16::return#5 bitmap_line::$10 = bitmap_line::y2#2 - bitmap_line::y1#3 sgn_u16::w#1 = bitmap_line::$10 call sgn_u16 sgn_u16::return#1 = sgn_u16::return#4 to:bitmap_line::@15 bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@14 bitmap_line::y2#11 = phi( bitmap_line::@14/bitmap_line::y2#2 ) bitmap_line::x2#10 = phi( bitmap_line::@14/bitmap_line::x2#11 ) bitmap_line::sx#8 = phi( bitmap_line::@14/bitmap_line::sx#0 ) bitmap_line::y#17 = phi( bitmap_line::@14/bitmap_line::y#18 ) bitmap_line::x#17 = phi( bitmap_line::@14/bitmap_line::x#18 ) bitmap_line::dy#1 = phi( bitmap_line::@14/bitmap_line::dy#6 ) bitmap_line::dx#2 = phi( bitmap_line::@14/bitmap_line::dx#7 ) sgn_u16::return#6 = phi( bitmap_line::@14/sgn_u16::return#1 ) bitmap_line::sy#0 = sgn_u16::return#6 bitmap_line::$12 = bitmap_line::dx#2 > bitmap_line::dy#1 if(bitmap_line::$12) goto bitmap_line::@2 to:bitmap_line::@5 bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::y#3 = phi( bitmap_line::@13/bitmap_line::y#10 ) bitmap_line::x#3 = phi( bitmap_line::@13/bitmap_line::x#10 ) bitmap_plot::x#0 = bitmap_line::x#3 bitmap_plot::y#0 = (char)bitmap_line::y#3 call bitmap_plot to:bitmap_line::@16 bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@4 to:bitmap_line::@return bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@16 bitmap_line::@18 return to:@return bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@15 bitmap_line::sy#10 = phi( bitmap_line::@15/bitmap_line::sy#0 ) bitmap_line::x2#9 = phi( bitmap_line::@15/bitmap_line::x2#10 ) bitmap_line::dx#13 = phi( bitmap_line::@15/bitmap_line::dx#2 ) bitmap_line::sx#7 = phi( bitmap_line::@15/bitmap_line::sx#8 ) bitmap_line::y#14 = phi( bitmap_line::@15/bitmap_line::y#17 ) bitmap_line::x#14 = phi( bitmap_line::@15/bitmap_line::x#17 ) bitmap_line::dy#2 = phi( bitmap_line::@15/bitmap_line::dy#1 ) bitmap_line::e1#0 = bitmap_line::dy#2 / 2 to:bitmap_line::@9 bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@15 bitmap_line::sx#9 = phi( bitmap_line::@15/bitmap_line::sx#8 ) bitmap_line::y2#10 = phi( bitmap_line::@15/bitmap_line::y2#11 ) bitmap_line::dy#10 = phi( bitmap_line::@15/bitmap_line::dy#1 ) bitmap_line::sy#5 = phi( bitmap_line::@15/bitmap_line::sy#0 ) bitmap_line::y#11 = phi( bitmap_line::@15/bitmap_line::y#17 ) bitmap_line::x#11 = phi( bitmap_line::@15/bitmap_line::x#17 ) bitmap_line::dx#3 = phi( bitmap_line::@15/bitmap_line::dx#2 ) bitmap_line::e#0 = bitmap_line::dx#3 / 2 to:bitmap_line::@6 bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5 bitmap_line::@7 bitmap_line::sx#5 = phi( bitmap_line::@5/bitmap_line::sx#9, bitmap_line::@7/bitmap_line::sx#10 ) bitmap_line::y2#9 = phi( bitmap_line::@5/bitmap_line::y2#10, bitmap_line::@7/bitmap_line::y2#3 ) bitmap_line::dy#7 = phi( bitmap_line::@5/bitmap_line::dy#10, bitmap_line::@7/bitmap_line::dy#11 ) bitmap_line::dx#8 = phi( bitmap_line::@5/bitmap_line::dx#3, bitmap_line::@7/bitmap_line::dx#11 ) bitmap_line::e#5 = phi( bitmap_line::@5/bitmap_line::e#0, bitmap_line::@7/bitmap_line::e#6 ) bitmap_line::sy#3 = phi( bitmap_line::@5/bitmap_line::sy#5, bitmap_line::@7/bitmap_line::sy#6 ) bitmap_line::y#4 = phi( bitmap_line::@5/bitmap_line::y#11, bitmap_line::@7/bitmap_line::y#6 ) bitmap_line::x#4 = phi( bitmap_line::@5/bitmap_line::x#11, bitmap_line::@7/bitmap_line::x#12 ) bitmap_plot::x#1 = bitmap_line::x#4 bitmap_plot::y#1 = (char)bitmap_line::y#4 call bitmap_plot to:bitmap_line::@17 bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@6 bitmap_line::sx#3 = phi( bitmap_line::@6/bitmap_line::sx#5 ) bitmap_line::x#13 = phi( bitmap_line::@6/bitmap_line::x#4 ) bitmap_line::y2#6 = phi( bitmap_line::@6/bitmap_line::y2#9 ) bitmap_line::dy#3 = phi( bitmap_line::@6/bitmap_line::dy#7 ) bitmap_line::dx#4 = phi( bitmap_line::@6/bitmap_line::dx#8 ) bitmap_line::e#3 = phi( bitmap_line::@6/bitmap_line::e#5 ) bitmap_line::sy#1 = phi( bitmap_line::@6/bitmap_line::sy#3 ) bitmap_line::y#5 = phi( bitmap_line::@6/bitmap_line::y#4 ) bitmap_line::y#1 = bitmap_line::y#5 + bitmap_line::sy#1 bitmap_line::e#1 = bitmap_line::e#3 + bitmap_line::dx#4 bitmap_line::$17 = bitmap_line::dy#3 < bitmap_line::e#1 bitmap_line::$18 = ! bitmap_line::$17 if(bitmap_line::$18) goto bitmap_line::@7 to:bitmap_line::@8 bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@17 bitmap_line::@8 bitmap_line::sx#10 = phi( bitmap_line::@17/bitmap_line::sx#3, bitmap_line::@8/bitmap_line::sx#1 ) bitmap_line::dy#11 = phi( bitmap_line::@17/bitmap_line::dy#3, bitmap_line::@8/bitmap_line::dy#4 ) bitmap_line::dx#11 = phi( bitmap_line::@17/bitmap_line::dx#4, bitmap_line::@8/bitmap_line::dx#14 ) bitmap_line::e#6 = phi( bitmap_line::@17/bitmap_line::e#1, bitmap_line::@8/bitmap_line::e#2 ) bitmap_line::sy#6 = phi( bitmap_line::@17/bitmap_line::sy#1, bitmap_line::@8/bitmap_line::sy#8 ) bitmap_line::x#12 = phi( bitmap_line::@17/bitmap_line::x#13, bitmap_line::@8/bitmap_line::x#1 ) bitmap_line::y2#3 = phi( bitmap_line::@17/bitmap_line::y2#6, bitmap_line::@8/bitmap_line::y2#7 ) bitmap_line::y#6 = phi( bitmap_line::@17/bitmap_line::y#1, bitmap_line::@8/bitmap_line::y#12 ) bitmap_line::$19 = bitmap_line::y#6 != bitmap_line::y2#3 if(bitmap_line::$19) goto bitmap_line::@6 to:bitmap_line::@3 bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@17 bitmap_line::dx#14 = phi( bitmap_line::@17/bitmap_line::dx#4 ) bitmap_line::sy#8 = phi( bitmap_line::@17/bitmap_line::sy#1 ) bitmap_line::y2#7 = phi( bitmap_line::@17/bitmap_line::y2#6 ) bitmap_line::y#12 = phi( bitmap_line::@17/bitmap_line::y#1 ) bitmap_line::dy#4 = phi( bitmap_line::@17/bitmap_line::dy#3 ) bitmap_line::e#4 = phi( bitmap_line::@17/bitmap_line::e#1 ) bitmap_line::sx#1 = phi( bitmap_line::@17/bitmap_line::sx#3 ) bitmap_line::x#5 = phi( bitmap_line::@17/bitmap_line::x#13 ) bitmap_line::x#1 = bitmap_line::x#5 + bitmap_line::sx#1 bitmap_line::e#2 = bitmap_line::e#4 - bitmap_line::dy#4 to:bitmap_line::@7 bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@7 bitmap_line::y#7 = phi( bitmap_line::@10/bitmap_line::y#13, bitmap_line::@7/bitmap_line::y#6 ) bitmap_line::x#6 = phi( bitmap_line::@10/bitmap_line::x#9, bitmap_line::@7/bitmap_line::x#12 ) bitmap_plot::x#2 = bitmap_line::x#6 bitmap_plot::y#2 = (char)bitmap_line::y#7 call bitmap_plot to:bitmap_line::@18 bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@3 to:bitmap_line::@return bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@2 bitmap_line::sy#7 = phi( bitmap_line::@10/bitmap_line::sy#9, bitmap_line::@2/bitmap_line::sy#10 ) bitmap_line::x2#8 = phi( bitmap_line::@10/bitmap_line::x2#3, bitmap_line::@2/bitmap_line::x2#9 ) bitmap_line::dx#9 = phi( bitmap_line::@10/bitmap_line::dx#12, bitmap_line::@2/bitmap_line::dx#13 ) bitmap_line::dy#8 = phi( bitmap_line::@10/bitmap_line::dy#12, bitmap_line::@2/bitmap_line::dy#2 ) bitmap_line::e1#5 = phi( bitmap_line::@10/bitmap_line::e1#6, bitmap_line::@2/bitmap_line::e1#0 ) bitmap_line::sx#4 = phi( bitmap_line::@10/bitmap_line::sx#6, bitmap_line::@2/bitmap_line::sx#7 ) bitmap_line::y#8 = phi( bitmap_line::@10/bitmap_line::y#13, bitmap_line::@2/bitmap_line::y#14 ) bitmap_line::x#7 = phi( bitmap_line::@10/bitmap_line::x#9, bitmap_line::@2/bitmap_line::x#14 ) bitmap_plot::x#3 = bitmap_line::x#7 bitmap_plot::y#3 = (char)bitmap_line::y#8 call bitmap_plot to:bitmap_line::@19 bitmap_line::@19: scope:[bitmap_line] from bitmap_line::@9 bitmap_line::sy#4 = phi( bitmap_line::@9/bitmap_line::sy#7 ) bitmap_line::y#15 = phi( bitmap_line::@9/bitmap_line::y#8 ) bitmap_line::x2#6 = phi( bitmap_line::@9/bitmap_line::x2#8 ) bitmap_line::dx#5 = phi( bitmap_line::@9/bitmap_line::dx#9 ) bitmap_line::dy#5 = phi( bitmap_line::@9/bitmap_line::dy#8 ) bitmap_line::e1#3 = phi( bitmap_line::@9/bitmap_line::e1#5 ) bitmap_line::sx#2 = phi( bitmap_line::@9/bitmap_line::sx#4 ) bitmap_line::x#8 = phi( bitmap_line::@9/bitmap_line::x#7 ) bitmap_line::x#2 = bitmap_line::x#8 + bitmap_line::sx#2 bitmap_line::e1#1 = bitmap_line::e1#3 + bitmap_line::dy#5 bitmap_line::$22 = bitmap_line::dx#5 < bitmap_line::e1#1 bitmap_line::$23 = ! bitmap_line::$22 if(bitmap_line::$23) goto bitmap_line::@10 to:bitmap_line::@11 bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@11 bitmap_line::@19 bitmap_line::sy#9 = phi( bitmap_line::@11/bitmap_line::sy#2, bitmap_line::@19/bitmap_line::sy#4 ) bitmap_line::dx#12 = phi( bitmap_line::@11/bitmap_line::dx#6, bitmap_line::@19/bitmap_line::dx#5 ) bitmap_line::dy#12 = phi( bitmap_line::@11/bitmap_line::dy#13, bitmap_line::@19/bitmap_line::dy#5 ) bitmap_line::e1#6 = phi( bitmap_line::@11/bitmap_line::e1#2, bitmap_line::@19/bitmap_line::e1#1 ) bitmap_line::sx#6 = phi( bitmap_line::@11/bitmap_line::sx#11, bitmap_line::@19/bitmap_line::sx#2 ) bitmap_line::y#13 = phi( bitmap_line::@11/bitmap_line::y#2, bitmap_line::@19/bitmap_line::y#15 ) bitmap_line::x2#3 = phi( bitmap_line::@11/bitmap_line::x2#5, bitmap_line::@19/bitmap_line::x2#6 ) bitmap_line::x#9 = phi( bitmap_line::@11/bitmap_line::x#15, bitmap_line::@19/bitmap_line::x#2 ) bitmap_line::$24 = bitmap_line::x#9 != bitmap_line::x2#3 if(bitmap_line::$24) goto bitmap_line::@9 to:bitmap_line::@3 bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@19 bitmap_line::dy#13 = phi( bitmap_line::@19/bitmap_line::dy#5 ) bitmap_line::sx#11 = phi( bitmap_line::@19/bitmap_line::sx#2 ) bitmap_line::x2#5 = phi( bitmap_line::@19/bitmap_line::x2#6 ) bitmap_line::x#15 = phi( bitmap_line::@19/bitmap_line::x#2 ) bitmap_line::dx#6 = phi( bitmap_line::@19/bitmap_line::dx#5 ) bitmap_line::e1#4 = phi( bitmap_line::@19/bitmap_line::e1#1 ) bitmap_line::sy#2 = phi( bitmap_line::@19/bitmap_line::sy#4 ) bitmap_line::y#9 = phi( bitmap_line::@19/bitmap_line::y#15 ) bitmap_line::y#2 = bitmap_line::y#9 + bitmap_line::sy#2 bitmap_line::e1#2 = bitmap_line::e1#4 - bitmap_line::dx#6 to:bitmap_line::@10 void * memset(void *str , char c , unsigned int num) memset: scope:[memset] from bitmap_clear bitmap_clear::@1 memset::c#5 = phi( bitmap_clear/memset::c#0, bitmap_clear::@1/memset::c#1 ) memset::str#4 = phi( bitmap_clear/memset::str#0, bitmap_clear::@1/memset::str#1 ) memset::num#2 = phi( bitmap_clear/memset::num#0, bitmap_clear::@1/memset::num#1 ) memset::$0 = memset::num#2 > 0 memset::$1 = ! memset::$0 if(memset::$1) goto memset::@1 to:memset::@2 memset::@1: scope:[memset] from memset memset::@3 memset::str#2 = phi( memset/memset::str#4, memset::@3/memset::str#5 ) memset::return#2 = memset::str#2 to:memset::@return memset::@2: scope:[memset] from memset memset::c#4 = phi( memset/memset::c#5 ) memset::num#3 = phi( memset/memset::num#2 ) memset::str#3 = phi( memset/memset::str#4 ) memset::$4 = (char *)memset::str#3 memset::end#0 = memset::$4 + memset::num#3 memset::dst#0 = ((char *)) memset::str#3 to:memset::@3 memset::@3: scope:[memset] from memset::@2 memset::@4 memset::c#3 = phi( memset::@2/memset::c#4, memset::@4/memset::c#2 ) memset::str#5 = phi( memset::@2/memset::str#3, memset::@4/memset::str#6 ) memset::end#1 = phi( memset::@2/memset::end#0, memset::@4/memset::end#2 ) memset::dst#2 = phi( memset::@2/memset::dst#0, memset::@4/memset::dst#1 ) memset::$3 = memset::dst#2 != memset::end#1 if(memset::$3) goto memset::@4 to:memset::@1 memset::@4: scope:[memset] from memset::@3 memset::str#6 = phi( memset::@3/memset::str#5 ) memset::end#2 = phi( memset::@3/memset::end#1 ) memset::dst#3 = phi( memset::@3/memset::dst#2 ) memset::c#2 = phi( memset::@3/memset::c#3 ) *memset::dst#3 = memset::c#2 memset::dst#1 = ++ memset::dst#3 to:memset::@3 memset::@return: scope:[memset] from memset::@1 memset::return#4 = phi( memset::@1/memset::return#2 ) memset::return#3 = memset::return#4 return to:@return unsigned int abs_u16(unsigned int w) abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@12 abs_u16::w#2 = phi( bitmap_line/abs_u16::w#0, bitmap_line::@12/abs_u16::w#1 ) abs_u16::$0 = byte1 abs_u16::w#2 abs_u16::$1 = abs_u16::$0 & $80 abs_u16::$3 = 0 != abs_u16::$1 if(abs_u16::$3) goto abs_u16::@1 to:abs_u16::@2 abs_u16::@1: scope:[abs_u16] from abs_u16 abs_u16::w#3 = phi( abs_u16/abs_u16::w#2 ) abs_u16::$2 = - abs_u16::w#3 abs_u16::return#2 = abs_u16::$2 to:abs_u16::@return abs_u16::@2: scope:[abs_u16] from abs_u16 abs_u16::w#4 = phi( abs_u16/abs_u16::w#2 ) abs_u16::return#3 = abs_u16::w#4 to:abs_u16::@return abs_u16::@return: scope:[abs_u16] from abs_u16::@1 abs_u16::@2 abs_u16::return#7 = phi( abs_u16::@1/abs_u16::return#2, abs_u16::@2/abs_u16::return#3 ) abs_u16::return#4 = abs_u16::return#7 return to:@return unsigned int sgn_u16(unsigned int w) sgn_u16: scope:[sgn_u16] from bitmap_line::@1 bitmap_line::@14 sgn_u16::w#2 = phi( bitmap_line::@1/sgn_u16::w#0, bitmap_line::@14/sgn_u16::w#1 ) sgn_u16::$0 = byte1 sgn_u16::w#2 sgn_u16::$1 = sgn_u16::$0 & $80 sgn_u16::$2 = 0 != sgn_u16::$1 if(sgn_u16::$2) goto sgn_u16::@1 to:sgn_u16::@2 sgn_u16::@1: scope:[sgn_u16] from sgn_u16 sgn_u16::return#2 = -1 to:sgn_u16::@return sgn_u16::@2: scope:[sgn_u16] from sgn_u16 sgn_u16::return#3 = 1 to:sgn_u16::@return sgn_u16::@return: scope:[sgn_u16] from sgn_u16::@1 sgn_u16::@2 sgn_u16::return#7 = phi( sgn_u16::@1/sgn_u16::return#2, sgn_u16::@2/sgn_u16::return#3 ) sgn_u16::return#4 = sgn_u16::return#7 return to:@return void main() main: scope:[main] from __start::@1 bitmap_screen#14 = phi( __start::@1/bitmap_screen#16 ) bitmap_gfx#15 = phi( __start::@1/bitmap_gfx#17 ) bitmap_init::gfx#0 = BITMAP bitmap_init::screen#0 = SCREEN call bitmap_init to:main::@6 main::@6: scope:[main] from main bitmap_screen#9 = phi( main/bitmap_screen#1 ) bitmap_gfx#9 = phi( main/bitmap_gfx#1 ) bitmap_gfx#2 = bitmap_gfx#9 bitmap_screen#2 = bitmap_screen#9 bitmap_clear::bgcol#0 = BLACK bitmap_clear::fgcol#0 = WHITE call bitmap_clear to:main::@7 main::@7: scope:[main] from main::@6 bitmap_screen#30 = phi( main::@6/bitmap_screen#2 ) bitmap_gfx#31 = phi( main::@6/bitmap_gfx#2 ) *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 main::toD0181_screen#0 = SCREEN main::toD0181_gfx#0 = BITMAP to:main::toD0181 main::toD0181: scope:[main] from main::@7 bitmap_screen#29 = phi( main::@7/bitmap_screen#30 ) bitmap_gfx#30 = phi( main::@7/bitmap_gfx#31 ) main::toD0181_gfx#1 = phi( main::@7/main::toD0181_gfx#0 ) main::toD0181_screen#1 = phi( main::@7/main::toD0181_screen#0 ) main::toD0181_$7 = (unsigned int)main::toD0181_screen#1 main::toD0181_$0 = main::toD0181_$7 & $3fff main::toD0181_$1 = main::toD0181_$0 * 4 main::toD0181_$2 = byte1 main::toD0181_$1 main::toD0181_$3 = byte1 (unsigned int)main::toD0181_gfx#1 main::toD0181_$4 = main::toD0181_$3 / 4 main::toD0181_$5 = main::toD0181_$4 & $f main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5 main::toD0181_return#0 = main::toD0181_$6 to:main::toD0181_@return main::toD0181_@return: scope:[main] from main::toD0181 bitmap_screen#25 = phi( main::toD0181/bitmap_screen#29 ) bitmap_gfx#26 = phi( main::toD0181/bitmap_gfx#30 ) main::toD0181_return#2 = phi( main::toD0181/main::toD0181_return#0 ) main::toD0181_return#1 = main::toD0181_return#2 to:main::@5 main::@5: scope:[main] from main::toD0181_@return bitmap_screen#22 = phi( main::toD0181_@return/bitmap_screen#25 ) bitmap_gfx#23 = phi( main::toD0181_@return/bitmap_gfx#26 ) main::toD0181_return#3 = phi( main::toD0181_@return/main::toD0181_return#1 ) main::$2 = main::toD0181_return#3 *D018 = main::$2 main::i#0 = 0 main::a#0 = 0 to:main::@1 main::@1: scope:[main] from main::@5 main::@8 bitmap_screen#19 = phi( main::@5/bitmap_screen#22, main::@8/bitmap_screen#23 ) bitmap_gfx#20 = phi( main::@5/bitmap_gfx#23, main::@8/bitmap_gfx#24 ) main::a#4 = phi( main::@5/main::a#0, main::@8/main::a#1 ) main::i#2 = phi( main::@5/main::i#0, main::@8/main::i#1 ) main::$3 = main::i#2 != 8 if(main::$3) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 bitmap_screen#26 = phi( main::@1/bitmap_screen#19 ) bitmap_gfx#27 = phi( main::@1/bitmap_gfx#20 ) main::i#4 = phi( main::@1/main::i#2 ) main::a#2 = phi( main::@1/main::a#4 ) main::$13 = (unsigned int)COSTAB[main::a#2] main::$4 = main::$13 + $78 main::$5 = main::a#2 + $20 main::$14 = (unsigned int)COSTAB[main::$5] main::$6 = main::$14 + $78 main::$7 = main::a#2 + $20 bitmap_line::x1#0 = main::$4 bitmap_line::y1#0 = (unsigned int)SINTAB[main::a#2] bitmap_line::x2#0 = main::$6 bitmap_line::y2#0 = (unsigned int)SINTAB[main::$7] call bitmap_line to:main::@8 main::@8: scope:[main] from main::@2 bitmap_screen#23 = phi( main::@2/bitmap_screen#26 ) bitmap_gfx#24 = phi( main::@2/bitmap_gfx#27 ) main::i#3 = phi( main::@2/main::i#4 ) main::a#3 = phi( main::@2/main::a#2 ) main::a#1 = main::a#3 + $20 main::i#1 = ++ main::i#3 to:main::@1 main::@3: scope:[main] from main::@1 main::@4 bitmap_screen#15 = phi( main::@1/bitmap_screen#19, main::@4/bitmap_screen#20 ) bitmap_gfx#16 = phi( main::@1/bitmap_gfx#20, main::@4/bitmap_gfx#21 ) if(true) goto main::@4 to:main::@return main::@4: scope:[main] from main::@3 bitmap_screen#20 = phi( main::@3/bitmap_screen#15 ) bitmap_gfx#21 = phi( main::@3/bitmap_gfx#16 ) main::$12 = SCREEN + $3e7 *main::$12 = ++ *main::$12 to:main::@3 main::@return: scope:[main] from main::@3 bitmap_screen#10 = phi( main::@3/bitmap_screen#15 ) bitmap_gfx#10 = phi( main::@3/bitmap_gfx#16 ) bitmap_gfx#3 = bitmap_gfx#10 bitmap_screen#3 = bitmap_screen#10 return to:@return void __start() __start: scope:[__start] from to:__start::__init1 __start::__init1: scope:[__start] from __start bitmap_screen#4 = (char *) 0 bitmap_gfx#4 = (char *) 0 to:__start::@1 __start::@1: scope:[__start] from __start::__init1 bitmap_screen#16 = phi( __start::__init1/bitmap_screen#4 ) bitmap_gfx#17 = phi( __start::__init1/bitmap_gfx#4 ) call main to:__start::@2 __start::@2: scope:[__start] from __start::@1 bitmap_screen#11 = phi( __start::@1/bitmap_screen#3 ) bitmap_gfx#11 = phi( __start::@1/bitmap_gfx#3 ) bitmap_gfx#5 = bitmap_gfx#11 bitmap_screen#5 = bitmap_screen#11 to:__start::@return __start::@return: scope:[__start] from __start::@2 bitmap_gfx#12 = phi( __start::@2/bitmap_gfx#5 ) bitmap_screen#12 = phi( __start::@2/bitmap_screen#5 ) bitmap_screen#6 = bitmap_screen#12 bitmap_gfx#6 = bitmap_gfx#12 return to:@return SYMBOL TABLE SSA __constant char *BITMAP = (char *)$2000 __constant const char BLACK = 0 __constant char *COSTAB = SINTAB+$40 __constant char * const D011 = (char *)$d011 __constant char * const D018 = (char *)$d018 __constant char RADIX::BINARY = 2 __constant char RADIX::DECIMAL = $a __constant char RADIX::HEXADECIMAL = $10 __constant char RADIX::OCTAL = 8 __constant char *SCREEN = (char *)$400 __constant char SINTAB[$180] = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256) }} __constant const char VICII_BMM = $20 __constant const char VICII_DEN = $10 __constant const char VICII_RSEL = 8 __constant const char WHITE = 1 void __start() unsigned int abs_u16(unsigned int w) char abs_u16::$0 number abs_u16::$1 unsigned int abs_u16::$2 bool abs_u16::$3 unsigned int abs_u16::return unsigned int abs_u16::return#0 unsigned int abs_u16::return#1 unsigned int abs_u16::return#2 unsigned int abs_u16::return#3 unsigned int abs_u16::return#4 unsigned int abs_u16::return#5 unsigned int abs_u16::return#6 unsigned int abs_u16::return#7 unsigned int abs_u16::w unsigned int abs_u16::w#0 unsigned int abs_u16::w#1 unsigned int abs_u16::w#2 unsigned int abs_u16::w#3 unsigned int abs_u16::w#4 void bitmap_clear(char bgcol , char fgcol) number bitmap_clear::$0 char bitmap_clear::bgcol char bitmap_clear::bgcol#0 char bitmap_clear::bgcol#1 char bitmap_clear::col char bitmap_clear::col#0 char bitmap_clear::fgcol char bitmap_clear::fgcol#0 char bitmap_clear::fgcol#1 char *bitmap_gfx char *bitmap_gfx#0 char *bitmap_gfx#1 char *bitmap_gfx#10 char *bitmap_gfx#11 char *bitmap_gfx#12 char *bitmap_gfx#13 char *bitmap_gfx#14 char *bitmap_gfx#15 char *bitmap_gfx#16 char *bitmap_gfx#17 char *bitmap_gfx#18 char *bitmap_gfx#19 char *bitmap_gfx#2 char *bitmap_gfx#20 char *bitmap_gfx#21 char *bitmap_gfx#22 char *bitmap_gfx#23 char *bitmap_gfx#24 char *bitmap_gfx#25 char *bitmap_gfx#26 char *bitmap_gfx#27 char *bitmap_gfx#28 char *bitmap_gfx#29 char *bitmap_gfx#3 char *bitmap_gfx#30 char *bitmap_gfx#31 char *bitmap_gfx#4 char *bitmap_gfx#5 char *bitmap_gfx#6 char *bitmap_gfx#7 char *bitmap_gfx#8 char *bitmap_gfx#9 void bitmap_init(char *gfx , char *screen) bool bitmap_init::$0 bool bitmap_init::$1 char *bitmap_init::$10 bool bitmap_init::$11 bool bitmap_init::$2 number bitmap_init::$3 char bitmap_init::$4 number bitmap_init::$5 char bitmap_init::$6 number bitmap_init::$7 bool bitmap_init::$8 bool bitmap_init::$9 char bitmap_init::bits char bitmap_init::bits#0 char bitmap_init::bits#1 char bitmap_init::bits#2 char bitmap_init::bits#3 char bitmap_init::bits#4 char *bitmap_init::gfx char *bitmap_init::gfx#0 char *bitmap_init::gfx#1 char *bitmap_init::gfx#2 char *bitmap_init::gfx#3 char *bitmap_init::gfx#4 char *bitmap_init::gfx#5 char *bitmap_init::screen char *bitmap_init::screen#0 char *bitmap_init::screen#1 char bitmap_init::x char bitmap_init::x#0 char bitmap_init::x#1 char bitmap_init::x#2 char bitmap_init::x#3 char bitmap_init::x#4 char bitmap_init::y char bitmap_init::y#0 char bitmap_init::y#1 char bitmap_init::y#2 char bitmap_init::y#3 char bitmap_init::y#4 char *bitmap_init::yoffs char *bitmap_init::yoffs#0 char *bitmap_init::yoffs#1 char *bitmap_init::yoffs#2 char *bitmap_init::yoffs#3 char *bitmap_init::yoffs#4 void bitmap_line(unsigned int x1 , unsigned int y1 , unsigned int x2 , unsigned int y2) unsigned int bitmap_line::$0 unsigned int bitmap_line::$10 bool bitmap_line::$12 bool bitmap_line::$17 bool bitmap_line::$18 bool bitmap_line::$19 unsigned int bitmap_line::$2 bool bitmap_line::$22 bool bitmap_line::$23 bool bitmap_line::$24 bool bitmap_line::$4 bool bitmap_line::$5 bool bitmap_line::$6 bool bitmap_line::$7 unsigned int bitmap_line::$8 unsigned int bitmap_line::dx unsigned int bitmap_line::dx#0 unsigned int bitmap_line::dx#1 unsigned int bitmap_line::dx#10 unsigned int bitmap_line::dx#11 unsigned int bitmap_line::dx#12 unsigned int bitmap_line::dx#13 unsigned int bitmap_line::dx#14 unsigned int bitmap_line::dx#2 unsigned int bitmap_line::dx#3 unsigned int bitmap_line::dx#4 unsigned int bitmap_line::dx#5 unsigned int bitmap_line::dx#6 unsigned int bitmap_line::dx#7 unsigned int bitmap_line::dx#8 unsigned int bitmap_line::dx#9 unsigned int bitmap_line::dy unsigned int bitmap_line::dy#0 unsigned int bitmap_line::dy#1 unsigned int bitmap_line::dy#10 unsigned int bitmap_line::dy#11 unsigned int bitmap_line::dy#12 unsigned int bitmap_line::dy#13 unsigned int bitmap_line::dy#2 unsigned int bitmap_line::dy#3 unsigned int bitmap_line::dy#4 unsigned int bitmap_line::dy#5 unsigned int bitmap_line::dy#6 unsigned int bitmap_line::dy#7 unsigned int bitmap_line::dy#8 unsigned int bitmap_line::dy#9 unsigned int bitmap_line::e unsigned int bitmap_line::e#0 unsigned int bitmap_line::e#1 unsigned int bitmap_line::e#2 unsigned int bitmap_line::e#3 unsigned int bitmap_line::e#4 unsigned int bitmap_line::e#5 unsigned int bitmap_line::e#6 unsigned int bitmap_line::e1 unsigned int bitmap_line::e1#0 unsigned int bitmap_line::e1#1 unsigned int bitmap_line::e1#2 unsigned int bitmap_line::e1#3 unsigned int bitmap_line::e1#4 unsigned int bitmap_line::e1#5 unsigned int bitmap_line::e1#6 unsigned int bitmap_line::sx unsigned int bitmap_line::sx#0 unsigned int bitmap_line::sx#1 unsigned int bitmap_line::sx#10 unsigned int bitmap_line::sx#11 unsigned int bitmap_line::sx#2 unsigned int bitmap_line::sx#3 unsigned int bitmap_line::sx#4 unsigned int bitmap_line::sx#5 unsigned int bitmap_line::sx#6 unsigned int bitmap_line::sx#7 unsigned int bitmap_line::sx#8 unsigned int bitmap_line::sx#9 unsigned int bitmap_line::sy unsigned int bitmap_line::sy#0 unsigned int bitmap_line::sy#1 unsigned int bitmap_line::sy#10 unsigned int bitmap_line::sy#2 unsigned int bitmap_line::sy#3 unsigned int bitmap_line::sy#4 unsigned int bitmap_line::sy#5 unsigned int bitmap_line::sy#6 unsigned int bitmap_line::sy#7 unsigned int bitmap_line::sy#8 unsigned int bitmap_line::sy#9 unsigned int bitmap_line::x unsigned int bitmap_line::x#0 unsigned int bitmap_line::x#1 unsigned int bitmap_line::x#10 unsigned int bitmap_line::x#11 unsigned int bitmap_line::x#12 unsigned int bitmap_line::x#13 unsigned int bitmap_line::x#14 unsigned int bitmap_line::x#15 unsigned int bitmap_line::x#16 unsigned int bitmap_line::x#17 unsigned int bitmap_line::x#18 unsigned int bitmap_line::x#19 unsigned int bitmap_line::x#2 unsigned int bitmap_line::x#3 unsigned int bitmap_line::x#4 unsigned int bitmap_line::x#5 unsigned int bitmap_line::x#6 unsigned int bitmap_line::x#7 unsigned int bitmap_line::x#8 unsigned int bitmap_line::x#9 unsigned int bitmap_line::x1 unsigned int bitmap_line::x1#0 unsigned int bitmap_line::x1#1 unsigned int bitmap_line::x1#2 unsigned int bitmap_line::x1#3 unsigned int bitmap_line::x1#4 unsigned int bitmap_line::x2 unsigned int bitmap_line::x2#0 unsigned int bitmap_line::x2#1 unsigned int bitmap_line::x2#10 unsigned int bitmap_line::x2#11 unsigned int bitmap_line::x2#2 unsigned int bitmap_line::x2#3 unsigned int bitmap_line::x2#4 unsigned int bitmap_line::x2#5 unsigned int bitmap_line::x2#6 unsigned int bitmap_line::x2#7 unsigned int bitmap_line::x2#8 unsigned int bitmap_line::x2#9 unsigned int bitmap_line::y unsigned int bitmap_line::y#0 unsigned int bitmap_line::y#1 unsigned int bitmap_line::y#10 unsigned int bitmap_line::y#11 unsigned int bitmap_line::y#12 unsigned int bitmap_line::y#13 unsigned int bitmap_line::y#14 unsigned int bitmap_line::y#15 unsigned int bitmap_line::y#16 unsigned int bitmap_line::y#17 unsigned int bitmap_line::y#18 unsigned int bitmap_line::y#19 unsigned int bitmap_line::y#2 unsigned int bitmap_line::y#3 unsigned int bitmap_line::y#4 unsigned int bitmap_line::y#5 unsigned int bitmap_line::y#6 unsigned int bitmap_line::y#7 unsigned int bitmap_line::y#8 unsigned int bitmap_line::y#9 unsigned int bitmap_line::y1 unsigned int bitmap_line::y1#0 unsigned int bitmap_line::y1#1 unsigned int bitmap_line::y1#2 unsigned int bitmap_line::y1#3 unsigned int bitmap_line::y1#4 unsigned int bitmap_line::y1#5 unsigned int bitmap_line::y2 unsigned int bitmap_line::y2#0 unsigned int bitmap_line::y2#1 unsigned int bitmap_line::y2#10 unsigned int bitmap_line::y2#11 unsigned int bitmap_line::y2#2 unsigned int bitmap_line::y2#3 unsigned int bitmap_line::y2#4 unsigned int bitmap_line::y2#5 unsigned int bitmap_line::y2#6 unsigned int bitmap_line::y2#7 unsigned int bitmap_line::y2#8 unsigned int bitmap_line::y2#9 void bitmap_plot(unsigned int x , char y) unsigned int bitmap_plot::$0 number bitmap_plot::$1 char bitmap_plot::$2 char *bitmap_plot::plotter char *bitmap_plot::plotter#0 char *bitmap_plot::plotter#1 unsigned int bitmap_plot::x unsigned int bitmap_plot::x#0 unsigned int bitmap_plot::x#1 unsigned int bitmap_plot::x#2 unsigned int bitmap_plot::x#3 unsigned int bitmap_plot::x#4 char bitmap_plot::y char bitmap_plot::y#0 char bitmap_plot::y#1 char bitmap_plot::y#2 char bitmap_plot::y#3 char bitmap_plot::y#4 __constant const char bitmap_plot_bit[$100] = { fill( $100, 0) } __constant const char bitmap_plot_yhi[$100] = { fill( $100, 0) } __constant const char bitmap_plot_ylo[$100] = { fill( $100, 0) } char *bitmap_screen char *bitmap_screen#0 char *bitmap_screen#1 char *bitmap_screen#10 char *bitmap_screen#11 char *bitmap_screen#12 char *bitmap_screen#13 char *bitmap_screen#14 char *bitmap_screen#15 char *bitmap_screen#16 char *bitmap_screen#17 char *bitmap_screen#18 char *bitmap_screen#19 char *bitmap_screen#2 char *bitmap_screen#20 char *bitmap_screen#21 char *bitmap_screen#22 char *bitmap_screen#23 char *bitmap_screen#24 char *bitmap_screen#25 char *bitmap_screen#26 char *bitmap_screen#27 char *bitmap_screen#28 char *bitmap_screen#29 char *bitmap_screen#3 char *bitmap_screen#30 char *bitmap_screen#4 char *bitmap_screen#5 char *bitmap_screen#6 char *bitmap_screen#7 char *bitmap_screen#8 char *bitmap_screen#9 void main() char *main::$12 unsigned int main::$13 unsigned int main::$14 char main::$2 bool main::$3 number main::$4 number main::$5 number main::$6 number main::$7 char main::a char main::a#0 char main::a#1 char main::a#2 char main::a#3 char main::a#4 char main::i char main::i#0 char main::i#1 char main::i#2 char main::i#3 char main::i#4 number main::toD0181_$0 number main::toD0181_$1 char main::toD0181_$2 char main::toD0181_$3 number main::toD0181_$4 number main::toD0181_$5 number main::toD0181_$6 unsigned int main::toD0181_$7 char *main::toD0181_gfx char *main::toD0181_gfx#0 char *main::toD0181_gfx#1 char main::toD0181_return char main::toD0181_return#0 char main::toD0181_return#1 char main::toD0181_return#2 char main::toD0181_return#3 char *main::toD0181_screen char *main::toD0181_screen#0 char *main::toD0181_screen#1 void * memset(void *str , char c , unsigned int num) bool memset::$0 bool memset::$1 bool memset::$3 char *memset::$4 char memset::c char memset::c#0 char memset::c#1 char memset::c#2 char memset::c#3 char memset::c#4 char memset::c#5 char *memset::dst char *memset::dst#0 char *memset::dst#1 char *memset::dst#2 char *memset::dst#3 char *memset::end char *memset::end#0 char *memset::end#1 char *memset::end#2 unsigned int memset::num unsigned int memset::num#0 unsigned int memset::num#1 unsigned int memset::num#2 unsigned int memset::num#3 void *memset::return void *memset::return#0 void *memset::return#1 void *memset::return#2 void *memset::return#3 void *memset::return#4 void *memset::str void *memset::str#0 void *memset::str#1 void *memset::str#2 void *memset::str#3 void *memset::str#4 void *memset::str#5 void *memset::str#6 unsigned int sgn_u16(unsigned int w) char sgn_u16::$0 number sgn_u16::$1 bool sgn_u16::$2 unsigned int sgn_u16::return unsigned int sgn_u16::return#0 unsigned int sgn_u16::return#1 unsigned int sgn_u16::return#2 unsigned int sgn_u16::return#3 unsigned int sgn_u16::return#4 unsigned int sgn_u16::return#5 unsigned int sgn_u16::return#6 unsigned int sgn_u16::return#7 unsigned int sgn_u16::w unsigned int sgn_u16::w#0 unsigned int sgn_u16::w#1 unsigned int sgn_u16::w#2 Adding number conversion cast (unumber) $40 in Adding number conversion cast (unumber) 1 in bitmap_init::bits#1 = bitmap_init::bits#3 >> 1 Adding number conversion cast (unumber) 0 in bitmap_init::$0 = bitmap_init::bits#1 == 0 Adding number conversion cast (unumber) $80 in bitmap_init::bits#2 = $80 Adding number conversion cast (unumber) 7 in bitmap_init::$3 = bitmap_init::y#2 & 7 Adding number conversion cast (unumber) bitmap_init::$3 in bitmap_init::$3 = bitmap_init::y#2 & (unumber)7 Adding number conversion cast (unumber) bitmap_init::$5 in bitmap_init::$5 = bitmap_init::$3 | bitmap_init::$4 Adding number conversion cast (unumber) 7 in bitmap_init::$7 = bitmap_init::y#2 & 7 Adding number conversion cast (unumber) bitmap_init::$7 in bitmap_init::$7 = bitmap_init::y#2 & (unumber)7 Adding number conversion cast (unumber) 7 in bitmap_init::$8 = bitmap_init::$7 == 7 Adding number conversion cast (unumber) $28*8 in bitmap_init::$10 = bitmap_init::yoffs#3 + $28*8 Adding number conversion cast (unumber) $10 in bitmap_clear::$0 = bitmap_clear::fgcol#1 * $10 Adding number conversion cast (unumber) bitmap_clear::$0 in bitmap_clear::$0 = bitmap_clear::fgcol#1 * (unumber)$10 Adding number conversion cast (unumber) 0 in memset::c#1 = 0 Adding number conversion cast (unumber) $fff8 in bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 Adding number conversion cast (unumber) bitmap_plot::$1 in bitmap_plot::$1 = bitmap_plot::x#4 & (unumber)$fff8 Adding number conversion cast (unumber) 0 in bitmap_line::$4 = bitmap_line::dx#1 == 0 Adding number conversion cast (unumber) 0 in bitmap_line::$5 = bitmap_line::dy#0 == 0 Adding number conversion cast (unumber) 2 in bitmap_line::e1#0 = bitmap_line::dy#2 / 2 Adding number conversion cast (unumber) 2 in bitmap_line::e#0 = bitmap_line::dx#3 / 2 Adding number conversion cast (unumber) 0 in memset::$0 = memset::num#2 > 0 Adding number conversion cast (unumber) $80 in abs_u16::$1 = abs_u16::$0 & $80 Adding number conversion cast (unumber) abs_u16::$1 in abs_u16::$1 = abs_u16::$0 & (unumber)$80 Adding number conversion cast (unumber) 0 in abs_u16::$3 = 0 != abs_u16::$1 Adding number conversion cast (unumber) $80 in sgn_u16::$1 = sgn_u16::$0 & $80 Adding number conversion cast (unumber) sgn_u16::$1 in sgn_u16::$1 = sgn_u16::$0 & (unumber)$80 Adding number conversion cast (unumber) 0 in sgn_u16::$2 = 0 != sgn_u16::$1 Adding number conversion cast (unumber) -1 in sgn_u16::return#2 = -1 Adding number conversion cast (unumber) 1 in sgn_u16::return#3 = 1 Adding number conversion cast (unumber) VICII_BMM|VICII_DEN|VICII_RSEL|3 in *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 Adding number conversion cast (unumber) 3 in *D011 = ((unumber)) VICII_BMM|VICII_DEN|VICII_RSEL|3 Adding number conversion cast (unumber) $3fff in main::toD0181_$0 = main::toD0181_$7 & $3fff Adding number conversion cast (unumber) main::toD0181_$0 in main::toD0181_$0 = main::toD0181_$7 & (unumber)$3fff Adding number conversion cast (unumber) 4 in main::toD0181_$1 = main::toD0181_$0 * 4 Adding number conversion cast (unumber) main::toD0181_$1 in main::toD0181_$1 = main::toD0181_$0 * (unumber)4 Adding number conversion cast (unumber) 4 in main::toD0181_$4 = main::toD0181_$3 / 4 Adding number conversion cast (unumber) main::toD0181_$4 in main::toD0181_$4 = main::toD0181_$3 / (unumber)4 Adding number conversion cast (unumber) $f in main::toD0181_$5 = main::toD0181_$4 & $f Adding number conversion cast (unumber) main::toD0181_$5 in main::toD0181_$5 = main::toD0181_$4 & (unumber)$f Adding number conversion cast (unumber) main::toD0181_$6 in main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5 Adding number conversion cast (unumber) 8 in main::$3 = main::i#2 != 8 Adding number conversion cast (unumber) $78 in main::$4 = main::$13 + $78 Adding number conversion cast (unumber) main::$4 in main::$4 = main::$13 + (unumber)$78 Adding number conversion cast (unumber) $20 in main::$5 = main::a#2 + $20 Adding number conversion cast (unumber) main::$5 in main::$5 = main::a#2 + (unumber)$20 Adding number conversion cast (unumber) $78 in main::$6 = main::$14 + $78 Adding number conversion cast (unumber) main::$6 in main::$6 = main::$14 + (unumber)$78 Adding number conversion cast (unumber) $20 in main::$7 = main::a#2 + $20 Adding number conversion cast (unumber) main::$7 in main::$7 = main::a#2 + (unumber)$20 Adding number conversion cast (unumber) $20 in main::a#1 = main::a#3 + $20 Adding number conversion cast (unumber) $3e7 in main::$12 = SCREEN + $3e7 Successful SSA optimization PassNAddNumberTypeConversions Inlining cast bitmap_init::bits#2 = (unumber)$80 Inlining cast memset::c#1 = (unumber)0 Inlining cast memset::dst#0 = (char *)memset::str#3 Inlining cast sgn_u16::return#2 = (unumber)-1 Inlining cast sgn_u16::return#3 = (unumber)1 Inlining cast *D011 = (unumber)VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3 Successful SSA optimization Pass2InlineCast Simplifying constant pointer cast (char *) 53265 Simplifying constant pointer cast (char *) 53272 Simplifying constant pointer cast (char *) 8192 Simplifying constant pointer cast (char *) 1024 Simplifying constant integer cast $40 Simplifying constant integer cast 1 Simplifying constant integer cast 0 Simplifying constant integer cast $80 Simplifying constant integer cast 7 Simplifying constant integer cast 7 Simplifying constant integer cast 7 Simplifying constant integer cast $10 Simplifying constant integer cast 0 Simplifying constant integer cast $fff8 Simplifying constant integer cast 0 Simplifying constant integer cast 0 Simplifying constant integer cast 2 Simplifying constant integer cast 2 Simplifying constant integer cast 0 Simplifying constant integer cast $80 Simplifying constant integer cast 0 Simplifying constant integer cast $80 Simplifying constant integer cast 0 Simplifying constant integer cast -1 Simplifying constant integer cast 1 Simplifying constant integer cast VICII_BMM|VICII_DEN|VICII_RSEL|(unumber)3 Simplifying constant integer cast 3 Simplifying constant integer cast $3fff Simplifying constant integer cast 4 Simplifying constant integer cast 4 Simplifying constant integer cast $f Simplifying constant integer cast 8 Simplifying constant integer cast $78 Simplifying constant integer cast $20 Simplifying constant integer cast $78 Simplifying constant integer cast $20 Simplifying constant integer cast $20 Simplifying constant integer cast $3e7 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (char) $40 Finalized unsigned number type (char) 1 Finalized unsigned number type (char) 0 Finalized unsigned number type (char) $80 Finalized unsigned number type (char) 7 Finalized unsigned number type (char) 7 Finalized unsigned number type (char) 7 Finalized unsigned number type (char) $10 Finalized unsigned number type (char) 0 Finalized unsigned number type (unsigned int) $fff8 Finalized unsigned number type (char) 0 Finalized unsigned number type (char) 0 Finalized unsigned number type (char) 2 Finalized unsigned number type (char) 2 Finalized unsigned number type (char) 0 Finalized unsigned number type (char) $80 Finalized unsigned number type (char) 0 Finalized unsigned number type (char) $80 Finalized unsigned number type (char) 0 Finalized unsigned number type (char) -1 Finalized unsigned number type (char) 1 Finalized unsigned number type (char) 3 Finalized unsigned number type (unsigned int) $3fff Finalized unsigned number type (char) 4 Finalized unsigned number type (char) 4 Finalized unsigned number type (char) $f Finalized unsigned number type (char) 8 Finalized unsigned number type (char) $78 Finalized unsigned number type (char) $20 Finalized unsigned number type (char) $78 Finalized unsigned number type (char) $20 Finalized unsigned number type (char) $20 Finalized unsigned number type (unsigned int) $3e7 Successful SSA optimization PassNFinalizeNumberTypeConversions Inferred type updated to char in bitmap_init::$3 = bitmap_init::y#2 & 7 Inferred type updated to char in bitmap_init::$5 = bitmap_init::$3 | bitmap_init::$4 Inferred type updated to char in bitmap_init::$7 = bitmap_init::y#2 & 7 Inferred type updated to char in bitmap_clear::$0 = bitmap_clear::fgcol#1 * $10 Inferred type updated to unsigned int in bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 Inferred type updated to char in abs_u16::$1 = abs_u16::$0 & $80 Inferred type updated to char in sgn_u16::$1 = sgn_u16::$0 & $80 Inferred type updated to unsigned int in main::toD0181_$0 = main::toD0181_$7 & $3fff Inferred type updated to unsigned int in main::toD0181_$1 = main::toD0181_$0 * 4 Inferred type updated to char in main::toD0181_$4 = main::toD0181_$3 / 4 Inferred type updated to char in main::toD0181_$5 = main::toD0181_$4 & $f Inferred type updated to char in main::toD0181_$6 = main::toD0181_$2 | main::toD0181_$5 Inferred type updated to unsigned int in main::$4 = main::$13 + $78 Inferred type updated to char in main::$5 = main::a#2 + $20 Inferred type updated to unsigned int in main::$6 = main::$14 + $78 Inferred type updated to char in main::$7 = main::a#2 + $20 Inversing boolean not [9] bitmap_init::$1 = bitmap_init::bits#1 != 0 from [8] bitmap_init::$0 = bitmap_init::bits#1 == 0 Inversing boolean not [29] bitmap_init::$9 = bitmap_init::$7 != 7 from [28] bitmap_init::$8 = bitmap_init::$7 == 7 Inversing boolean not [117] bitmap_line::$18 = bitmap_line::dy#3 >= bitmap_line::e#1 from [116] bitmap_line::$17 = bitmap_line::dy#3 < bitmap_line::e#1 Inversing boolean not [137] bitmap_line::$23 = bitmap_line::dx#5 >= bitmap_line::e1#1 from [136] bitmap_line::$22 = bitmap_line::dx#5 < bitmap_line::e1#1 Inversing boolean not [147] memset::$1 = memset::num#2 <= 0 from [146] memset::$0 = memset::num#2 > 0 Successful SSA optimization Pass2UnaryNotSimplification Alias bitmap_init::x#2 = bitmap_init::x#4 Alias bitmap_init::gfx#4 = bitmap_init::gfx#5 Alias bitmap_gfx#28 = bitmap_gfx#29 Alias bitmap_screen#27 = bitmap_screen#28 Alias bitmap_init::gfx#2 = bitmap_init::gfx#3 bitmap_init::yoffs#0 Alias bitmap_gfx#22 = bitmap_gfx#25 Alias bitmap_screen#21 = bitmap_screen#24 Alias bitmap_init::yoffs#2 = bitmap_init::yoffs#3 Alias bitmap_init::y#2 = bitmap_init::y#4 Alias bitmap_gfx#18 = bitmap_gfx#19 Alias bitmap_screen#17 = bitmap_screen#18 Alias bitmap_init::yoffs#1 = bitmap_init::$10 Alias bitmap_gfx#1 = bitmap_gfx#7 bitmap_gfx#13 Alias bitmap_screen#1 = bitmap_screen#7 bitmap_screen#13 Alias bitmap_gfx#14 = bitmap_gfx#8 Alias bitmap_line::x#0 = bitmap_line::x1#1 bitmap_line::x1#4 bitmap_line::x#16 bitmap_line::x1#3 bitmap_line::x#10 bitmap_line::x1#2 bitmap_line::x#19 bitmap_line::x#18 bitmap_line::x#17 bitmap_line::x#3 bitmap_line::x#14 bitmap_line::x#11 Alias bitmap_line::y#0 = bitmap_line::y1#1 bitmap_line::y1#2 bitmap_line::y#16 bitmap_line::y#10 bitmap_line::y1#5 bitmap_line::y1#4 bitmap_line::y#19 bitmap_line::y1#3 bitmap_line::y#18 bitmap_line::y#17 bitmap_line::y#3 bitmap_line::y#14 bitmap_line::y#11 Alias abs_u16::w#0 = bitmap_line::$0 Alias abs_u16::return#0 = abs_u16::return#5 Alias bitmap_line::y2#1 = bitmap_line::y2#4 bitmap_line::y2#8 bitmap_line::y2#5 bitmap_line::y2#2 bitmap_line::y2#11 bitmap_line::y2#10 Alias bitmap_line::x2#1 = bitmap_line::x2#7 bitmap_line::x2#4 bitmap_line::x2#2 bitmap_line::x2#11 bitmap_line::x2#10 bitmap_line::x2#9 Alias abs_u16::w#1 = bitmap_line::$2 Alias abs_u16::return#1 = abs_u16::return#6 Alias bitmap_line::dx#0 = bitmap_line::dx#1 bitmap_line::dx#10 bitmap_line::dx#7 bitmap_line::dx#2 bitmap_line::dx#13 bitmap_line::dx#3 Alias bitmap_line::dy#0 = bitmap_line::dy#9 bitmap_line::dy#6 bitmap_line::dy#1 bitmap_line::dy#2 bitmap_line::dy#10 Alias sgn_u16::w#0 = bitmap_line::$8 Alias sgn_u16::return#0 = sgn_u16::return#5 Alias sgn_u16::w#1 = bitmap_line::$10 Alias sgn_u16::return#1 = sgn_u16::return#6 Alias bitmap_line::sx#0 = bitmap_line::sx#8 bitmap_line::sx#7 bitmap_line::sx#9 Alias bitmap_line::sy#0 = bitmap_line::sy#10 bitmap_line::sy#5 Alias bitmap_line::y#4 = bitmap_line::y#5 Alias bitmap_line::sy#1 = bitmap_line::sy#3 bitmap_line::sy#8 Alias bitmap_line::e#3 = bitmap_line::e#5 Alias bitmap_line::dx#14 = bitmap_line::dx#4 bitmap_line::dx#8 Alias bitmap_line::dy#3 = bitmap_line::dy#7 bitmap_line::dy#4 Alias bitmap_line::y2#6 = bitmap_line::y2#9 bitmap_line::y2#7 Alias bitmap_line::x#13 = bitmap_line::x#4 bitmap_line::x#5 Alias bitmap_line::sx#1 = bitmap_line::sx#3 bitmap_line::sx#5 Alias bitmap_line::e#1 = bitmap_line::e#4 Alias bitmap_line::y#1 = bitmap_line::y#12 Alias bitmap_line::x#7 = bitmap_line::x#8 Alias bitmap_line::sx#11 = bitmap_line::sx#2 bitmap_line::sx#4 Alias bitmap_line::e1#3 = bitmap_line::e1#5 Alias bitmap_line::dy#13 = bitmap_line::dy#5 bitmap_line::dy#8 Alias bitmap_line::dx#5 = bitmap_line::dx#9 bitmap_line::dx#6 Alias bitmap_line::x2#5 = bitmap_line::x2#6 bitmap_line::x2#8 Alias bitmap_line::y#15 = bitmap_line::y#8 bitmap_line::y#9 Alias bitmap_line::sy#2 = bitmap_line::sy#4 bitmap_line::sy#7 Alias bitmap_line::e1#1 = bitmap_line::e1#4 Alias bitmap_line::x#15 = bitmap_line::x#2 Alias memset::return#2 = memset::str#2 memset::return#4 memset::return#3 Alias memset::str#3 = memset::str#4 Alias memset::num#2 = memset::num#3 Alias memset::c#4 = memset::c#5 Alias memset::c#2 = memset::c#3 Alias memset::dst#2 = memset::dst#3 Alias memset::end#1 = memset::end#2 Alias memset::str#5 = memset::str#6 Alias abs_u16::w#2 = abs_u16::w#3 abs_u16::w#4 abs_u16::return#3 Alias abs_u16::return#2 = abs_u16::$2 Alias abs_u16::return#4 = abs_u16::return#7 Alias sgn_u16::return#4 = sgn_u16::return#7 Alias bitmap_gfx#2 = bitmap_gfx#9 bitmap_gfx#31 bitmap_gfx#30 bitmap_gfx#26 bitmap_gfx#23 Alias bitmap_screen#2 = bitmap_screen#9 bitmap_screen#30 bitmap_screen#29 bitmap_screen#25 bitmap_screen#22 Alias main::toD0181_screen#0 = main::toD0181_screen#1 Alias main::toD0181_gfx#0 = main::toD0181_gfx#1 Alias main::toD0181_return#0 = main::toD0181_$6 main::toD0181_return#2 main::toD0181_return#1 main::toD0181_return#3 main::$2 Alias main::a#2 = main::a#4 main::a#3 Alias main::i#2 = main::i#4 main::i#3 Alias bitmap_gfx#20 = bitmap_gfx#27 bitmap_gfx#24 Alias bitmap_screen#19 = bitmap_screen#26 bitmap_screen#23 Alias bitmap_line::x1#0 = main::$4 Alias bitmap_line::x2#0 = main::$6 Alias bitmap_gfx#10 = bitmap_gfx#21 bitmap_gfx#16 bitmap_gfx#3 Alias bitmap_screen#10 = bitmap_screen#20 bitmap_screen#15 bitmap_screen#3 Alias bitmap_gfx#17 = bitmap_gfx#4 Alias bitmap_screen#16 = bitmap_screen#4 Alias bitmap_gfx#11 = bitmap_gfx#5 bitmap_gfx#12 bitmap_gfx#6 Alias bitmap_screen#11 = bitmap_screen#5 bitmap_screen#12 bitmap_screen#6 Successful SSA optimization Pass2AliasElimination Alias bitmap_init::x#2 = bitmap_init::x#3 Alias bitmap_init::gfx#2 = bitmap_init::gfx#4 Alias bitmap_gfx#22 = bitmap_gfx#28 Alias bitmap_screen#21 = bitmap_screen#27 Alias bitmap_init::y#2 = bitmap_init::y#3 Alias bitmap_gfx#1 = bitmap_gfx#18 Alias bitmap_screen#1 = bitmap_screen#17 Alias bitmap_line::y#1 = bitmap_line::y#6 Alias bitmap_line::y2#3 = bitmap_line::y2#6 Alias bitmap_line::sy#1 = bitmap_line::sy#6 Alias bitmap_line::dx#11 = bitmap_line::dx#14 Alias bitmap_line::dy#11 = bitmap_line::dy#3 Alias bitmap_line::sx#1 = bitmap_line::sx#10 Alias bitmap_line::x#15 = bitmap_line::x#9 Alias bitmap_line::x2#3 = bitmap_line::x2#5 Alias bitmap_line::sx#11 = bitmap_line::sx#6 Alias bitmap_line::dy#12 = bitmap_line::dy#13 Alias bitmap_line::dx#12 = bitmap_line::dx#5 Alias bitmap_line::sy#2 = bitmap_line::sy#9 Successful SSA optimization Pass2AliasElimination Identical Phi Values bitmap_init::gfx#1 bitmap_init::gfx#0 Identical Phi Values bitmap_init::screen#1 bitmap_init::screen#0 Identical Phi Values bitmap_init::gfx#2 bitmap_init::gfx#1 Identical Phi Values bitmap_gfx#22 bitmap_gfx#0 Identical Phi Values bitmap_screen#21 bitmap_screen#0 Identical Phi Values bitmap_gfx#1 bitmap_gfx#22 Identical Phi Values bitmap_screen#1 bitmap_screen#21 Identical Phi Values bitmap_clear::fgcol#1 bitmap_clear::fgcol#0 Identical Phi Values bitmap_clear::bgcol#1 bitmap_clear::bgcol#0 Identical Phi Values bitmap_screen#8 bitmap_screen#2 Identical Phi Values bitmap_gfx#14 bitmap_gfx#2 Identical Phi Values bitmap_line::x#0 bitmap_line::x1#0 Identical Phi Values bitmap_line::y#0 bitmap_line::y1#0 Identical Phi Values bitmap_line::x2#1 bitmap_line::x2#0 Identical Phi Values bitmap_line::y2#1 bitmap_line::y2#0 Identical Phi Values bitmap_line::sy#1 bitmap_line::sy#0 Identical Phi Values bitmap_line::dx#11 bitmap_line::dx#0 Identical Phi Values bitmap_line::dy#11 bitmap_line::dy#0 Identical Phi Values bitmap_line::y2#3 bitmap_line::y2#1 Identical Phi Values bitmap_line::sx#1 bitmap_line::sx#0 Identical Phi Values bitmap_line::sx#11 bitmap_line::sx#0 Identical Phi Values bitmap_line::dy#12 bitmap_line::dy#0 Identical Phi Values bitmap_line::dx#12 bitmap_line::dx#0 Identical Phi Values bitmap_line::x2#3 bitmap_line::x2#1 Identical Phi Values bitmap_line::sy#2 bitmap_line::sy#0 Identical Phi Values memset::end#1 memset::end#0 Identical Phi Values memset::str#5 memset::str#3 Identical Phi Values memset::c#2 memset::c#4 Identical Phi Values bitmap_gfx#15 bitmap_gfx#17 Identical Phi Values bitmap_screen#14 bitmap_screen#16 Identical Phi Values bitmap_gfx#2 bitmap_gfx#1 Identical Phi Values bitmap_screen#2 bitmap_screen#1 Identical Phi Values bitmap_gfx#20 bitmap_gfx#2 Identical Phi Values bitmap_screen#19 bitmap_screen#2 Identical Phi Values bitmap_gfx#10 bitmap_gfx#20 Identical Phi Values bitmap_screen#10 bitmap_screen#19 Identical Phi Values bitmap_gfx#11 bitmap_gfx#10 Identical Phi Values bitmap_screen#11 bitmap_screen#10 Successful SSA optimization Pass2IdenticalPhiElimination Identical Phi Values memset::return#2 memset::str#3 Successful SSA optimization Pass2IdenticalPhiElimination Identified duplicate assignment right side [27] bitmap_init::$7 = bitmap_init::y#2 & 7 Successful SSA optimization Pass2DuplicateRValueIdentification Simple Condition bitmap_init::$1 [9] if(bitmap_init::bits#1!=0) goto bitmap_init::@2 Simple Condition bitmap_init::$2 [13] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 Simple Condition bitmap_init::$9 [25] if(bitmap_init::$7!=7) goto bitmap_init::@6 Simple Condition bitmap_init::$11 [29] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 Simple Condition bitmap_line::$12 [77] if(bitmap_line::dx#0>bitmap_line::dy#0) goto bitmap_line::@2 Simple Condition bitmap_line::$18 [91] if(bitmap_line::dy#0>=bitmap_line::e#1) goto bitmap_line::@7 Simple Condition bitmap_line::$19 [94] if(bitmap_line::y#1!=bitmap_line::y2#0) goto bitmap_line::@6 Simple Condition bitmap_line::$23 [108] if(bitmap_line::dx#0>=bitmap_line::e1#1) goto bitmap_line::@10 Simple Condition bitmap_line::$24 [111] if(bitmap_line::x#15!=bitmap_line::x2#0) goto bitmap_line::@9 Simple Condition memset::$1 [116] if(memset::num#2<=0) goto memset::@1 Simple Condition memset::$3 [123] if(memset::dst#2!=memset::end#0) goto memset::@4 Simple Condition abs_u16::$3 [131] if(0!=abs_u16::$1) goto abs_u16::@1 Simple Condition sgn_u16::$2 [139] if(0!=sgn_u16::$1) goto sgn_u16::@1 Simple Condition main::$3 [168] if(main::i#2!=8) goto main::@2 Successful SSA optimization Pass2ConditionalJumpSimplification Rewriting ! if()-condition to reversed if() [66] bitmap_line::$7 = ! bitmap_line::$6 Rewriting && if()-condition to two if()s [65] bitmap_line::$6 = bitmap_line::$4 && bitmap_line::$5 Successful SSA optimization Pass2ConditionalAndOrRewriting Constant right-side identified [182] main::$12 = SCREEN + $3e7 Successful SSA optimization Pass2ConstantRValueConsolidation Constant bitmap_init::bits#0 = $80 Constant bitmap_init::x#0 = 0 Constant bitmap_init::bits#2 = $80 Constant bitmap_init::y#0 = 0 Constant memset::num#0 = $3e8 Constant memset::c#1 = 0 Constant memset::num#1 = $1f40 Constant sgn_u16::return#2 = -1 Constant sgn_u16::return#3 = 1 Constant bitmap_init::gfx#0 = BITMAP Constant bitmap_init::screen#0 = SCREEN Constant bitmap_clear::bgcol#0 = BLACK Constant bitmap_clear::fgcol#0 = WHITE Constant main::toD0181_screen#0 = SCREEN Constant main::toD0181_gfx#0 = BITMAP Constant main::i#0 = 0 Constant main::a#0 = 0 Constant main::$12 = SCREEN+$3e7 Constant bitmap_screen#16 = (char *) 0 Constant bitmap_gfx#17 = (char *) 0 Successful SSA optimization Pass2ConstantIdentification Constant bitmap_gfx#0 = bitmap_init::gfx#0 Constant bitmap_screen#0 = bitmap_init::screen#0 Constant main::toD0181_$7 = (unsigned int)main::toD0181_screen#0 Successful SSA optimization Pass2ConstantIdentification Constant memset::str#0 = (void *)bitmap_screen#0 Constant memset::str#1 = (void *)bitmap_gfx#0 Successful SSA optimization Pass2ConstantIdentification Constant value identified (unsigned int)main::toD0181_gfx#0 in [159] main::toD0181_$3 = byte1 (unsigned int)main::toD0181_gfx#0 Successful SSA optimization Pass2ConstantValues if() condition always true - replacing block destination [181] if(true) goto main::@4 Successful SSA optimization Pass2ConstantIfs Resolved ranged next value [11] bitmap_init::x#1 = ++ bitmap_init::x#2 to ++ Resolved ranged comparison value [13] if(bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1 to 0 Resolved ranged next value [27] bitmap_init::y#1 = ++ bitmap_init::y#2 to ++ Resolved ranged comparison value [29] if(bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@5 to 0 Simplifying expression containing zero bitmap_clear::$0 in [34] bitmap_clear::col#0 = bitmap_clear::$0 + bitmap_clear::bgcol#0 Successful SSA optimization PassNSimplifyExpressionWithZero Removing unused block main::@return Successful SSA optimization Pass2EliminateUnusedBlocks Eliminating unused variable memset::return#0 and assignment [25] memset::return#0 = memset::str#3 Eliminating unused variable memset::return#1 and assignment [27] memset::return#1 = memset::str#3 Eliminating unused constant bitmap_clear::bgcol#0 Eliminating unused constant bitmap_screen#16 Eliminating unused constant bitmap_gfx#17 Successful SSA optimization PassNEliminateUnusedVars Eliminating unused constant BLACK Successful SSA optimization PassNEliminateUnusedVars 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 [6] if(bitmap_init::x#1!=0) goto bitmap_init::@1 Adding number conversion cast (unumber) 0 in [18] if(bitmap_init::y#1!=0) goto bitmap_init::@5 Successful SSA optimization PassNAddNumberTypeConversions Simplifying constant integer cast 0 Simplifying constant integer cast 0 Successful SSA optimization PassNCastSimplification Finalized unsigned number type (char) 0 Finalized unsigned number type (char) 0 Successful SSA optimization PassNFinalizeNumberTypeConversions Alias bitmap_init::$7 = bitmap_init::$3 Alias bitmap_clear::col#0 = bitmap_clear::$0 Successful SSA optimization Pass2AliasElimination Simple Condition bitmap_line::$4 [43] if(bitmap_line::dx#0==0) goto bitmap_line::@20 Simple Condition bitmap_line::$5 [85] if(bitmap_line::dy#0==0) goto bitmap_line::@4 Successful SSA optimization Pass2ConditionalJumpSimplification Negating conditional jump and destination [43] if(bitmap_line::dx#0!=0) goto bitmap_line::@1 Successful SSA optimization Pass2ConditionalJumpSequenceImprovement Constant right-side identified [20] bitmap_clear::col#0 = bitmap_clear::fgcol#0 * $10 Constant right-side identified [112] main::toD0181_$0 = main::toD0181_$7 & $3fff Constant right-side identified [115] main::toD0181_$3 = byte1 (unsigned int)main::toD0181_gfx#0 Successful SSA optimization Pass2ConstantRValueConsolidation Constant bitmap_clear::col#0 = bitmap_clear::fgcol#0*$10 Constant main::toD0181_$0 = main::toD0181_$7&$3fff Constant main::toD0181_$3 = byte1 (unsigned int)main::toD0181_gfx#0 Successful SSA optimization Pass2ConstantIdentification Constant memset::c#0 = bitmap_clear::col#0 Successful SSA optimization Pass2ConstantIdentification Constant right-side identified [108] main::toD0181_$1 = main::toD0181_$0 * 4 Constant right-side identified [110] main::toD0181_$4 = main::toD0181_$3 / 4 Successful SSA optimization Pass2ConstantRValueConsolidation Constant main::toD0181_$1 = main::toD0181_$0*4 Constant main::toD0181_$4 = main::toD0181_$3/4 Successful SSA optimization Pass2ConstantIdentification Constant right-side identified [108] main::toD0181_$2 = byte1 main::toD0181_$1 Constant right-side identified [109] main::toD0181_$5 = main::toD0181_$4 & $f Successful SSA optimization Pass2ConstantRValueConsolidation Constant main::toD0181_$2 = byte1 main::toD0181_$1 Constant main::toD0181_$5 = main::toD0181_$4&$f Successful SSA optimization Pass2ConstantIdentification Constant right-side identified [108] main::toD0181_return#0 = main::toD0181_$2 | main::toD0181_$5 Successful SSA optimization Pass2ConstantRValueConsolidation Constant main::toD0181_return#0 = main::toD0181_$2|main::toD0181_$5 Successful SSA optimization Pass2ConstantIdentification Inlining Noop Cast [25] bitmap_plot::plotter#0 = (char *)bitmap_plot::$0 keeping bitmap_plot::plotter#0 Successful SSA optimization Pass2NopCastInlining Inlining Noop Cast [84] memset::$4 = (char *)memset::str#3 keeping memset::str#3 Inlining Noop Cast [86] memset::dst#0 = (char *)memset::str#3 keeping memset::str#3 Successful SSA optimization Pass2NopCastInlining Rewriting division to use shift [53] bitmap_line::e1#0 = bitmap_line::dy#0 / 2 Rewriting division to use shift [54] bitmap_line::e#0 = bitmap_line::dx#0 / 2 Successful SSA optimization Pass2MultiplyToShiftRewriting Inlining constant with var siblings bitmap_init::bits#0 Inlining constant with var siblings bitmap_init::x#0 Inlining constant with var siblings bitmap_init::bits#2 Inlining constant with var siblings bitmap_init::y#0 Inlining constant with var siblings memset::num#0 Inlining constant with var siblings memset::c#1 Inlining constant with var siblings memset::num#1 Inlining constant with var siblings memset::str#0 Inlining constant with var siblings memset::str#1 Inlining constant with var siblings memset::c#0 Inlining constant with var siblings sgn_u16::return#2 Inlining constant with var siblings sgn_u16::return#3 Inlining constant with var siblings main::i#0 Inlining constant with var siblings main::a#0 Constant inlined bitmap_init::screen#0 = SCREEN Constant inlined main::toD0181_screen#0 = SCREEN Constant inlined main::toD0181_gfx#0 = BITMAP Constant inlined bitmap_init::gfx#0 = BITMAP Constant inlined main::$12 = SCREEN+$3e7 Constant inlined memset::num#1 = $1f40 Constant inlined bitmap_init::bits#0 = $80 Constant inlined memset::num#0 = $3e8 Constant inlined bitmap_init::bits#2 = $80 Constant inlined main::a#0 = 0 Constant inlined sgn_u16::return#3 = 1 Constant inlined main::i#0 = 0 Constant inlined sgn_u16::return#2 = -1 Constant inlined memset::str#1 = (void *)BITMAP Constant inlined memset::str#0 = (void *)SCREEN Constant inlined main::toD0181_$7 = (unsigned int)SCREEN Constant inlined main::toD0181_$2 = byte1 (unsigned int)SCREEN&$3fff*4 Constant inlined main::toD0181_$1 = (unsigned int)SCREEN&$3fff*4 Constant inlined main::toD0181_$0 = (unsigned int)SCREEN&$3fff Constant inlined bitmap_clear::fgcol#0 = WHITE Constant inlined bitmap_gfx#0 = BITMAP Constant inlined main::toD0181_$5 = byte1 (unsigned int)BITMAP/4&$f Constant inlined main::toD0181_$4 = byte1 (unsigned int)BITMAP/4 Constant inlined main::toD0181_$3 = byte1 (unsigned int)BITMAP Constant inlined bitmap_screen#0 = SCREEN Constant inlined bitmap_init::y#0 = 0 Constant inlined memset::c#0 = bitmap_clear::col#0 Constant inlined bitmap_init::x#0 = 0 Constant inlined memset::c#1 = 0 Successful SSA optimization Pass2ConstantInlining Consolidated array index constant in assignment (COSTAB+$20)[main::$5] Consolidated array index constant in assignment (SINTAB+$20)[main::$7] Successful SSA optimization Pass2ConstantAdditionElimination Alias main::a#2 = main::$5 main::$7 Successful SSA optimization Pass2AliasElimination Finalized unsigned number type (unsigned int) $100 Finalized unsigned number type (unsigned int) $100 Finalized unsigned number type (unsigned int) $100 Finalized unsigned number type (unsigned int) $100 Finalized unsigned number type (unsigned int) $100 Finalized unsigned number type (unsigned int) $100 Finalized unsigned number type (char) 2 Finalized unsigned number type (char) 8 Finalized unsigned number type (char) $a Finalized unsigned number type (char) $10 Finalized unsigned number type (unsigned int) $180 Finalized unsigned number type (char) $28 Finalized unsigned number type (char) 8 Successful SSA optimization PassNFinalizeNumberTypeConversions 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_line::@21(between bitmap_line::@7 and bitmap_line::@6) Added new block during phi lifting bitmap_line::@22(between bitmap_line::@17 and bitmap_line::@7) Added new block during phi lifting bitmap_line::@23(between bitmap_line::@10 and bitmap_line::@3) Added new block during phi lifting bitmap_line::@24(between bitmap_line::@7 and bitmap_line::@3) Added new block during phi lifting bitmap_line::@25(between bitmap_line::@10 and bitmap_line::@9) Added new block during phi lifting bitmap_line::@26(between bitmap_line::@19 and bitmap_line::@10) Adding NOP phi() at start of main Adding NOP phi() at start of main::@6 Adding NOP phi() at start of main::toD0181 Adding NOP phi() at start of main::toD0181_@return Adding NOP phi() at start of main::@3 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 bitmap_clear Adding NOP phi() at start of bitmap_clear::@1 Adding NOP phi() at start of bitmap_clear::@2 Adding NOP phi() at start of bitmap_line::@18 Adding NOP phi() at start of bitmap_line::@16 Adding NOP phi() at start of memset::@1 Adding NOP phi() at start of sgn_u16::@2 Adding NOP phi() at start of sgn_u16::@1 CALL GRAPH Calls in [main] to bitmap_init:1 bitmap_clear:3 bitmap_line:18 Calls in [bitmap_clear] to memset:54 memset:56 Calls in [bitmap_line] to abs_u16:61 abs_u16:66 sgn_u16:73 sgn_u16:78 bitmap_plot:91 bitmap_plot:108 bitmap_plot:125 bitmap_plot:146 Created 30 initial phi equivalence classes Coalesced [21] main::i#5 = main::i#1 Coalesced [22] main::a#5 = main::a#1 Coalesced [42] bitmap_init::yoffs#7 = bitmap_init::yoffs#1 Coalesced [47] bitmap_init::y#5 = bitmap_init::y#1 Coalesced [48] bitmap_init::yoffs#5 = bitmap_init::yoffs#4 Coalesced (already) [49] bitmap_init::yoffs#6 = bitmap_init::yoffs#2 Coalesced [50] bitmap_init::bits#5 = bitmap_init::bits#4 Coalesced [51] bitmap_init::x#5 = bitmap_init::x#1 Coalesced [52] bitmap_init::bits#6 = bitmap_init::bits#1 Coalesced [60] abs_u16::w#5 = abs_u16::w#0 Coalesced [65] abs_u16::w#6 = abs_u16::w#1 Coalesced [72] sgn_u16::w#3 = sgn_u16::w#0 Coalesced [77] sgn_u16::w#4 = sgn_u16::w#1 Coalesced [83] bitmap_line::x#20 = bitmap_line::x1#0 Coalesced [84] bitmap_line::y#20 = bitmap_line::y1#0 Coalesced [85] bitmap_line::e#7 = bitmap_line::e#0 Coalesced [89] bitmap_plot::y#7 = bitmap_plot::y#1 Coalesced [90] bitmap_plot::x#7 = bitmap_plot::x#1 Coalesced [97] bitmap_line::x#23 = bitmap_line::x#1 Coalesced [98] bitmap_line::e#10 = bitmap_line::e#2 Coalesced [101] bitmap_line::x#25 = bitmap_line::x#12 Coalesced [102] bitmap_line::y#23 = bitmap_line::y#1 Coalesced [106] bitmap_plot::y#5 = bitmap_plot::y#2 Coalesced [107] bitmap_plot::x#5 = bitmap_plot::x#2 Coalesced [111] bitmap_line::x#21 = bitmap_line::x#12 Coalesced [112] bitmap_line::y#21 = bitmap_line::y#1 Coalesced [113] bitmap_line::e#8 = bitmap_line::e#6 Coalesced (already) [114] bitmap_line::x#22 = bitmap_line::x#13 Coalesced [115] bitmap_line::e#9 = bitmap_line::e#1 Coalesced [117] bitmap_line::x#27 = bitmap_line::x1#0 Coalesced [118] bitmap_line::y#25 = bitmap_line::y1#0 Coalesced [119] bitmap_line::e1#8 = bitmap_line::e1#0 Coalesced [123] bitmap_plot::y#8 = bitmap_plot::y#3 Coalesced [124] bitmap_plot::x#8 = bitmap_plot::x#3 Coalesced [131] bitmap_line::y#26 = bitmap_line::y#2 Coalesced [132] bitmap_line::e1#9 = bitmap_line::e1#2 Coalesced [135] bitmap_line::x#24 = bitmap_line::x#15 Coalesced [136] bitmap_line::y#22 = bitmap_line::y#13 Coalesced (already) [137] bitmap_line::x#26 = bitmap_line::x#15 Coalesced (already) [138] bitmap_line::y#24 = bitmap_line::y#13 Coalesced [139] bitmap_line::e1#7 = bitmap_line::e1#6 Coalesced (already) [140] bitmap_line::y#27 = bitmap_line::y#15 Coalesced [141] bitmap_line::e1#10 = bitmap_line::e1#1 Coalesced [144] bitmap_plot::y#6 = bitmap_plot::y#0 Coalesced [145] bitmap_plot::x#6 = bitmap_plot::x#0 Coalesced [158] memset::dst#5 = memset::dst#1 Coalesced [163] abs_u16::return#9 = abs_u16::w#2 Coalesced [167] abs_u16::return#8 = abs_u16::return#2 Coalesced down to 19 phi equivalence classes Culled Empty Block label main::toD0181_@return Culled Empty Block label main::@3 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::@2 Culled Empty Block label bitmap_line::@24 Culled Empty Block label bitmap_line::@18 Culled Empty Block label bitmap_line::@21 Culled Empty Block label bitmap_line::@22 Culled Empty Block label bitmap_line::@23 Culled Empty Block label bitmap_line::@25 Culled Empty Block label bitmap_line::@26 Culled Empty Block label bitmap_line::@16 Culled Empty Block label memset::@1 Culled Empty Block label abs_u16::@2 Culled Empty Block label sgn_u16::@2 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::@17 to bitmap_line::@16 Renumbering block bitmap_line::@19 to bitmap_line::@17 Renumbering block bitmap_line::@20 to bitmap_line::@18 Renumbering block memset::@2 to memset::@1 Renumbering block memset::@3 to memset::@2 Renumbering block memset::@4 to memset::@3 Renumbering block main::@4 to main::@3 Renumbering block main::@5 to main::@4 Renumbering block main::@6 to main::@5 Renumbering block main::@7 to main::@6 Renumbering block main::@8 to main::@7 Adding NOP phi() at start of main Adding NOP phi() at start of main::@5 Adding NOP phi() at start of main::toD0181 Adding NOP phi() at start of bitmap_init Adding NOP phi() at start of bitmap_init::@6 Adding NOP phi() at start of bitmap_clear Adding NOP phi() at start of bitmap_clear::@1 Adding NOP phi() at start of sgn_u16::@1 FINAL CONTROL FLOW GRAPH void main() main: scope:[main] from [0] phi() [1] call bitmap_init to:main::@5 main::@5: scope:[main] from main [2] phi() [3] call bitmap_clear to:main::@6 main::@6: scope:[main] from main::@5 [4] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 to:main::toD0181 main::toD0181: scope:[main] from main::@6 [5] phi() to:main::@4 main::@4: scope:[main] from main::toD0181 [6] *D018 = main::toD0181_return#0 to:main::@1 main::@1: scope:[main] from main::@4 main::@7 [7] main::a#2 = phi( main::@4/0, main::@7/main::a#1 ) [7] main::i#2 = phi( main::@4/0, main::@7/main::i#1 ) [8] if(main::i#2!=8) goto main::@2 to:main::@3 main::@3: scope:[main] from main::@1 main::@3 [9] *(SCREEN+$3e7) = ++ *(SCREEN+$3e7) to:main::@3 main::@2: scope:[main] from main::@1 [10] main::$13 = (unsigned int)COSTAB[main::a#2] [11] bitmap_line::x1#0 = main::$13 + $78 [12] main::$14 = (unsigned int)(COSTAB+$20)[main::a#2] [13] bitmap_line::x2#0 = main::$14 + $78 [14] bitmap_line::y1#0 = (unsigned int)SINTAB[main::a#2] [15] bitmap_line::y2#0 = (unsigned int)(SINTAB+$20)[main::a#2] [16] call bitmap_line to:main::@7 main::@7: scope:[main] from main::@2 [17] main::a#1 = main::a#2 + $20 [18] main::i#1 = ++ main::i#2 to:main::@1 void bitmap_init(char *gfx , char *screen) bitmap_init: scope:[bitmap_init] from main [19] phi() to:bitmap_init::@1 bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2 [20] bitmap_init::x#2 = phi( bitmap_init/0, bitmap_init::@2/bitmap_init::x#1 ) [20] bitmap_init::bits#3 = phi( bitmap_init/$80, bitmap_init::@2/bitmap_init::bits#4 ) [21] bitmap_plot_bit[bitmap_init::x#2] = bitmap_init::bits#3 [22] bitmap_init::bits#1 = bitmap_init::bits#3 >> 1 [23] if(bitmap_init::bits#1!=0) goto bitmap_init::@6 to:bitmap_init::@2 bitmap_init::@6: scope:[bitmap_init] from bitmap_init::@1 [24] phi() to:bitmap_init::@2 bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@6 [25] bitmap_init::bits#4 = phi( bitmap_init::@6/bitmap_init::bits#1, bitmap_init::@1/$80 ) [26] bitmap_init::x#1 = ++ bitmap_init::x#2 [27] if(bitmap_init::x#1!=0) goto bitmap_init::@1 to:bitmap_init::@3 bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4 [28] bitmap_init::yoffs#2 = phi( bitmap_init::@2/BITMAP, bitmap_init::@4/bitmap_init::yoffs#4 ) [28] bitmap_init::y#2 = phi( bitmap_init::@2/0, bitmap_init::@4/bitmap_init::y#1 ) [29] bitmap_init::$7 = bitmap_init::y#2 & 7 [30] bitmap_init::$4 = byte0 bitmap_init::yoffs#2 [31] bitmap_init::$5 = bitmap_init::$7 | bitmap_init::$4 [32] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$5 [33] bitmap_init::$6 = byte1 bitmap_init::yoffs#2 [34] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$6 [35] if(bitmap_init::$7!=7) goto bitmap_init::@4 to:bitmap_init::@5 bitmap_init::@5: scope:[bitmap_init] from bitmap_init::@3 [36] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (unsigned int)$28*8 to:bitmap_init::@4 bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@5 [37] bitmap_init::yoffs#4 = phi( bitmap_init::@3/bitmap_init::yoffs#2, bitmap_init::@5/bitmap_init::yoffs#1 ) [38] bitmap_init::y#1 = ++ bitmap_init::y#2 [39] if(bitmap_init::y#1!=0) goto bitmap_init::@3 to:bitmap_init::@return bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4 [40] return to:@return void bitmap_clear(char bgcol , char fgcol) bitmap_clear: scope:[bitmap_clear] from main::@5 [41] phi() [42] call memset to:bitmap_clear::@1 bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear [43] phi() [44] call memset to:bitmap_clear::@return bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@1 [45] return to:@return void bitmap_line(unsigned int x1 , unsigned int y1 , unsigned int x2 , unsigned int y2) bitmap_line: scope:[bitmap_line] from main::@2 [46] abs_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 [47] call abs_u16 [48] abs_u16::return#0 = abs_u16::return#4 to:bitmap_line::@12 bitmap_line::@12: scope:[bitmap_line] from bitmap_line [49] bitmap_line::dx#0 = abs_u16::return#0 [50] abs_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0 [51] call abs_u16 [52] abs_u16::return#1 = abs_u16::return#4 to:bitmap_line::@13 bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@12 [53] bitmap_line::dy#0 = abs_u16::return#1 [54] if(bitmap_line::dx#0!=0) goto bitmap_line::@1 to:bitmap_line::@18 bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@13 [55] if(bitmap_line::dy#0==0) goto bitmap_line::@4 to:bitmap_line::@1 bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@18 [56] sgn_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 [57] call sgn_u16 [58] sgn_u16::return#0 = sgn_u16::return#4 to:bitmap_line::@14 bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@1 [59] bitmap_line::sx#0 = sgn_u16::return#0 [60] sgn_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0 [61] call sgn_u16 [62] sgn_u16::return#1 = sgn_u16::return#4 to:bitmap_line::@15 bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@14 [63] bitmap_line::sy#0 = sgn_u16::return#1 [64] if(bitmap_line::dx#0>bitmap_line::dy#0) goto bitmap_line::@2 to:bitmap_line::@5 bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@15 [65] bitmap_line::e#0 = bitmap_line::dx#0 >> 1 to:bitmap_line::@6 bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5 bitmap_line::@7 [66] bitmap_line::e#3 = phi( bitmap_line::@5/bitmap_line::e#0, bitmap_line::@7/bitmap_line::e#6 ) [66] bitmap_line::y#4 = phi( bitmap_line::@5/bitmap_line::y1#0, bitmap_line::@7/bitmap_line::y#1 ) [66] bitmap_line::x#13 = phi( bitmap_line::@5/bitmap_line::x1#0, bitmap_line::@7/bitmap_line::x#12 ) [67] bitmap_plot::x#1 = bitmap_line::x#13 [68] bitmap_plot::y#1 = (char)bitmap_line::y#4 [69] call bitmap_plot to:bitmap_line::@16 bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@6 [70] bitmap_line::y#1 = bitmap_line::y#4 + bitmap_line::sy#0 [71] bitmap_line::e#1 = bitmap_line::e#3 + bitmap_line::dx#0 [72] if(bitmap_line::dy#0>=bitmap_line::e#1) goto bitmap_line::@7 to:bitmap_line::@8 bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@16 [73] bitmap_line::x#1 = bitmap_line::x#13 + bitmap_line::sx#0 [74] bitmap_line::e#2 = bitmap_line::e#1 - bitmap_line::dy#0 to:bitmap_line::@7 bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@16 bitmap_line::@8 [75] bitmap_line::e#6 = phi( bitmap_line::@16/bitmap_line::e#1, bitmap_line::@8/bitmap_line::e#2 ) [75] bitmap_line::x#12 = phi( bitmap_line::@16/bitmap_line::x#13, bitmap_line::@8/bitmap_line::x#1 ) [76] if(bitmap_line::y#1!=bitmap_line::y2#0) goto bitmap_line::@6 to:bitmap_line::@3 bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@7 [77] bitmap_line::y#7 = phi( bitmap_line::@10/bitmap_line::y#13, bitmap_line::@7/bitmap_line::y#1 ) [77] bitmap_line::x#6 = phi( bitmap_line::@10/bitmap_line::x#15, bitmap_line::@7/bitmap_line::x#12 ) [78] bitmap_plot::x#2 = bitmap_line::x#6 [79] bitmap_plot::y#2 = (char)bitmap_line::y#7 [80] call bitmap_plot to:bitmap_line::@return bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@3 bitmap_line::@4 [81] return to:@return bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@15 [82] bitmap_line::e1#0 = bitmap_line::dy#0 >> 1 to:bitmap_line::@9 bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@2 [83] bitmap_line::e1#3 = phi( bitmap_line::@10/bitmap_line::e1#6, bitmap_line::@2/bitmap_line::e1#0 ) [83] bitmap_line::y#15 = phi( bitmap_line::@10/bitmap_line::y#13, bitmap_line::@2/bitmap_line::y1#0 ) [83] bitmap_line::x#7 = phi( bitmap_line::@10/bitmap_line::x#15, bitmap_line::@2/bitmap_line::x1#0 ) [84] bitmap_plot::x#3 = bitmap_line::x#7 [85] bitmap_plot::y#3 = (char)bitmap_line::y#15 [86] call bitmap_plot to:bitmap_line::@17 bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@9 [87] bitmap_line::x#15 = bitmap_line::x#7 + bitmap_line::sx#0 [88] bitmap_line::e1#1 = bitmap_line::e1#3 + bitmap_line::dy#0 [89] if(bitmap_line::dx#0>=bitmap_line::e1#1) goto bitmap_line::@10 to:bitmap_line::@11 bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@17 [90] bitmap_line::y#2 = bitmap_line::y#15 + bitmap_line::sy#0 [91] bitmap_line::e1#2 = bitmap_line::e1#1 - bitmap_line::dx#0 to:bitmap_line::@10 bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@11 bitmap_line::@17 [92] bitmap_line::e1#6 = phi( bitmap_line::@11/bitmap_line::e1#2, bitmap_line::@17/bitmap_line::e1#1 ) [92] bitmap_line::y#13 = phi( bitmap_line::@11/bitmap_line::y#2, bitmap_line::@17/bitmap_line::y#15 ) [93] if(bitmap_line::x#15!=bitmap_line::x2#0) goto bitmap_line::@9 to:bitmap_line::@3 bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@18 [94] bitmap_plot::x#0 = bitmap_line::x1#0 [95] bitmap_plot::y#0 = (char)bitmap_line::y1#0 [96] call bitmap_plot to:bitmap_line::@return void * memset(void *str , char c , unsigned int num) memset: scope:[memset] from bitmap_clear bitmap_clear::@1 [97] memset::c#4 = phi( bitmap_clear/bitmap_clear::col#0, bitmap_clear::@1/0 ) [97] memset::str#3 = phi( bitmap_clear/(void *)SCREEN, bitmap_clear::@1/(void *)BITMAP ) [97] memset::num#2 = phi( bitmap_clear/$3e8, bitmap_clear::@1/$1f40 ) [98] if(memset::num#2<=0) goto memset::@return to:memset::@1 memset::@1: scope:[memset] from memset [99] memset::end#0 = (char *)memset::str#3 + memset::num#2 [100] memset::dst#4 = (char *)memset::str#3 to:memset::@2 memset::@2: scope:[memset] from memset::@1 memset::@3 [101] memset::dst#2 = phi( memset::@1/memset::dst#4, memset::@3/memset::dst#1 ) [102] if(memset::dst#2!=memset::end#0) goto memset::@3 to:memset::@return memset::@return: scope:[memset] from memset memset::@2 [103] return to:@return memset::@3: scope:[memset] from memset::@2 [104] *memset::dst#2 = memset::c#4 [105] memset::dst#1 = ++ memset::dst#2 to:memset::@2 unsigned int abs_u16(unsigned int w) abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@12 [106] abs_u16::w#2 = phi( bitmap_line/abs_u16::w#0, bitmap_line::@12/abs_u16::w#1 ) [107] abs_u16::$0 = byte1 abs_u16::w#2 [108] abs_u16::$1 = abs_u16::$0 & $80 [109] if(0!=abs_u16::$1) goto abs_u16::@1 to:abs_u16::@return abs_u16::@1: scope:[abs_u16] from abs_u16 [110] abs_u16::return#2 = - abs_u16::w#2 to:abs_u16::@return abs_u16::@return: scope:[abs_u16] from abs_u16 abs_u16::@1 [111] abs_u16::return#4 = phi( abs_u16::@1/abs_u16::return#2, abs_u16/abs_u16::w#2 ) [112] return to:@return unsigned int sgn_u16(unsigned int w) sgn_u16: scope:[sgn_u16] from bitmap_line::@1 bitmap_line::@14 [113] sgn_u16::w#2 = phi( bitmap_line::@1/sgn_u16::w#0, bitmap_line::@14/sgn_u16::w#1 ) [114] sgn_u16::$0 = byte1 sgn_u16::w#2 [115] sgn_u16::$1 = sgn_u16::$0 & $80 [116] if(0!=sgn_u16::$1) goto sgn_u16::@1 to:sgn_u16::@return sgn_u16::@1: scope:[sgn_u16] from sgn_u16 [117] phi() to:sgn_u16::@return sgn_u16::@return: scope:[sgn_u16] from sgn_u16 sgn_u16::@1 [118] sgn_u16::return#4 = phi( sgn_u16::@1/-1, sgn_u16/1 ) [119] return to:@return void bitmap_plot(unsigned int x , char y) bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9 [120] bitmap_plot::x#4 = phi( bitmap_line::@3/bitmap_plot::x#2, bitmap_line::@4/bitmap_plot::x#0, bitmap_line::@6/bitmap_plot::x#1, bitmap_line::@9/bitmap_plot::x#3 ) [120] bitmap_plot::y#4 = phi( bitmap_line::@3/bitmap_plot::y#2, bitmap_line::@4/bitmap_plot::y#0, bitmap_line::@6/bitmap_plot::y#1, bitmap_line::@9/bitmap_plot::y#3 ) [121] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] [122] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 [123] bitmap_plot::plotter#1 = (char *)bitmap_plot::plotter#0 + bitmap_plot::$1 [124] bitmap_plot::$2 = byte0 bitmap_plot::x#4 [125] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] to:bitmap_plot::@return bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot [126] return to:@return VARIABLE REGISTER WEIGHTS unsigned int abs_u16(unsigned int w) char abs_u16::$0 // 2002.0 char abs_u16::$1 // 2002.0 unsigned int abs_u16::return unsigned int abs_u16::return#0 // 202.0 unsigned int abs_u16::return#1 // 202.0 unsigned int abs_u16::return#2 // 2002.0 unsigned int abs_u16::return#4 // 551.0 unsigned int abs_u16::w unsigned int abs_u16::w#0 // 202.0 unsigned int abs_u16::w#1 // 202.0 unsigned int abs_u16::w#2 // 801.25 void bitmap_clear(char bgcol , char fgcol) char bitmap_clear::bgcol char bitmap_clear::col char bitmap_clear::fgcol char *bitmap_gfx void bitmap_init(char *gfx , char *screen) char bitmap_init::$4 // 202.0 char bitmap_init::$5 // 202.0 char bitmap_init::$6 // 202.0 char bitmap_init::$7 // 50.5 char bitmap_init::bits char bitmap_init::bits#1 // 101.0 char bitmap_init::bits#3 // 151.5 char bitmap_init::bits#4 // 67.33333333333333 char *bitmap_init::gfx char *bitmap_init::screen char bitmap_init::x char bitmap_init::x#1 // 151.5 char bitmap_init::x#2 // 50.5 char bitmap_init::y char bitmap_init::y#1 // 151.5 char bitmap_init::y#2 // 50.5 char *bitmap_init::yoffs char *bitmap_init::yoffs#1 // 202.0 char *bitmap_init::yoffs#2 // 63.125 char *bitmap_init::yoffs#4 // 101.0 void bitmap_line(unsigned int x1 , unsigned int y1 , unsigned int x2 , unsigned int y2) unsigned int bitmap_line::dx unsigned int bitmap_line::dx#0 // 760.175 unsigned int bitmap_line::dy unsigned int bitmap_line::dy#0 // 844.6388888888889 unsigned int bitmap_line::e unsigned int bitmap_line::e#0 // 202.0 unsigned int bitmap_line::e#1 // 13334.666666666666 unsigned int bitmap_line::e#2 // 20002.0 unsigned int bitmap_line::e#3 // 4020.6000000000004 unsigned int bitmap_line::e#6 // 15001.5 unsigned int bitmap_line::e1 unsigned int bitmap_line::e1#0 // 202.0 unsigned int bitmap_line::e1#1 // 13334.666666666666 unsigned int bitmap_line::e1#2 // 20002.0 unsigned int bitmap_line::e1#3 // 4020.6000000000004 unsigned int bitmap_line::e1#6 // 15001.5 unsigned int bitmap_line::sx unsigned int bitmap_line::sx#0 // 670.1 unsigned int bitmap_line::sy unsigned int bitmap_line::sy#0 // 773.1923076923076 unsigned int bitmap_line::x unsigned int bitmap_line::x#1 // 10001.0 unsigned int bitmap_line::x#12 // 20002.0 unsigned int bitmap_line::x#13 // 5729.285714285716 unsigned int bitmap_line::x#15 // 5714.857142857143 unsigned int bitmap_line::x#6 // 20103.0 unsigned int bitmap_line::x#7 // 7526.0 unsigned int bitmap_line::x1 unsigned int bitmap_line::x1#0 // 19.846153846153847 unsigned int bitmap_line::x2 unsigned int bitmap_line::x2#0 // 300.4117647058823 unsigned int bitmap_line::y unsigned int bitmap_line::y#1 // 5714.857142857143 unsigned int bitmap_line::y#13 // 20002.0 unsigned int bitmap_line::y#15 // 4300.571428571429 unsigned int bitmap_line::y#2 // 10001.0 unsigned int bitmap_line::y#4 // 5025.75 unsigned int bitmap_line::y#7 // 10001.0 unsigned int bitmap_line::y1 unsigned int bitmap_line::y1#0 // 17.291666666666664 unsigned int bitmap_line::y2 unsigned int bitmap_line::y2#0 // 319.1875 void bitmap_plot(unsigned int x , char y) unsigned int bitmap_plot::$1 // 200002.0 char bitmap_plot::$2 // 200002.0 char *bitmap_plot::plotter unsigned int bitmap_plot::plotter#0 // 50000.5 char *bitmap_plot::plotter#1 // 150001.5 unsigned int bitmap_plot::x unsigned int bitmap_plot::x#0 // 101.0 unsigned int bitmap_plot::x#1 // 10001.0 unsigned int bitmap_plot::x#2 // 101.0 unsigned int bitmap_plot::x#3 // 10001.0 unsigned int bitmap_plot::x#4 // 55051.5 char bitmap_plot::y char bitmap_plot::y#0 // 202.0 char bitmap_plot::y#1 // 20002.0 char bitmap_plot::y#2 // 202.0 char bitmap_plot::y#3 // 20002.0 char bitmap_plot::y#4 // 220206.0 char *bitmap_screen void main() unsigned int main::$13 // 22.0 unsigned int main::$14 // 22.0 char main::a char main::a#1 // 11.0 char main::a#2 // 2.4444444444444446 char main::i char main::i#1 // 22.0 char main::i#2 // 3.3000000000000003 char *main::toD0181_gfx char main::toD0181_return char *main::toD0181_screen void * memset(void *str , char c , unsigned int num) char memset::c char memset::c#4 // 125.125 char *memset::dst char *memset::dst#1 // 2002.0 char *memset::dst#2 // 1368.3333333333335 char *memset::dst#4 // 202.0 char *memset::end char *memset::end#0 // 183.66666666666669 unsigned int memset::num unsigned int memset::num#2 // 101.0 void *memset::return void *memset::str void *memset::str#3 unsigned int sgn_u16(unsigned int w) char sgn_u16::$0 // 2002.0 char sgn_u16::$1 // 2002.0 unsigned int sgn_u16::return unsigned int sgn_u16::return#0 // 202.0 unsigned int sgn_u16::return#1 // 202.0 unsigned int sgn_u16::return#4 // 50.5 unsigned int sgn_u16::w unsigned int sgn_u16::w#0 // 202.0 unsigned int sgn_u16::w#1 // 202.0 unsigned int sgn_u16::w#2 // 1203.0 Initial phi equivalence classes [ main::i#2 main::i#1 ] [ main::a#2 main::a#1 ] [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] [ bitmap_init::x#2 bitmap_init::x#1 ] [ bitmap_init::y#2 bitmap_init::y#1 ] [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] [ memset::num#2 ] [ memset::str#3 ] [ memset::c#4 ] [ memset::dst#2 memset::dst#4 memset::dst#1 ] [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] [ sgn_u16::return#4 ] [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] Added variable main::$13 to live range equivalence class [ main::$13 ] Added variable main::$14 to live range equivalence class [ main::$14 ] Added variable bitmap_line::x2#0 to live range equivalence class [ bitmap_line::x2#0 ] Added variable bitmap_line::y2#0 to live range equivalence class [ bitmap_line::y2#0 ] Added variable bitmap_init::$7 to live range equivalence class [ bitmap_init::$7 ] Added variable bitmap_init::$4 to live range equivalence class [ bitmap_init::$4 ] Added variable bitmap_init::$5 to live range equivalence class [ bitmap_init::$5 ] Added variable bitmap_init::$6 to live range equivalence class [ bitmap_init::$6 ] Added variable abs_u16::return#0 to live range equivalence class [ abs_u16::return#0 ] Added variable bitmap_line::dx#0 to live range equivalence class [ bitmap_line::dx#0 ] Added variable abs_u16::return#1 to live range equivalence class [ abs_u16::return#1 ] Added variable bitmap_line::dy#0 to live range equivalence class [ bitmap_line::dy#0 ] Added variable sgn_u16::return#0 to live range equivalence class [ sgn_u16::return#0 ] Added variable bitmap_line::sx#0 to live range equivalence class [ bitmap_line::sx#0 ] Added variable sgn_u16::return#1 to live range equivalence class [ sgn_u16::return#1 ] Added variable bitmap_line::sy#0 to live range equivalence class [ bitmap_line::sy#0 ] Added variable memset::end#0 to live range equivalence class [ memset::end#0 ] Added variable abs_u16::$0 to live range equivalence class [ abs_u16::$0 ] Added variable abs_u16::$1 to live range equivalence class [ abs_u16::$1 ] Added variable sgn_u16::$0 to live range equivalence class [ sgn_u16::$0 ] Added variable sgn_u16::$1 to live range equivalence class [ sgn_u16::$1 ] 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 ] Added variable bitmap_plot::plotter#1 to live range equivalence class [ bitmap_plot::plotter#1 ] Added variable bitmap_plot::$2 to live range equivalence class [ bitmap_plot::$2 ] Complete equivalence classes [ main::i#2 main::i#1 ] [ main::a#2 main::a#1 ] [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] [ bitmap_init::x#2 bitmap_init::x#1 ] [ bitmap_init::y#2 bitmap_init::y#1 ] [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] [ memset::num#2 ] [ memset::str#3 ] [ memset::c#4 ] [ memset::dst#2 memset::dst#4 memset::dst#1 ] [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] [ sgn_u16::return#4 ] [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] [ main::$13 ] [ main::$14 ] [ bitmap_line::x2#0 ] [ bitmap_line::y2#0 ] [ bitmap_init::$7 ] [ bitmap_init::$4 ] [ bitmap_init::$5 ] [ bitmap_init::$6 ] [ abs_u16::return#0 ] [ bitmap_line::dx#0 ] [ abs_u16::return#1 ] [ bitmap_line::dy#0 ] [ sgn_u16::return#0 ] [ bitmap_line::sx#0 ] [ sgn_u16::return#1 ] [ bitmap_line::sy#0 ] [ memset::end#0 ] [ abs_u16::$0 ] [ abs_u16::$1 ] [ sgn_u16::$0 ] [ sgn_u16::$1 ] [ bitmap_plot::plotter#0 ] [ bitmap_plot::$1 ] [ bitmap_plot::plotter#1 ] [ bitmap_plot::$2 ] Allocated zp[1]:2 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] Allocated zp[2]:3 [ bitmap_plot::$1 ] Allocated zp[1]:5 [ bitmap_plot::$2 ] Allocated zp[2]:6 [ bitmap_plot::plotter#1 ] Allocated zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] Allocated zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] Allocated zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] Allocated zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] Allocated zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] Allocated zp[2]:18 [ bitmap_plot::plotter#0 ] Allocated zp[2]:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] Allocated zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] Allocated zp[1]:24 [ abs_u16::$0 ] Allocated zp[1]:25 [ abs_u16::$1 ] Allocated zp[1]:26 [ sgn_u16::$0 ] Allocated zp[1]:27 [ sgn_u16::$1 ] Allocated zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] Allocated zp[2]:30 [ bitmap_line::dy#0 ] Allocated zp[2]:32 [ bitmap_line::sy#0 ] Allocated zp[2]:34 [ bitmap_line::dx#0 ] Allocated zp[2]:36 [ bitmap_line::sx#0 ] Allocated zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] Allocated zp[1]:40 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] Allocated zp[2]:41 [ bitmap_line::y2#0 ] Allocated zp[2]:43 [ bitmap_line::x2#0 ] Allocated zp[1]:45 [ bitmap_init::x#2 bitmap_init::x#1 ] Allocated zp[1]:46 [ bitmap_init::y#2 bitmap_init::y#1 ] Allocated zp[1]:47 [ bitmap_init::$4 ] Allocated zp[1]:48 [ bitmap_init::$5 ] Allocated zp[1]:49 [ bitmap_init::$6 ] Allocated zp[2]:50 [ abs_u16::return#0 ] Allocated zp[2]:52 [ abs_u16::return#1 ] Allocated zp[2]:54 [ sgn_u16::return#0 ] Allocated zp[2]:56 [ sgn_u16::return#1 ] Allocated zp[2]:58 [ memset::end#0 ] Allocated zp[1]:60 [ memset::c#4 ] Allocated zp[2]:61 [ memset::num#2 ] Allocated zp[2]:63 [ sgn_u16::return#4 ] Allocated zp[1]:65 [ bitmap_init::$7 ] Allocated zp[1]:66 [ main::i#2 main::i#1 ] Allocated zp[2]:67 [ main::$13 ] Allocated zp[2]:69 [ main::$14 ] Allocated zp[1]:71 [ main::a#2 main::a#1 ] Allocated zp[2]:72 [ memset::str#3 ] REGISTER UPLIFT POTENTIAL REGISTERS Statement [4] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a Statement [6] *D018 = main::toD0181_return#0 [ ] ( [ ] { } ) always clobbers reg byte a Statement [10] main::$13 = (unsigned int)COSTAB[main::a#2] [ main::i#2 main::a#2 main::$13 ] ( [ main::i#2 main::a#2 main::$13 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:66 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte a as potential for zp[1]:71 [ main::a#2 main::a#1 ] Statement [11] bitmap_line::x1#0 = main::$13 + $78 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 ] { } ) always clobbers reg byte a Statement [12] main::$14 = (unsigned int)(COSTAB+$20)[main::a#2] [ main::i#2 main::a#2 bitmap_line::x1#0 main::$14 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 main::$14 ] { } ) always clobbers reg byte a Statement [13] bitmap_line::x2#0 = main::$14 + $78 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 ] { } ) always clobbers reg byte a Statement [14] bitmap_line::y1#0 = (unsigned int)SINTAB[main::a#2] [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 ] { } ) always clobbers reg byte a Statement [15] bitmap_line::y2#0 = (unsigned int)(SINTAB+$20)[main::a#2] [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 ] { } ) always clobbers reg byte a Statement [17] main::a#1 = main::a#2 + $20 [ main::i#2 main::a#1 ] ( [ main::i#2 main::a#1 ] { } ) always clobbers reg byte a Statement [36] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (unsigned int)$28*8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( bitmap_init:1 [ 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]:46 [ bitmap_init::y#2 bitmap_init::y#1 ] Statement [46] abs_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::w#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::w#0 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [48] abs_u16::return#0 = abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::return#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::return#0 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [49] bitmap_line::dx#0 = abs_u16::return#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [50] abs_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [52] abs_u16::return#1 = abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [53] bitmap_line::dy#0 = abs_u16::return#1 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a Statement [54] if(bitmap_line::dx#0!=0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a Statement [55] if(bitmap_line::dy#0==0) goto bitmap_line::@4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a Statement [56] sgn_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a Statement [58] sgn_u16::return#0 = sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a Statement [59] bitmap_line::sx#0 = sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a Statement [60] sgn_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a Statement [62] sgn_u16::return#1 = sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a Statement [63] bitmap_line::sy#0 = sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { } ) always clobbers reg byte a Statement [64] if(bitmap_line::dx#0>bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { } ) always clobbers reg byte a Statement [65] bitmap_line::e#0 = bitmap_line::dx#0 >> 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { } ) always clobbers reg byte a Statement [67] bitmap_plot::x#1 = bitmap_line::x#13 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a Statement [70] bitmap_line::y#1 = bitmap_line::y#4 + bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { } ) always clobbers reg byte a Statement [71] bitmap_line::e#1 = bitmap_line::e#3 + bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { } ) always clobbers reg byte a Statement [72] if(bitmap_line::dy#0>=bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { } ) always clobbers reg byte a Statement [73] bitmap_line::x#1 = bitmap_line::x#13 + bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { } ) always clobbers reg byte a Statement [74] bitmap_line::e#2 = bitmap_line::e#1 - bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { } ) always clobbers reg byte a Statement [76] if(bitmap_line::y#1!=bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] { } ) always clobbers reg byte a Statement [78] bitmap_plot::x#2 = bitmap_line::x#6 [ bitmap_line::y#7 bitmap_plot::x#2 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y#7 bitmap_plot::x#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a Statement [82] bitmap_line::e1#0 = bitmap_line::dy#0 >> 1 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { } ) always clobbers reg byte a Statement [84] bitmap_plot::x#3 = bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a Statement [87] bitmap_line::x#15 = bitmap_line::x#7 + bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { } ) always clobbers reg byte a Statement [88] bitmap_line::e1#1 = bitmap_line::e1#3 + bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { } ) always clobbers reg byte a Statement [89] if(bitmap_line::dx#0>=bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { } ) always clobbers reg byte a Statement [90] bitmap_line::y#2 = bitmap_line::y#15 + bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { } ) always clobbers reg byte a Statement [91] bitmap_line::e1#2 = bitmap_line::e1#1 - bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { } ) always clobbers reg byte a Statement [93] if(bitmap_line::x#15!=bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] { } ) always clobbers reg byte a Statement [94] bitmap_plot::x#0 = bitmap_line::x1#0 [ bitmap_line::y1#0 bitmap_plot::x#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y1#0 bitmap_plot::x#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a Statement [98] if(memset::num#2<=0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( bitmap_clear:3::memset:42 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:3::memset:44 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp[1]:60 [ memset::c#4 ] Statement [99] memset::end#0 = (char *)memset::str#3 + memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( bitmap_clear:3::memset:42 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:3::memset:44 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a Statement [100] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( bitmap_clear:3::memset:42 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:3::memset:44 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a Statement [102] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:3::memset:42 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:3::memset:44 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a Statement [104] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:3::memset:42 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:3::memset:44 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:60 [ memset::c#4 ] Statement [110] abs_u16::return#2 = - abs_u16::w#2 [ abs_u16::return#2 ] ( bitmap_line:16::abs_u16:47 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::return#2 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } bitmap_line:16::abs_u16:51 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [121] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a Statement [122] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a Statement [123] bitmap_plot::plotter#1 = (char *)bitmap_plot::plotter#0 + bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a Statement [125] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] [ ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp[1]:66 [ main::i#2 main::i#1 ] Removing always clobbered register reg byte y as potential for zp[1]:71 [ main::a#2 main::a#1 ] Statement [4] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a Statement [6] *D018 = main::toD0181_return#0 [ ] ( [ ] { } ) always clobbers reg byte a Statement [10] main::$13 = (unsigned int)COSTAB[main::a#2] [ main::i#2 main::a#2 main::$13 ] ( [ main::i#2 main::a#2 main::$13 ] { } ) always clobbers reg byte a Statement [11] bitmap_line::x1#0 = main::$13 + $78 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 ] { } ) always clobbers reg byte a Statement [12] main::$14 = (unsigned int)(COSTAB+$20)[main::a#2] [ main::i#2 main::a#2 bitmap_line::x1#0 main::$14 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 main::$14 ] { } ) always clobbers reg byte a Statement [13] bitmap_line::x2#0 = main::$14 + $78 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 ] { } ) always clobbers reg byte a Statement [14] bitmap_line::y1#0 = (unsigned int)SINTAB[main::a#2] [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 ] { } ) always clobbers reg byte a Statement [15] bitmap_line::y2#0 = (unsigned int)(SINTAB+$20)[main::a#2] [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 ] { } ) always clobbers reg byte a Statement [17] main::a#1 = main::a#2 + $20 [ main::i#2 main::a#1 ] ( [ main::i#2 main::a#1 ] { } ) always clobbers reg byte a reg byte x Removing always clobbered register reg byte x as potential for zp[1]:66 [ main::i#2 main::i#1 ] Statement [29] bitmap_init::$7 = bitmap_init::y#2 & 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( bitmap_init:1 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] { } ) always clobbers reg byte a Statement [36] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (unsigned int)$28*8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( bitmap_init:1 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Statement [46] abs_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::w#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::w#0 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [48] abs_u16::return#0 = abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::return#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::return#0 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [49] bitmap_line::dx#0 = abs_u16::return#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [50] abs_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [52] abs_u16::return#1 = abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [53] bitmap_line::dy#0 = abs_u16::return#1 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a Statement [54] if(bitmap_line::dx#0!=0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a Statement [55] if(bitmap_line::dy#0==0) goto bitmap_line::@4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a Statement [56] sgn_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a Statement [58] sgn_u16::return#0 = sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a Statement [59] bitmap_line::sx#0 = sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a Statement [60] sgn_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a Statement [62] sgn_u16::return#1 = sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a Statement [63] bitmap_line::sy#0 = sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { } ) always clobbers reg byte a Statement [64] if(bitmap_line::dx#0>bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { } ) always clobbers reg byte a Statement [65] bitmap_line::e#0 = bitmap_line::dx#0 >> 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { } ) always clobbers reg byte a Statement [67] bitmap_plot::x#1 = bitmap_line::x#13 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a Statement [70] bitmap_line::y#1 = bitmap_line::y#4 + bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { } ) always clobbers reg byte a Statement [71] bitmap_line::e#1 = bitmap_line::e#3 + bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { } ) always clobbers reg byte a Statement [72] if(bitmap_line::dy#0>=bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { } ) always clobbers reg byte a Statement [73] bitmap_line::x#1 = bitmap_line::x#13 + bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { } ) always clobbers reg byte a Statement [74] bitmap_line::e#2 = bitmap_line::e#1 - bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { } ) always clobbers reg byte a Statement [76] if(bitmap_line::y#1!=bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] { } ) always clobbers reg byte a Statement [78] bitmap_plot::x#2 = bitmap_line::x#6 [ bitmap_line::y#7 bitmap_plot::x#2 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y#7 bitmap_plot::x#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a Statement [82] bitmap_line::e1#0 = bitmap_line::dy#0 >> 1 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { } ) always clobbers reg byte a Statement [84] bitmap_plot::x#3 = bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a Statement [87] bitmap_line::x#15 = bitmap_line::x#7 + bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { } ) always clobbers reg byte a Statement [88] bitmap_line::e1#1 = bitmap_line::e1#3 + bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { } ) always clobbers reg byte a Statement [89] if(bitmap_line::dx#0>=bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { } ) always clobbers reg byte a Statement [90] bitmap_line::y#2 = bitmap_line::y#15 + bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { } ) always clobbers reg byte a Statement [91] bitmap_line::e1#2 = bitmap_line::e1#1 - bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { } ) always clobbers reg byte a Statement [93] if(bitmap_line::x#15!=bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] { } ) always clobbers reg byte a Statement [94] bitmap_plot::x#0 = bitmap_line::x1#0 [ bitmap_line::y1#0 bitmap_plot::x#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y1#0 bitmap_plot::x#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a Statement [98] if(memset::num#2<=0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( bitmap_clear:3::memset:42 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:3::memset:44 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a Statement [99] memset::end#0 = (char *)memset::str#3 + memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( bitmap_clear:3::memset:42 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:3::memset:44 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a Statement [100] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( bitmap_clear:3::memset:42 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:3::memset:44 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a Statement [102] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:3::memset:42 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:3::memset:44 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a Statement [104] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:3::memset:42 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:3::memset:44 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Statement [110] abs_u16::return#2 = - abs_u16::w#2 [ abs_u16::return#2 ] ( bitmap_line:16::abs_u16:47 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::return#2 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } bitmap_line:16::abs_u16:51 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [121] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a Statement [122] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a Statement [123] bitmap_plot::plotter#1 = (char *)bitmap_plot::plotter#0 + bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a Statement [125] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] [ ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a reg byte y Statement [4] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a Statement [6] *D018 = main::toD0181_return#0 [ ] ( [ ] { } ) always clobbers reg byte a Statement [8] if(main::i#2!=8) goto main::@2 [ main::i#2 main::a#2 ] ( [ main::i#2 main::a#2 ] { } ) always clobbers reg byte a Statement [10] main::$13 = (unsigned int)COSTAB[main::a#2] [ main::i#2 main::a#2 main::$13 ] ( [ main::i#2 main::a#2 main::$13 ] { } ) always clobbers reg byte a Statement [11] bitmap_line::x1#0 = main::$13 + $78 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 ] { } ) always clobbers reg byte a Statement [12] main::$14 = (unsigned int)(COSTAB+$20)[main::a#2] [ main::i#2 main::a#2 bitmap_line::x1#0 main::$14 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 main::$14 ] { } ) always clobbers reg byte a Statement [13] bitmap_line::x2#0 = main::$14 + $78 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 ] { } ) always clobbers reg byte a Statement [14] bitmap_line::y1#0 = (unsigned int)SINTAB[main::a#2] [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 ] { } ) always clobbers reg byte a Statement [15] bitmap_line::y2#0 = (unsigned int)(SINTAB+$20)[main::a#2] [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 ] { } ) always clobbers reg byte a Statement [17] main::a#1 = main::a#2 + $20 [ main::i#2 main::a#1 ] ( [ main::i#2 main::a#1 ] { } ) always clobbers reg byte a reg byte x Statement [29] bitmap_init::$7 = bitmap_init::y#2 & 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( bitmap_init:1 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] { } ) always clobbers reg byte a Statement [36] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (unsigned int)$28*8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( bitmap_init:1 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a Statement [46] abs_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::w#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::w#0 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [48] abs_u16::return#0 = abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::return#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::return#0 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [49] bitmap_line::dx#0 = abs_u16::return#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [50] abs_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::w#1 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [52] abs_u16::return#1 = abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#1 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [53] bitmap_line::dy#0 = abs_u16::return#1 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a Statement [54] if(bitmap_line::dx#0!=0) goto bitmap_line::@1 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a Statement [55] if(bitmap_line::dy#0==0) goto bitmap_line::@4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 ] { } ) always clobbers reg byte a Statement [56] sgn_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::w#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a Statement [58] sgn_u16::return#0 = sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 sgn_u16::return#0 ] { { sgn_u16::w#0 = sgn_u16::w#2 } { sgn_u16::return#0 = sgn_u16::return#4 } } ) always clobbers reg byte a Statement [59] bitmap_line::sx#0 = sgn_u16::return#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a Statement [60] sgn_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::w#1 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a Statement [62] sgn_u16::return#1 = sgn_u16::return#4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 sgn_u16::return#1 ] { { sgn_u16::w#1 = sgn_u16::w#2 } { sgn_u16::return#1 = sgn_u16::return#4 } } ) always clobbers reg byte a Statement [63] bitmap_line::sy#0 = sgn_u16::return#1 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { } ) always clobbers reg byte a Statement [64] if(bitmap_line::dx#0>bitmap_line::dy#0) goto bitmap_line::@2 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 ] { } ) always clobbers reg byte a Statement [65] bitmap_line::e#0 = bitmap_line::dx#0 >> 1 [ bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e#0 ] { } ) always clobbers reg byte a Statement [67] bitmap_plot::x#1 = bitmap_line::x#13 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } ) always clobbers reg byte a Statement [70] bitmap_line::y#1 = bitmap_line::y#4 + bitmap_line::sy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::e#3 bitmap_line::y#1 ] { } ) always clobbers reg byte a Statement [71] bitmap_line::e#1 = bitmap_line::e#3 + bitmap_line::dx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { } ) always clobbers reg byte a Statement [72] if(bitmap_line::dy#0>=bitmap_line::e#1) goto bitmap_line::@7 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#1 bitmap_line::e#1 ] { } ) always clobbers reg byte a Statement [73] bitmap_line::x#1 = bitmap_line::x#13 + bitmap_line::sx#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::e#1 bitmap_line::x#1 ] { } ) always clobbers reg byte a Statement [74] bitmap_line::e#2 = bitmap_line::e#1 - bitmap_line::dy#0 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::y#1 bitmap_line::x#1 bitmap_line::e#2 ] { } ) always clobbers reg byte a Statement [76] if(bitmap_line::y#1!=bitmap_line::y2#0) goto bitmap_line::@6 [ bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#12 bitmap_line::y#1 bitmap_line::e#6 ] { } ) always clobbers reg byte a Statement [78] bitmap_plot::x#2 = bitmap_line::x#6 [ bitmap_line::y#7 bitmap_plot::x#2 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y#7 bitmap_plot::x#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } ) always clobbers reg byte a Statement [82] bitmap_line::e1#0 = bitmap_line::dy#0 >> 1 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::e1#0 ] { } ) always clobbers reg byte a Statement [84] bitmap_plot::x#3 = bitmap_line::x#7 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } ) always clobbers reg byte a Statement [87] bitmap_line::x#15 = bitmap_line::x#7 + bitmap_line::sx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#3 ] { } ) always clobbers reg byte a Statement [88] bitmap_line::e1#1 = bitmap_line::e1#3 + bitmap_line::dy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { } ) always clobbers reg byte a Statement [89] if(bitmap_line::dx#0>=bitmap_line::e1#1) goto bitmap_line::@10 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#15 bitmap_line::e1#1 ] { } ) always clobbers reg byte a Statement [90] bitmap_line::y#2 = bitmap_line::y#15 + bitmap_line::sy#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::e1#1 bitmap_line::y#2 ] { } ) always clobbers reg byte a Statement [91] bitmap_line::e1#2 = bitmap_line::e1#1 - bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { } ) always clobbers reg byte a Statement [93] if(bitmap_line::x#15!=bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] { } ) always clobbers reg byte a Statement [94] bitmap_plot::x#0 = bitmap_line::x1#0 [ bitmap_line::y1#0 bitmap_plot::x#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y1#0 bitmap_plot::x#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a Statement [98] if(memset::num#2<=0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( bitmap_clear:3::memset:42 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:3::memset:44 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a Statement [99] memset::end#0 = (char *)memset::str#3 + memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( bitmap_clear:3::memset:42 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:3::memset:44 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a Statement [100] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( bitmap_clear:3::memset:42 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:3::memset:44 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a Statement [102] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:3::memset:42 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:3::memset:44 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a Statement [104] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:3::memset:42 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:3::memset:44 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y Statement [110] abs_u16::return#2 = - abs_u16::w#2 [ abs_u16::return#2 ] ( bitmap_line:16::abs_u16:47 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::return#2 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } bitmap_line:16::abs_u16:51 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a Statement [121] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a Statement [122] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a Statement [123] bitmap_plot::plotter#1 = (char *)bitmap_plot::plotter#0 + bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a Statement [125] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] [ ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a reg byte y Potential registers zp[1]:66 [ main::i#2 main::i#1 ] : zp[1]:66 , Potential registers zp[1]:71 [ main::a#2 main::a#1 ] : zp[1]:71 , reg byte x , Potential registers zp[1]:40 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp[1]:40 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:45 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp[1]:45 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:46 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp[1]:46 , reg byte x , reg byte y , Potential registers zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp[2]:38 , Potential registers zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] : zp[2]:14 , Potential registers zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] : zp[2]:10 , Potential registers zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] : zp[2]:12 , Potential registers zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] : zp[2]:16 , Potential registers zp[2]:61 [ memset::num#2 ] : zp[2]:61 , Potential registers zp[2]:72 [ memset::str#3 ] : zp[2]:72 , Potential registers zp[1]:60 [ memset::c#4 ] : zp[1]:60 , reg byte x , Potential registers zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:22 , Potential registers zp[2]:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] : zp[2]:20 , Potential registers zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] : zp[2]:28 , Potential registers zp[2]:63 [ sgn_u16::return#4 ] : zp[2]:63 , Potential registers zp[1]:2 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] : zp[2]:8 , Potential registers zp[2]:67 [ main::$13 ] : zp[2]:67 , Potential registers zp[2]:69 [ main::$14 ] : zp[2]:69 , Potential registers zp[2]:43 [ bitmap_line::x2#0 ] : zp[2]:43 , Potential registers zp[2]:41 [ bitmap_line::y2#0 ] : zp[2]:41 , Potential registers zp[1]:65 [ bitmap_init::$7 ] : zp[1]:65 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:47 [ bitmap_init::$4 ] : zp[1]:47 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:48 [ bitmap_init::$5 ] : zp[1]:48 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:49 [ bitmap_init::$6 ] : zp[1]:49 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:50 [ abs_u16::return#0 ] : zp[2]:50 , Potential registers zp[2]:34 [ bitmap_line::dx#0 ] : zp[2]:34 , Potential registers zp[2]:52 [ abs_u16::return#1 ] : zp[2]:52 , Potential registers zp[2]:30 [ bitmap_line::dy#0 ] : zp[2]:30 , Potential registers zp[2]:54 [ sgn_u16::return#0 ] : zp[2]:54 , Potential registers zp[2]:36 [ bitmap_line::sx#0 ] : zp[2]:36 , Potential registers zp[2]:56 [ sgn_u16::return#1 ] : zp[2]:56 , Potential registers zp[2]:32 [ bitmap_line::sy#0 ] : zp[2]:32 , Potential registers zp[2]:58 [ memset::end#0 ] : zp[2]:58 , Potential registers zp[1]:24 [ abs_u16::$0 ] : zp[1]:24 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:25 [ abs_u16::$1 ] : zp[1]:25 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:26 [ sgn_u16::$0 ] : zp[1]:26 , reg byte a , reg byte x , reg byte y , Potential registers zp[1]:27 [ sgn_u16::$1 ] : zp[1]:27 , reg byte a , reg byte x , reg byte y , Potential registers zp[2]:18 [ bitmap_plot::plotter#0 ] : zp[2]:18 , Potential registers zp[2]:3 [ bitmap_plot::$1 ] : zp[2]:3 , Potential registers zp[2]:6 [ bitmap_plot::plotter#1 ] : zp[2]:6 , Potential registers zp[1]:5 [ bitmap_plot::$2 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y , REGISTER UPLIFT SCOPES Uplift Scope [bitmap_plot] 260,614: zp[1]:2 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] 200,002: zp[2]:3 [ bitmap_plot::$1 ] 200,002: zp[1]:5 [ bitmap_plot::$2 ] 150,001.5: zp[2]:6 [ bitmap_plot::plotter#1 ] 75,255.5: zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] 50,000.5: zp[2]:18 [ bitmap_plot::plotter#0 ] Uplift Scope [bitmap_line] 69,095.99: zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] 55,062.47: zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] 52,560.77: zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 52,560.77: zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 844.64: zp[2]:30 [ bitmap_line::dy#0 ] 773.19: zp[2]:32 [ bitmap_line::sy#0 ] 760.17: zp[2]:34 [ bitmap_line::dx#0 ] 670.1: zp[2]:36 [ bitmap_line::sx#0 ] 319.19: zp[2]:41 [ bitmap_line::y2#0 ] 300.41: zp[2]:43 [ bitmap_line::x2#0 ] Uplift Scope [abs_u16] 3,758.25: zp[2]:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] 2,002: zp[1]:24 [ abs_u16::$0 ] 2,002: zp[1]:25 [ abs_u16::$1 ] 202: zp[2]:50 [ abs_u16::return#0 ] 202: zp[2]:52 [ abs_u16::return#1 ] Uplift Scope [sgn_u16] 2,002: zp[1]:26 [ sgn_u16::$0 ] 2,002: zp[1]:27 [ sgn_u16::$1 ] 1,607: zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] 202: zp[2]:54 [ sgn_u16::return#0 ] 202: zp[2]:56 [ sgn_u16::return#1 ] 50.5: zp[2]:63 [ sgn_u16::return#4 ] Uplift Scope [memset] 3,572.33: zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 183.67: zp[2]:58 [ memset::end#0 ] 125.12: zp[1]:60 [ memset::c#4 ] 101: zp[2]:61 [ memset::num#2 ] 0: zp[2]:72 [ memset::str#3 ] Uplift Scope [bitmap_init] 366.12: zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 319.83: zp[1]:40 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 202: zp[1]:45 [ bitmap_init::x#2 bitmap_init::x#1 ] 202: zp[1]:46 [ bitmap_init::y#2 bitmap_init::y#1 ] 202: zp[1]:47 [ bitmap_init::$4 ] 202: zp[1]:48 [ bitmap_init::$5 ] 202: zp[1]:49 [ bitmap_init::$6 ] 50.5: zp[1]:65 [ bitmap_init::$7 ] Uplift Scope [main] 25.3: zp[1]:66 [ main::i#2 main::i#1 ] 22: zp[2]:67 [ main::$13 ] 22: zp[2]:69 [ main::$14 ] 13.44: zp[1]:71 [ main::a#2 main::a#1 ] Uplift Scope [MOS6526_CIA] Uplift Scope [MOS6569_VICII] Uplift Scope [MOS6581_SID] Uplift Scope [bitmap_clear] Uplift Scope [RADIX] Uplift Scope [] Uplifting [bitmap_plot] best 32982 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:3 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:6 [ bitmap_plot::plotter#1 ] zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] zp[2]:18 [ bitmap_plot::plotter#0 ] Uplifting [bitmap_line] best 32982 combination zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:30 [ bitmap_line::dy#0 ] zp[2]:32 [ bitmap_line::sy#0 ] zp[2]:34 [ bitmap_line::dx#0 ] zp[2]:36 [ bitmap_line::sx#0 ] zp[2]:41 [ bitmap_line::y2#0 ] zp[2]:43 [ bitmap_line::x2#0 ] Uplifting [abs_u16] best 32972 combination zp[2]:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:50 [ abs_u16::return#0 ] zp[2]:52 [ abs_u16::return#1 ] Uplifting [sgn_u16] best 32962 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp[2]:54 [ sgn_u16::return#0 ] zp[2]:56 [ sgn_u16::return#1 ] zp[2]:63 [ sgn_u16::return#4 ] Uplifting [memset] best 32946 combination zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:58 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:61 [ memset::num#2 ] zp[2]:72 [ memset::str#3 ] Uplifting [bitmap_init] best 32496 combination zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:48 [ bitmap_init::$5 ] zp[1]:49 [ bitmap_init::$6 ] zp[1]:65 [ bitmap_init::$7 ] Limited combination testing to 100 combinations of 12288 possible. Uplifting [main] best 32496 combination zp[1]:66 [ main::i#2 main::i#1 ] zp[2]:67 [ main::$13 ] zp[2]:69 [ main::$14 ] zp[1]:71 [ main::a#2 main::a#1 ] Uplifting [MOS6526_CIA] best 32496 combination Uplifting [MOS6569_VICII] best 32496 combination Uplifting [MOS6581_SID] best 32496 combination Uplifting [bitmap_clear] best 32496 combination Uplifting [RADIX] best 32496 combination Uplifting [] best 32496 combination Attempting to uplift remaining variables inzp[1]:48 [ bitmap_init::$5 ] Uplifting [bitmap_init] best 32436 combination reg byte a [ bitmap_init::$5 ] Attempting to uplift remaining variables inzp[1]:49 [ bitmap_init::$6 ] Uplifting [bitmap_init] best 32376 combination reg byte a [ bitmap_init::$6 ] Attempting to uplift remaining variables inzp[1]:65 [ bitmap_init::$7 ] Uplifting [bitmap_init] best 32376 combination zp[1]:65 [ bitmap_init::$7 ] Attempting to uplift remaining variables inzp[1]:66 [ main::i#2 main::i#1 ] Uplifting [main] best 32376 combination zp[1]:66 [ main::i#2 main::i#1 ] Attempting to uplift remaining variables inzp[1]:71 [ main::a#2 main::a#1 ] Uplifting [main] best 32376 combination zp[1]:71 [ main::a#2 main::a#1 ] Coalescing zero page register [ zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] ] - score: 4 Coalescing zero page register [ zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] ] with [ zp[2]:67 [ main::$13 ] ] - score: 1 Coalescing zero page register [ zp[2]:61 [ memset::num#2 ] ] with [ zp[2]:58 [ memset::end#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:72 [ memset::str#3 ] ] with [ zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] ] with [ zp[2]:50 [ abs_u16::return#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 ] ] with [ zp[2]:52 [ abs_u16::return#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:63 [ sgn_u16::return#4 ] ] with [ zp[2]:54 [ sgn_u16::return#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:63 [ sgn_u16::return#4 sgn_u16::return#0 ] ] with [ zp[2]:56 [ sgn_u16::return#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:69 [ main::$14 ] ] with [ zp[2]:43 [ bitmap_line::x2#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:18 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:6 [ bitmap_plot::plotter#1 ] ] - score: 1 Coalescing zero page register [ zp[2]:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 ] ] with [ zp[2]:30 [ bitmap_line::dy#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:63 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 ] ] with [ zp[2]:32 [ bitmap_line::sy#0 ] ] - score: 1 Coalescing zero page register [ zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] ] with [ zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] Coalescing zero page register [ zp[2]:61 [ memset::num#2 memset::end#0 ] ] with [ zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] ] Coalescing zero page register [ zp[2]:72 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] with [ zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] ] Coalescing zero page register [ zp[2]:18 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] ] Allocated (was zp[2]:18) zp[2]:2 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] Allocated (was zp[2]:3) zp[2]:4 [ bitmap_plot::$1 ] Allocated (was zp[2]:10) zp[2]:6 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 main::$13 ] Allocated (was zp[2]:72) zp[2]:8 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] Allocated (was zp[2]:61) zp[2]:10 [ memset::num#2 memset::end#0 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] Allocated (was zp[2]:14) zp[2]:12 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] Allocated (was zp[2]:20) zp[2]:14 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ] Allocated (was zp[2]:63) zp[2]:16 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ] Allocated (was zp[2]:34) zp[2]:18 [ bitmap_line::dx#0 ] Allocated (was zp[2]:36) zp[2]:20 [ bitmap_line::sx#0 ] Allocated (was zp[2]:69) zp[2]:22 [ main::$14 bitmap_line::x2#0 ] Allocated (was zp[2]:41) zp[2]:24 [ bitmap_line::y2#0 ] Allocated (was zp[1]:65) zp[1]:26 [ bitmap_init::$7 ] Allocated (was zp[1]:66) zp[1]:27 [ main::i#2 main::i#1 ] Allocated (was zp[1]:71) zp[1]:28 [ main::a#2 main::a#1 ] ASSEMBLER BEFORE OPTIMIZATION // File Comments // Tests the simple bitmap plotter // Plots a few lines using the bresenham line algorithm /// @file /// Commodore 64 Registers and Constants /// @file /// The MOS 6526 Complex Interface Adapter (CIA) /// /// http://archive.6502.org/datasheets/mos_6526_cia_recreated.pdf // Upstart // Commodore 64 PRG executable file .file [name="bitmap-plot-3.prg", type="prg", segments="Program"] .segmentdef Program [segments="Basic, Code, Data"] .segmentdef Basic [start=$0801] .segmentdef Code [start=$80d] .segmentdef Data [startAfter="Code"] .segment Basic :BasicUpstart(main) // Global Constants & labels /// $D011 Control Register #1 Bit#5: BMM Turn Bitmap Mode on/off .const VICII_BMM = $20 /// $D011 Control Register #1 Bit#4: DEN Switch VIC-II output on/off .const VICII_DEN = $10 /// $D011 Control Register #1 Bit#3: RSEL Switch betweem 25 or 24 visible rows /// RSEL| Display window height | First line | Last line /// ----+--------------------------+-------------+---------- /// 0 | 24 text lines/192 pixels | 55 ($37) | 246 ($f6) /// 1 | 25 text lines/200 pixels | 51 ($33) | 250 ($fa) .const VICII_RSEL = 8 .const WHITE = 1 /// $D011 Control Register #1 /// @see #VICII_CONTROL1 .label D011 = $d011 /// $D018 VIC-II base addresses // @see #VICII_MEMORY .label D018 = $d018 .label BITMAP = $2000 .label SCREEN = $400 .label COSTAB = SINTAB+$40 .segment Code // main main: { .const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f .label __13 = 6 .label __14 = $16 .label a = $1c .label i = $1b // [1] call bitmap_init // [19] phi from main to bitmap_init [phi:main->bitmap_init] bitmap_init_from_main: jsr bitmap_init // [2] phi from main to main::@5 [phi:main->main::@5] __b5_from_main: jmp __b5 // main::@5 __b5: // [3] call bitmap_clear // [41] phi from main::@5 to bitmap_clear [phi:main::@5->bitmap_clear] bitmap_clear_from___b5: jsr bitmap_clear jmp __b6 // main::@6 __b6: // [4] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2 lda #VICII_BMM|VICII_DEN|VICII_RSEL|3 sta D011 // [5] phi from main::@6 to main::toD0181 [phi:main::@6->main::toD0181] toD0181_from___b6: jmp toD0181 // main::toD0181 toD0181: jmp __b4 // main::@4 __b4: // [6] *D018 = main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 // [7] phi from main::@4 to main::@1 [phi:main::@4->main::@1] __b1_from___b4: // [7] phi main::a#2 = 0 [phi:main::@4->main::@1#0] -- vbuz1=vbuc1 lda #0 sta.z a // [7] phi main::i#2 = 0 [phi:main::@4->main::@1#1] -- vbuz1=vbuc1 lda #0 sta.z i jmp __b1 // main::@1 __b1: // [8] if(main::i#2!=8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp.z i bne __b2 jmp __b3 // main::@3 __b3: // [9] *(SCREEN+$3e7) = ++ *(SCREEN+$3e7) -- _deref_pbuc1=_inc__deref_pbuc1 inc SCREEN+$3e7 jmp __b3 // main::@2 __b2: // [10] main::$13 = (unsigned int)COSTAB[main::a#2] -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy.z a lda COSTAB,y sta.z __13 lda #0 sta.z __13+1 // [11] bitmap_line::x1#0 = main::$13 + $78 -- vwuz1=vwuz1_plus_vbuc1 lda #$78 clc adc.z bitmap_line.x1 sta.z bitmap_line.x1 bcc !+ inc.z bitmap_line.x1+1 !: // [12] main::$14 = (unsigned int)(COSTAB+$20)[main::a#2] -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy.z a lda COSTAB+$20,y sta.z __14 lda #0 sta.z __14+1 // [13] bitmap_line::x2#0 = main::$14 + $78 -- vwuz1=vwuz1_plus_vbuc1 lda #$78 clc adc.z bitmap_line.x2 sta.z bitmap_line.x2 bcc !+ inc.z bitmap_line.x2+1 !: // [14] bitmap_line::y1#0 = (unsigned int)SINTAB[main::a#2] -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy.z a lda SINTAB,y sta.z bitmap_line.y1 lda #0 sta.z bitmap_line.y1+1 // [15] bitmap_line::y2#0 = (unsigned int)(SINTAB+$20)[main::a#2] -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy.z a lda SINTAB+$20,y sta.z bitmap_line.y2 lda #0 sta.z bitmap_line.y2+1 // [16] call bitmap_line jsr bitmap_line jmp __b7 // main::@7 __b7: // [17] main::a#1 = main::a#2 + $20 -- vbuz1=vbuz1_plus_vbuc1 lax.z a axs #-[$20] stx.z a // [18] main::i#1 = ++ main::i#2 -- vbuz1=_inc_vbuz1 inc.z i // [7] phi from main::@7 to main::@1 [phi:main::@7->main::@1] __b1_from___b7: // [7] phi main::a#2 = main::a#1 [phi:main::@7->main::@1#0] -- register_copy // [7] phi main::i#2 = main::i#1 [phi:main::@7->main::@1#1] -- register_copy jmp __b1 } // bitmap_init // Initialize bitmap plotting tables // void bitmap_init(char *gfx, char *screen) bitmap_init: { .label __7 = $1a .label yoffs = $c // [20] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] __b1_from_bitmap_init: // [20] phi bitmap_init::x#2 = 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 ldx #0 // [20] phi bitmap_init::bits#3 = $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 lda #$80 jmp __b1 // [20] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] __b1_from___b2: // [20] phi bitmap_init::x#2 = bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy // [20] phi bitmap_init::bits#3 = bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy jmp __b1 // bitmap_init::@1 __b1: // [21] bitmap_plot_bit[bitmap_init::x#2] = bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_bit,x // [22] bitmap_init::bits#1 = bitmap_init::bits#3 >> 1 -- vbuaa=vbuaa_ror_1 lsr // [23] if(bitmap_init::bits#1!=0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 cmp #0 bne __b6_from___b1 // [25] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] __b2_from___b1: // [25] phi bitmap_init::bits#4 = $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 lda #$80 jmp __b2 // [24] 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: // [25] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] __b2_from___b6: // [25] phi bitmap_init::bits#4 = bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy jmp __b2 // bitmap_init::@2 __b2: // [26] bitmap_init::x#1 = ++ bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx // [27] if(bitmap_init::x#1!=0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne __b1_from___b2 // [28] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] __b3_from___b2: // [28] phi bitmap_init::yoffs#2 = BITMAP [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta.z yoffs+1 // [28] phi bitmap_init::y#2 = 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 jmp __b3 // [28] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] __b3_from___b4: // [28] phi bitmap_init::yoffs#2 = bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy // [28] phi bitmap_init::y#2 = bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy jmp __b3 // bitmap_init::@3 __b3: // [29] bitmap_init::$7 = bitmap_init::y#2 & 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 sax.z __7 // [30] bitmap_init::$4 = byte0 bitmap_init::yoffs#2 -- vbuaa=_byte0_pbuz1 lda.z yoffs // [31] bitmap_init::$5 = bitmap_init::$7 | bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora.z __7 // [32] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x // [33] bitmap_init::$6 = byte1 bitmap_init::yoffs#2 -- vbuaa=_byte1_pbuz1 lda.z yoffs+1 // [34] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x // [35] if(bitmap_init::$7!=7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda #7 cmp.z __7 bne __b4_from___b3 jmp __b5 // bitmap_init::@5 __b5: // [36] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (unsigned int)$28*8 -- pbuz1=pbuz1_plus_vwuc1 lda.z yoffs clc adc #<$28*8 sta.z yoffs lda.z yoffs+1 adc #>$28*8 sta.z yoffs+1 // [37] 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: // [37] phi bitmap_init::yoffs#4 = bitmap_init::yoffs#2 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4#0] -- register_copy jmp __b4 // bitmap_init::@4 __b4: // [38] bitmap_init::y#1 = ++ bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx // [39] if(bitmap_init::y#1!=0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne __b3_from___b4 jmp __breturn // bitmap_init::@return __breturn: // [40] return rts } // bitmap_clear // Clear all graphics on the bitmap // bgcol - the background color to fill the screen with // fgcol - the foreground color to fill the screen with // void bitmap_clear(char bgcol, char fgcol) bitmap_clear: { .const col = WHITE*$10 // [42] call memset // [97] phi from bitmap_clear to memset [phi:bitmap_clear->memset] memset_from_bitmap_clear: // [97] phi memset::c#4 = bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 ldx #col // [97] phi memset::str#3 = (void *)SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 lda #SCREEN sta.z memset.str+1 // [97] phi memset::num#2 = $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 lda #<$3e8 sta.z memset.num lda #>$3e8 sta.z memset.num+1 jsr memset // [43] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] __b1_from_bitmap_clear: jmp __b1 // bitmap_clear::@1 __b1: // [44] call memset // [97] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] memset_from___b1: // [97] phi memset::c#4 = 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 ldx #0 // [97] phi memset::str#3 = (void *)BITMAP [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 lda #BITMAP sta.z memset.str+1 // [97] phi memset::num#2 = $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 lda #<$1f40 sta.z memset.num lda #>$1f40 sta.z memset.num+1 jsr memset jmp __breturn // bitmap_clear::@return __breturn: // [45] return rts } // bitmap_line // Draw a line on the bitmap using bresenhams algorithm // void bitmap_line(__zp(6) unsigned int x1, __zp($a) unsigned int y1, __zp($16) unsigned int x2, __zp($18) unsigned int y2) bitmap_line: { .label dx = $12 .label dy = $e .label sx = $14 .label sy = $10 .label e1 = 8 .label e = $c .label y = $a .label x = 6 .label x1 = 6 .label y1 = $a .label x2 = $16 .label y2 = $18 // [46] abs_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z x2 sec sbc.z x1 sta.z abs_u16.w lda.z x2+1 sbc.z x1+1 sta.z abs_u16.w+1 // [47] call abs_u16 // [106] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] abs_u16_from_bitmap_line: // [106] phi abs_u16::w#2 = abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy jsr abs_u16 // [48] abs_u16::return#0 = abs_u16::return#4 jmp __b12 // bitmap_line::@12 __b12: // [49] bitmap_line::dx#0 = abs_u16::return#0 -- vwuz1=vwuz2 lda.z abs_u16.return sta.z dx lda.z abs_u16.return+1 sta.z dx+1 // [50] abs_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z y2 sec sbc.z y1 sta.z abs_u16.w lda.z y2+1 sbc.z y1+1 sta.z abs_u16.w+1 // [51] call abs_u16 // [106] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16] abs_u16_from___b12: // [106] phi abs_u16::w#2 = abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy jsr abs_u16 // [52] abs_u16::return#1 = abs_u16::return#4 jmp __b13 // bitmap_line::@13 __b13: // [53] bitmap_line::dy#0 = abs_u16::return#1 // [54] if(bitmap_line::dx#0!=0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 lda.z dx ora.z dx+1 bne __b1 jmp __b18 // bitmap_line::@18 __b18: // [55] if(bitmap_line::dy#0==0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 lda.z dy ora.z dy+1 beq __b4 jmp __b1 // bitmap_line::@1 __b1: // [56] sgn_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z x2 sec sbc.z x1 sta.z sgn_u16.w lda.z x2+1 sbc.z x1+1 sta.z sgn_u16.w+1 // [57] call sgn_u16 // [113] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16] sgn_u16_from___b1: // [113] phi sgn_u16::w#2 = sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy jsr sgn_u16 // [58] sgn_u16::return#0 = sgn_u16::return#4 jmp __b14 // bitmap_line::@14 __b14: // [59] bitmap_line::sx#0 = sgn_u16::return#0 -- vwuz1=vwuz2 lda.z sgn_u16.return sta.z sx lda.z sgn_u16.return+1 sta.z sx+1 // [60] sgn_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z y2 sec sbc.z y1 sta.z sgn_u16.w lda.z y2+1 sbc.z y1+1 sta.z sgn_u16.w+1 // [61] call sgn_u16 // [113] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16] sgn_u16_from___b14: // [113] phi sgn_u16::w#2 = sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy jsr sgn_u16 // [62] sgn_u16::return#1 = sgn_u16::return#4 jmp __b15 // bitmap_line::@15 __b15: // [63] bitmap_line::sy#0 = sgn_u16::return#1 // [64] if(bitmap_line::dx#0>bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 lda.z dy+1 cmp.z dx+1 bcc __b2 bne !+ lda.z dy cmp.z dx bcc __b2 !: jmp __b5 // bitmap_line::@5 __b5: // [65] bitmap_line::e#0 = bitmap_line::dx#0 >> 1 -- vwuz1=vwuz2_ror_1 // Y is the driver lda.z dx+1 lsr sta.z e+1 lda.z dx ror sta.z e // [66] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6] __b6_from___b5: __b6_from___b7: // [66] phi bitmap_line::e#3 = bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy // [66] phi bitmap_line::y#4 = bitmap_line::y1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy // [66] phi bitmap_line::x#13 = bitmap_line::x1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy jmp __b6 // bitmap_line::@6 __b6: // [67] bitmap_plot::x#1 = bitmap_line::x#13 // [68] bitmap_plot::y#1 = (char)bitmap_line::y#4 -- vbuxx=_byte_vwuz1 ldx.z y // [69] call bitmap_plot // [120] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot] bitmap_plot_from___b6: // [120] phi bitmap_plot::x#4 = bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy // [120] phi bitmap_plot::y#4 = bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b16 // bitmap_line::@16 __b16: // [70] bitmap_line::y#1 = bitmap_line::y#4 + bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 clc lda.z y adc.z sy sta.z y lda.z y+1 adc.z sy+1 sta.z y+1 // [71] bitmap_line::e#1 = bitmap_line::e#3 + bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 clc lda.z e adc.z dx sta.z e lda.z e+1 adc.z dx+1 sta.z e+1 // [72] if(bitmap_line::dy#0>=bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 lda.z e+1 cmp.z dy+1 bne !+ lda.z e cmp.z dy beq __b7_from___b16 !: bcc __b7_from___b16 jmp __b8 // bitmap_line::@8 __b8: // [73] bitmap_line::x#1 = bitmap_line::x#13 + bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 clc lda.z x adc.z sx sta.z x lda.z x+1 adc.z sx+1 sta.z x+1 // [74] bitmap_line::e#2 = bitmap_line::e#1 - bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 lda.z e sec sbc.z dy sta.z e lda.z e+1 sbc.z dy+1 sta.z e+1 // [75] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7] __b7_from___b16: __b7_from___b8: // [75] phi bitmap_line::e#6 = bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy // [75] phi bitmap_line::x#12 = bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy jmp __b7 // bitmap_line::@7 __b7: // [76] if(bitmap_line::y#1!=bitmap_line::y2#0) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 lda.z y+1 cmp.z y2+1 bne __b6_from___b7 lda.z y cmp.z y2 bne __b6_from___b7 // [77] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3] __b3_from___b10: __b3_from___b7: // [77] phi bitmap_line::y#7 = bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy // [77] phi bitmap_line::x#6 = bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy jmp __b3 // bitmap_line::@3 __b3: // [78] bitmap_plot::x#2 = bitmap_line::x#6 // [79] bitmap_plot::y#2 = (char)bitmap_line::y#7 -- vbuxx=_byte_vwuz1 ldx.z y // [80] call bitmap_plot // [120] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot] bitmap_plot_from___b3: // [120] phi bitmap_plot::x#4 = bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy // [120] phi bitmap_plot::y#4 = bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __breturn // bitmap_line::@return __breturn: // [81] return rts // bitmap_line::@2 __b2: // [82] bitmap_line::e1#0 = bitmap_line::dy#0 >> 1 -- vwuz1=vwuz2_ror_1 // X is the driver lda.z dy+1 lsr sta.z e1+1 lda.z dy ror sta.z e1 // [83] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9] __b9_from___b10: __b9_from___b2: // [83] phi bitmap_line::e1#3 = bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy // [83] phi bitmap_line::y#15 = bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy // [83] phi bitmap_line::x#7 = bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy jmp __b9 // bitmap_line::@9 __b9: // [84] bitmap_plot::x#3 = bitmap_line::x#7 // [85] bitmap_plot::y#3 = (char)bitmap_line::y#15 -- vbuxx=_byte_vwuz1 ldx.z y // [86] call bitmap_plot // [120] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot] bitmap_plot_from___b9: // [120] phi bitmap_plot::x#4 = bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy // [120] phi bitmap_plot::y#4 = bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __b17 // bitmap_line::@17 __b17: // [87] bitmap_line::x#15 = bitmap_line::x#7 + bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 clc lda.z x adc.z sx sta.z x lda.z x+1 adc.z sx+1 sta.z x+1 // [88] bitmap_line::e1#1 = bitmap_line::e1#3 + bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 clc lda.z e1 adc.z dy sta.z e1 lda.z e1+1 adc.z dy+1 sta.z e1+1 // [89] if(bitmap_line::dx#0>=bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 lda.z e1+1 cmp.z dx+1 bne !+ lda.z e1 cmp.z dx beq __b10_from___b17 !: bcc __b10_from___b17 jmp __b11 // bitmap_line::@11 __b11: // [90] bitmap_line::y#2 = bitmap_line::y#15 + bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 clc lda.z y adc.z sy sta.z y lda.z y+1 adc.z sy+1 sta.z y+1 // [91] bitmap_line::e1#2 = bitmap_line::e1#1 - bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 lda.z e1 sec sbc.z dx sta.z e1 lda.z e1+1 sbc.z dx+1 sta.z e1+1 // [92] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10] __b10_from___b11: __b10_from___b17: // [92] phi bitmap_line::e1#6 = bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy // [92] phi bitmap_line::y#13 = bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy jmp __b10 // bitmap_line::@10 __b10: // [93] if(bitmap_line::x#15!=bitmap_line::x2#0) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 lda.z x+1 cmp.z x2+1 bne __b9_from___b10 lda.z x cmp.z x2 bne __b9_from___b10 jmp __b3_from___b10 // bitmap_line::@4 __b4: // [94] bitmap_plot::x#0 = bitmap_line::x1#0 // [95] bitmap_plot::y#0 = (char)bitmap_line::y1#0 -- vbuxx=_byte_vwuz1 ldx.z y1 // [96] call bitmap_plot // [120] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] bitmap_plot_from___b4: // [120] phi bitmap_plot::x#4 = bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy // [120] phi bitmap_plot::y#4 = bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy jsr bitmap_plot jmp __breturn } // memset // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. // void * memset(__zp(8) void *str, __register(X) char c, __zp($a) unsigned int num) memset: { .label end = $a .label dst = 8 .label num = $a .label str = 8 // [98] if(memset::num#2<=0) goto memset::@return -- vwuz1_le_0_then_la1 lda.z num bne !+ lda.z num+1 beq __breturn !: jmp __b1 // memset::@1 __b1: // [99] memset::end#0 = (char *)memset::str#3 + memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 clc lda.z end adc.z str sta.z end lda.z end+1 adc.z str+1 sta.z end+1 // [100] memset::dst#4 = (char *)memset::str#3 // [101] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] __b2_from___b1: __b2_from___b3: // [101] phi memset::dst#2 = memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy jmp __b2 // memset::@2 __b2: // [102] if(memset::dst#2!=memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 lda.z dst+1 cmp.z end+1 bne __b3 lda.z dst cmp.z end bne __b3 jmp __breturn // memset::@return __breturn: // [103] return rts // memset::@3 __b3: // [104] *memset::dst#2 = memset::c#4 -- _deref_pbuz1=vbuxx txa ldy #0 sta (dst),y // [105] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 !: jmp __b2_from___b3 } // abs_u16 // Get the absolute value of a 16-bit unsigned number treated as a signed number. // __zp($e) unsigned int abs_u16(__zp($e) unsigned int w) abs_u16: { .label w = $e .label return = $e // [107] abs_u16::$0 = byte1 abs_u16::w#2 -- vbuaa=_byte1_vwuz1 lda.z w+1 // [108] abs_u16::$1 = abs_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 // [109] if(0!=abs_u16::$1) goto abs_u16::@1 -- 0_neq_vbuaa_then_la1 cmp #0 bne __b1 // [111] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] __breturn_from_abs_u16: __breturn_from___b1: // [111] phi abs_u16::return#4 = abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy jmp __breturn // abs_u16::@1 __b1: // [110] abs_u16::return#2 = - abs_u16::w#2 -- vwuz1=_neg_vwuz1 sec lda #0 sbc.z return sta.z return lda #0 sbc.z return+1 sta.z return+1 jmp __breturn_from___b1 // abs_u16::@return __breturn: // [112] return rts } // sgn_u16 // Get the sign of a 16-bit unsigned number treated as a signed number. // Returns unsigned -1 if the number is // __zp($10) unsigned int sgn_u16(__zp(2) unsigned int w) sgn_u16: { .label w = 2 .label return = $10 // [114] sgn_u16::$0 = byte1 sgn_u16::w#2 -- vbuaa=_byte1_vwuz1 lda.z w+1 // [115] sgn_u16::$1 = sgn_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 // [116] if(0!=sgn_u16::$1) goto sgn_u16::@1 -- 0_neq_vbuaa_then_la1 cmp #0 bne __b1_from_sgn_u16 // [118] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] __breturn_from_sgn_u16: // [118] phi sgn_u16::return#4 = 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<1 sta.z return lda #>1 sta.z return+1 jmp __breturn // [117] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] __b1_from_sgn_u16: jmp __b1 // sgn_u16::@1 __b1: // [118] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] __breturn_from___b1: // [118] phi sgn_u16::return#4 = -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<-1 sta.z return lda #>-1 sta.z return+1 jmp __breturn // sgn_u16::@return __breturn: // [119] return rts } // bitmap_plot // Plot a single dot in the bitmap // void bitmap_plot(__zp(6) unsigned int x, __register(X) char y) bitmap_plot: { .label __1 = 4 .label plotter = 2 .label x = 6 // [121] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_yhi,x sta.z plotter+1 lda bitmap_plot_ylo,x sta.z plotter // [122] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 -- vwuz1=vwuz2_band_vwuc1 lda.z x and #<$fff8 sta.z __1 lda.z x+1 and #>$fff8 sta.z __1+1 // [123] bitmap_plot::plotter#1 = (char *)bitmap_plot::plotter#0 + bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 clc lda.z plotter adc.z __1 sta.z plotter lda.z plotter+1 adc.z __1+1 sta.z plotter+1 // [124] bitmap_plot::$2 = byte0 bitmap_plot::x#4 -- vbuxx=_byte0_vwuz1 ldx.z x // [125] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx lda bitmap_plot_bit,x ldy #0 ora (plotter),y sta (plotter),y jmp __breturn // bitmap_plot::@return __breturn: // [126] return rts } // File Data .segment Data // Tables for the plotter - initialized by calling bitmap_init(); bitmap_plot_ylo: .fill $100, 0 bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 .align $100 SINTAB: .fill $180, 99.5+99.5*sin(i*2*PI/256) ASSEMBLER OPTIMIZATIONS Removing instruction jmp __b5 Removing instruction jmp __b6 Removing instruction jmp toD0181 Removing instruction jmp __b4 Removing instruction jmp __b1 Removing instruction jmp __b3 Removing instruction jmp __b7 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 __breturn Removing instruction jmp __b12 Removing instruction jmp __b13 Removing instruction jmp __b18 Removing instruction jmp __b1 Removing instruction jmp __b14 Removing instruction jmp __b15 Removing instruction jmp __b5 Removing instruction jmp __b6 Removing instruction jmp __b16 Removing instruction jmp __b8 Removing instruction jmp __b7 Removing instruction jmp __b3 Removing instruction jmp __breturn Removing instruction jmp __b9 Removing instruction jmp __b17 Removing instruction jmp __b11 Removing instruction jmp __b10 Removing instruction jmp __b1 Removing instruction jmp __b2 Removing instruction jmp __breturn Removing instruction jmp __b1 Removing instruction jmp __breturn Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 Removing instruction ldy.z a Removing instruction lda.z e+1 Removing instruction lda.z e1+1 Removing instruction lda #>-1 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 __b7_from___b16 with __b7 Replacing label __b7_from___b16 with __b7 Replacing label __b6_from___b7 with __b6 Replacing label __b6_from___b7 with __b6 Replacing label __b10_from___b17 with __b10 Replacing label __b10_from___b17 with __b10 Replacing label __b9_from___b10 with __b9 Replacing label __b9_from___b10 with __b9 Replacing label __b3_from___b10 with __b3 Replacing label __b2_from___b3 with __b2 Replacing label __b1_from_sgn_u16 with __b1 Removing instruction __b5_from_main: Removing instruction bitmap_clear_from___b5: Removing instruction toD0181_from___b6: Removing instruction toD0181: 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_bitmap_clear: Removing instruction memset_from___b1: Removing instruction __b6_from___b5: Removing instruction __b6_from___b7: Removing instruction __b7_from___b16: Removing instruction __b7_from___b8: Removing instruction __b3_from___b10: Removing instruction __b3_from___b7: Removing instruction __b9_from___b10: Removing instruction __b9_from___b2: Removing instruction __b10_from___b11: Removing instruction __b10_from___b17: Removing instruction __b2_from___b1: Removing instruction __b2_from___b3: Removing instruction __breturn_from_abs_u16: Removing instruction __b1_from_sgn_u16: Removing instruction __breturn_from___b1: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction bitmap_init_from_main: Removing instruction __b5: Removing instruction __b6: Removing instruction __b4: Removing instruction __b1_from___b4: Removing instruction __b7: Removing instruction __b1_from___b7: Removing instruction __b1_from_bitmap_init: Removing instruction __b2_from___b1: Removing instruction __b3_from___b2: Removing instruction __b5: Removing instruction __breturn: Removing instruction memset_from_bitmap_clear: Removing instruction __b1: Removing instruction __breturn: Removing instruction abs_u16_from_bitmap_line: Removing instruction __b12: Removing instruction abs_u16_from___b12: Removing instruction __b13: Removing instruction __b18: Removing instruction sgn_u16_from___b1: Removing instruction __b14: Removing instruction sgn_u16_from___b14: Removing instruction __b15: Removing instruction __b5: Removing instruction bitmap_plot_from___b6: Removing instruction __b16: Removing instruction __b8: Removing instruction bitmap_plot_from___b3: Removing instruction bitmap_plot_from___b9: Removing instruction __b17: Removing instruction __b11: Removing instruction bitmap_plot_from___b4: Removing instruction __b1: Removing instruction __breturn_from_sgn_u16: 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 Skipping double jump to __breturn in jmp __breturn_from___b1 Replacing jump to rts with rts in jmp __breturn Succesful ASM optimization Pass5DoubleJumpElimination Relabelling long label __breturn_from___b1 to __b2 Succesful ASM optimization Pass5RelabelLongLabels Removing instruction jmp __b1 Removing instruction jmp __b2 Removing instruction jmp __b3 Removing instruction jmp __breturn Succesful ASM optimization Pass5NextJumpElimination Removing instruction __breturn: Removing instruction __b2: Removing instruction __breturn: Removing instruction __breturn: Succesful ASM optimization Pass5UnusedLabelElimination Fixing long branch [214] beq __b4 to bne FINAL SYMBOL TABLE __constant char *BITMAP = (char *) 8192 __constant char *COSTAB = SINTAB+$40 __constant char * const D011 = (char *) 53265 __constant char * const D018 = (char *) 53272 __constant char RADIX::BINARY = 2 __constant char RADIX::DECIMAL = $a __constant char RADIX::HEXADECIMAL = $10 __constant char RADIX::OCTAL = 8 __constant char *SCREEN = (char *) 1024 __constant char SINTAB[$180] = kickasm {{ .fill $180, 99.5+99.5*sin(i*2*PI/256) }} __constant const char VICII_BMM = $20 __constant const char VICII_DEN = $10 __constant const char VICII_RSEL = 8 __constant const char WHITE = 1 unsigned int abs_u16(unsigned int w) char abs_u16::$0 // reg byte a 2002.0 char abs_u16::$1 // reg byte a 2002.0 unsigned int abs_u16::return unsigned int abs_u16::return#0 // return zp[2]:14 202.0 unsigned int abs_u16::return#1 // return zp[2]:14 202.0 unsigned int abs_u16::return#2 // return zp[2]:14 2002.0 unsigned int abs_u16::return#4 // return zp[2]:14 551.0 unsigned int abs_u16::w unsigned int abs_u16::w#0 // w zp[2]:14 202.0 unsigned int abs_u16::w#1 // w zp[2]:14 202.0 unsigned int abs_u16::w#2 // w zp[2]:14 801.25 void bitmap_clear(char bgcol , char fgcol) char bitmap_clear::bgcol char bitmap_clear::col __constant char bitmap_clear::col#0 = WHITE*$10 // col char bitmap_clear::fgcol char *bitmap_gfx void bitmap_init(char *gfx , char *screen) char bitmap_init::$4 // reg byte a 202.0 char bitmap_init::$5 // reg byte a 202.0 char bitmap_init::$6 // reg byte a 202.0 char bitmap_init::$7 // zp[1]:26 50.5 char bitmap_init::bits char bitmap_init::bits#1 // reg byte a 101.0 char bitmap_init::bits#3 // reg byte a 151.5 char bitmap_init::bits#4 // reg byte a 67.33333333333333 char *bitmap_init::gfx char *bitmap_init::screen char bitmap_init::x char bitmap_init::x#1 // reg byte x 151.5 char bitmap_init::x#2 // reg byte x 50.5 char bitmap_init::y char bitmap_init::y#1 // reg byte x 151.5 char bitmap_init::y#2 // reg byte x 50.5 char *bitmap_init::yoffs char *bitmap_init::yoffs#1 // yoffs zp[2]:12 202.0 char *bitmap_init::yoffs#2 // yoffs zp[2]:12 63.125 char *bitmap_init::yoffs#4 // yoffs zp[2]:12 101.0 void bitmap_line(unsigned int x1 , unsigned int y1 , unsigned int x2 , unsigned int y2) unsigned int bitmap_line::dx unsigned int bitmap_line::dx#0 // dx zp[2]:18 760.175 unsigned int bitmap_line::dy unsigned int bitmap_line::dy#0 // dy zp[2]:14 844.6388888888889 unsigned int bitmap_line::e unsigned int bitmap_line::e#0 // e zp[2]:12 202.0 unsigned int bitmap_line::e#1 // e zp[2]:12 13334.666666666666 unsigned int bitmap_line::e#2 // e zp[2]:12 20002.0 unsigned int bitmap_line::e#3 // e zp[2]:12 4020.6000000000004 unsigned int bitmap_line::e#6 // e zp[2]:12 15001.5 unsigned int bitmap_line::e1 unsigned int bitmap_line::e1#0 // e1 zp[2]:8 202.0 unsigned int bitmap_line::e1#1 // e1 zp[2]:8 13334.666666666666 unsigned int bitmap_line::e1#2 // e1 zp[2]:8 20002.0 unsigned int bitmap_line::e1#3 // e1 zp[2]:8 4020.6000000000004 unsigned int bitmap_line::e1#6 // e1 zp[2]:8 15001.5 unsigned int bitmap_line::sx unsigned int bitmap_line::sx#0 // sx zp[2]:20 670.1 unsigned int bitmap_line::sy unsigned int bitmap_line::sy#0 // sy zp[2]:16 773.1923076923076 unsigned int bitmap_line::x unsigned int bitmap_line::x#1 // x zp[2]:6 10001.0 unsigned int bitmap_line::x#12 // x zp[2]:6 20002.0 unsigned int bitmap_line::x#13 // x zp[2]:6 5729.285714285716 unsigned int bitmap_line::x#15 // x zp[2]:6 5714.857142857143 unsigned int bitmap_line::x#6 // x zp[2]:6 20103.0 unsigned int bitmap_line::x#7 // x zp[2]:6 7526.0 unsigned int bitmap_line::x1 unsigned int bitmap_line::x1#0 // x1 zp[2]:6 19.846153846153847 unsigned int bitmap_line::x2 unsigned int bitmap_line::x2#0 // x2 zp[2]:22 300.4117647058823 unsigned int bitmap_line::y unsigned int bitmap_line::y#1 // y zp[2]:10 5714.857142857143 unsigned int bitmap_line::y#13 // y zp[2]:10 20002.0 unsigned int bitmap_line::y#15 // y zp[2]:10 4300.571428571429 unsigned int bitmap_line::y#2 // y zp[2]:10 10001.0 unsigned int bitmap_line::y#4 // y zp[2]:10 5025.75 unsigned int bitmap_line::y#7 // y zp[2]:10 10001.0 unsigned int bitmap_line::y1 unsigned int bitmap_line::y1#0 // y1 zp[2]:10 17.291666666666664 unsigned int bitmap_line::y2 unsigned int bitmap_line::y2#0 // y2 zp[2]:24 319.1875 void bitmap_plot(unsigned int x , char y) unsigned int bitmap_plot::$1 // zp[2]:4 200002.0 char bitmap_plot::$2 // reg byte x 200002.0 char *bitmap_plot::plotter unsigned int bitmap_plot::plotter#0 // plotter zp[2]:2 50000.5 char *bitmap_plot::plotter#1 // plotter zp[2]:2 150001.5 unsigned int bitmap_plot::x unsigned int bitmap_plot::x#0 // x zp[2]:6 101.0 unsigned int bitmap_plot::x#1 // x zp[2]:6 10001.0 unsigned int bitmap_plot::x#2 // x zp[2]:6 101.0 unsigned int bitmap_plot::x#3 // x zp[2]:6 10001.0 unsigned int bitmap_plot::x#4 // x zp[2]:6 55051.5 char bitmap_plot::y char bitmap_plot::y#0 // reg byte x 202.0 char bitmap_plot::y#1 // reg byte x 20002.0 char bitmap_plot::y#2 // reg byte x 202.0 char bitmap_plot::y#3 // reg byte x 20002.0 char bitmap_plot::y#4 // reg byte x 220206.0 __constant const char bitmap_plot_bit[$100] = { fill( $100, 0) } __constant const char bitmap_plot_yhi[$100] = { fill( $100, 0) } __constant const char bitmap_plot_ylo[$100] = { fill( $100, 0) } char *bitmap_screen void main() unsigned int main::$13 // zp[2]:6 22.0 unsigned int main::$14 // zp[2]:22 22.0 char main::a char main::a#1 // a zp[1]:28 11.0 char main::a#2 // a zp[1]:28 2.4444444444444446 char main::i char main::i#1 // i zp[1]:27 22.0 char main::i#2 // i zp[1]:27 3.3000000000000003 char *main::toD0181_gfx char main::toD0181_return __constant char main::toD0181_return#0 = byte1 (unsigned int)SCREEN&$3fff*4|byte1 (unsigned int)BITMAP/4&$f // toD0181_return char *main::toD0181_screen void * memset(void *str , char c , unsigned int num) char memset::c char memset::c#4 // reg byte x 125.125 char *memset::dst char *memset::dst#1 // dst zp[2]:8 2002.0 char *memset::dst#2 // dst zp[2]:8 1368.3333333333335 char *memset::dst#4 // dst zp[2]:8 202.0 char *memset::end char *memset::end#0 // end zp[2]:10 183.66666666666669 unsigned int memset::num unsigned int memset::num#2 // num zp[2]:10 101.0 void *memset::return void *memset::str void *memset::str#3 // str zp[2]:8 unsigned int sgn_u16(unsigned int w) char sgn_u16::$0 // reg byte a 2002.0 char sgn_u16::$1 // reg byte a 2002.0 unsigned int sgn_u16::return unsigned int sgn_u16::return#0 // return zp[2]:16 202.0 unsigned int sgn_u16::return#1 // return zp[2]:16 202.0 unsigned int sgn_u16::return#4 // return zp[2]:16 50.5 unsigned int sgn_u16::w unsigned int sgn_u16::w#0 // w zp[2]:2 202.0 unsigned int sgn_u16::w#1 // w zp[2]:2 202.0 unsigned int sgn_u16::w#2 // w zp[2]:2 1203.0 zp[1]:27 [ main::i#2 main::i#1 ] zp[1]:28 [ main::a#2 main::a#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] zp[2]:12 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] zp[2]:6 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 main::$13 ] zp[2]:10 [ memset::num#2 memset::end#0 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:8 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] reg byte x [ memset::c#4 ] zp[2]:14 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ] zp[2]:16 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ] reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:22 [ main::$14 bitmap_line::x2#0 ] zp[2]:24 [ bitmap_line::y2#0 ] zp[1]:26 [ bitmap_init::$7 ] reg byte a [ bitmap_init::$4 ] reg byte a [ bitmap_init::$5 ] reg byte a [ bitmap_init::$6 ] zp[2]:18 [ bitmap_line::dx#0 ] zp[2]:20 [ bitmap_line::sx#0 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:2 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp[2]:4 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] FINAL ASSEMBLER Score: 26875 // File Comments // Tests the simple bitmap plotter // Plots a few lines using the bresenham line algorithm /// @file /// Commodore 64 Registers and Constants /// @file /// The MOS 6526 Complex Interface Adapter (CIA) /// /// http://archive.6502.org/datasheets/mos_6526_cia_recreated.pdf // Upstart // Commodore 64 PRG executable file .file [name="bitmap-plot-3.prg", type="prg", segments="Program"] .segmentdef Program [segments="Basic, Code, Data"] .segmentdef Basic [start=$0801] .segmentdef Code [start=$80d] .segmentdef Data [startAfter="Code"] .segment Basic :BasicUpstart(main) // Global Constants & labels /// $D011 Control Register #1 Bit#5: BMM Turn Bitmap Mode on/off .const VICII_BMM = $20 /// $D011 Control Register #1 Bit#4: DEN Switch VIC-II output on/off .const VICII_DEN = $10 /// $D011 Control Register #1 Bit#3: RSEL Switch betweem 25 or 24 visible rows /// RSEL| Display window height | First line | Last line /// ----+--------------------------+-------------+---------- /// 0 | 24 text lines/192 pixels | 55 ($37) | 246 ($f6) /// 1 | 25 text lines/200 pixels | 51 ($33) | 250 ($fa) .const VICII_RSEL = 8 .const WHITE = 1 /// $D011 Control Register #1 /// @see #VICII_CONTROL1 .label D011 = $d011 /// $D018 VIC-II base addresses // @see #VICII_MEMORY .label D018 = $d018 .label BITMAP = $2000 .label SCREEN = $400 .label COSTAB = SINTAB+$40 .segment Code // main main: { .const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f .label __13 = 6 .label __14 = $16 .label a = $1c .label i = $1b // bitmap_init(BITMAP, SCREEN) // [1] call bitmap_init // [19] phi from main to bitmap_init [phi:main->bitmap_init] jsr bitmap_init // [2] phi from main to main::@5 [phi:main->main::@5] // main::@5 // bitmap_clear(BLACK, WHITE) // [3] call bitmap_clear // [41] phi from main::@5 to bitmap_clear [phi:main::@5->bitmap_clear] jsr bitmap_clear // main::@6 // *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 // [4] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 -- _deref_pbuc1=vbuc2 lda #VICII_BMM|VICII_DEN|VICII_RSEL|3 sta D011 // [5] phi from main::@6 to main::toD0181 [phi:main::@6->main::toD0181] // main::toD0181 // main::@4 // *D018 = toD018(SCREEN, BITMAP) // [6] *D018 = main::toD0181_return#0 -- _deref_pbuc1=vbuc2 lda #toD0181_return sta D018 // [7] phi from main::@4 to main::@1 [phi:main::@4->main::@1] // [7] phi main::a#2 = 0 [phi:main::@4->main::@1#0] -- vbuz1=vbuc1 lda #0 sta.z a // [7] phi main::i#2 = 0 [phi:main::@4->main::@1#1] -- vbuz1=vbuc1 sta.z i // main::@1 __b1: // for( byte i=0, a=0; i!=8; i++, a+=32) // [8] if(main::i#2!=8) goto main::@2 -- vbuz1_neq_vbuc1_then_la1 lda #8 cmp.z i bne __b2 // main::@3 __b3: // (*(SCREEN+999))++; // [9] *(SCREEN+$3e7) = ++ *(SCREEN+$3e7) -- _deref_pbuc1=_inc__deref_pbuc1 inc SCREEN+$3e7 jmp __b3 // main::@2 __b2: // (word)COSTAB[a]+120 // [10] main::$13 = (unsigned int)COSTAB[main::a#2] -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy.z a lda COSTAB,y sta.z __13 lda #0 sta.z __13+1 // bitmap_line( (word)COSTAB[a]+120, (word)SINTAB[a], (word)COSTAB[a+32]+120, (word)SINTAB[a+32]) // [11] bitmap_line::x1#0 = main::$13 + $78 -- vwuz1=vwuz1_plus_vbuc1 lda #$78 clc adc.z bitmap_line.x1 sta.z bitmap_line.x1 bcc !+ inc.z bitmap_line.x1+1 !: // (word)COSTAB[a+32]+120 // [12] main::$14 = (unsigned int)(COSTAB+$20)[main::a#2] -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy.z a lda COSTAB+$20,y sta.z __14 lda #0 sta.z __14+1 // bitmap_line( (word)COSTAB[a]+120, (word)SINTAB[a], (word)COSTAB[a+32]+120, (word)SINTAB[a+32]) // [13] bitmap_line::x2#0 = main::$14 + $78 -- vwuz1=vwuz1_plus_vbuc1 lda #$78 clc adc.z bitmap_line.x2 sta.z bitmap_line.x2 bcc !+ inc.z bitmap_line.x2+1 !: // [14] bitmap_line::y1#0 = (unsigned int)SINTAB[main::a#2] -- vwuz1=_word_pbuc1_derefidx_vbuz2 ldy.z a lda SINTAB,y sta.z bitmap_line.y1 lda #0 sta.z bitmap_line.y1+1 // [15] bitmap_line::y2#0 = (unsigned int)(SINTAB+$20)[main::a#2] -- vwuz1=_word_pbuc1_derefidx_vbuz2 lda SINTAB+$20,y sta.z bitmap_line.y2 lda #0 sta.z bitmap_line.y2+1 // [16] call bitmap_line jsr bitmap_line // main::@7 // a+=32 // [17] main::a#1 = main::a#2 + $20 -- vbuz1=vbuz1_plus_vbuc1 lax.z a axs #-[$20] stx.z a // for( byte i=0, a=0; i!=8; i++, a+=32) // [18] main::i#1 = ++ main::i#2 -- vbuz1=_inc_vbuz1 inc.z i // [7] phi from main::@7 to main::@1 [phi:main::@7->main::@1] // [7] phi main::a#2 = main::a#1 [phi:main::@7->main::@1#0] -- register_copy // [7] phi main::i#2 = main::i#1 [phi:main::@7->main::@1#1] -- register_copy jmp __b1 } // bitmap_init // Initialize bitmap plotting tables // void bitmap_init(char *gfx, char *screen) bitmap_init: { .label __7 = $1a .label yoffs = $c // [20] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1] // [20] phi bitmap_init::x#2 = 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1 ldx #0 // [20] phi bitmap_init::bits#3 = $80 [phi:bitmap_init->bitmap_init::@1#1] -- vbuaa=vbuc1 lda #$80 // [20] phi from bitmap_init::@2 to bitmap_init::@1 [phi:bitmap_init::@2->bitmap_init::@1] // [20] phi bitmap_init::x#2 = bitmap_init::x#1 [phi:bitmap_init::@2->bitmap_init::@1#0] -- register_copy // [20] phi bitmap_init::bits#3 = bitmap_init::bits#4 [phi:bitmap_init::@2->bitmap_init::@1#1] -- register_copy // bitmap_init::@1 __b1: // bitmap_plot_bit[x] = bits // [21] bitmap_plot_bit[bitmap_init::x#2] = bitmap_init::bits#3 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_bit,x // bits >>= 1 // [22] bitmap_init::bits#1 = bitmap_init::bits#3 >> 1 -- vbuaa=vbuaa_ror_1 lsr // if(bits==0) // [23] if(bitmap_init::bits#1!=0) goto bitmap_init::@6 -- vbuaa_neq_0_then_la1 cmp #0 bne __b2 // [25] phi from bitmap_init::@1 to bitmap_init::@2 [phi:bitmap_init::@1->bitmap_init::@2] // [25] phi bitmap_init::bits#4 = $80 [phi:bitmap_init::@1->bitmap_init::@2#0] -- vbuaa=vbuc1 lda #$80 // [24] phi from bitmap_init::@1 to bitmap_init::@6 [phi:bitmap_init::@1->bitmap_init::@6] // bitmap_init::@6 // [25] phi from bitmap_init::@6 to bitmap_init::@2 [phi:bitmap_init::@6->bitmap_init::@2] // [25] phi bitmap_init::bits#4 = bitmap_init::bits#1 [phi:bitmap_init::@6->bitmap_init::@2#0] -- register_copy // bitmap_init::@2 __b2: // for(char x : 0..255) // [26] bitmap_init::x#1 = ++ bitmap_init::x#2 -- vbuxx=_inc_vbuxx inx // [27] if(bitmap_init::x#1!=0) goto bitmap_init::@1 -- vbuxx_neq_0_then_la1 cpx #0 bne __b1 // [28] phi from bitmap_init::@2 to bitmap_init::@3 [phi:bitmap_init::@2->bitmap_init::@3] // [28] phi bitmap_init::yoffs#2 = BITMAP [phi:bitmap_init::@2->bitmap_init::@3#0] -- pbuz1=pbuc1 lda #BITMAP sta.z yoffs+1 // [28] phi bitmap_init::y#2 = 0 [phi:bitmap_init::@2->bitmap_init::@3#1] -- vbuxx=vbuc1 ldx #0 // [28] phi from bitmap_init::@4 to bitmap_init::@3 [phi:bitmap_init::@4->bitmap_init::@3] // [28] phi bitmap_init::yoffs#2 = bitmap_init::yoffs#4 [phi:bitmap_init::@4->bitmap_init::@3#0] -- register_copy // [28] phi bitmap_init::y#2 = bitmap_init::y#1 [phi:bitmap_init::@4->bitmap_init::@3#1] -- register_copy // bitmap_init::@3 __b3: // y&0x7 // [29] bitmap_init::$7 = bitmap_init::y#2 & 7 -- vbuz1=vbuxx_band_vbuc1 lda #7 sax.z __7 // BYTE0(yoffs) // [30] bitmap_init::$4 = byte0 bitmap_init::yoffs#2 -- vbuaa=_byte0_pbuz1 lda.z yoffs // y&0x7 | BYTE0(yoffs) // [31] bitmap_init::$5 = bitmap_init::$7 | bitmap_init::$4 -- vbuaa=vbuz1_bor_vbuaa ora.z __7 // bitmap_plot_ylo[y] = y&0x7 | BYTE0(yoffs) // [32] bitmap_plot_ylo[bitmap_init::y#2] = bitmap_init::$5 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_ylo,x // BYTE1(yoffs) // [33] bitmap_init::$6 = byte1 bitmap_init::yoffs#2 -- vbuaa=_byte1_pbuz1 lda.z yoffs+1 // bitmap_plot_yhi[y] = BYTE1(yoffs) // [34] bitmap_plot_yhi[bitmap_init::y#2] = bitmap_init::$6 -- pbuc1_derefidx_vbuxx=vbuaa sta bitmap_plot_yhi,x // if((y&0x7)==7) // [35] if(bitmap_init::$7!=7) goto bitmap_init::@4 -- vbuz1_neq_vbuc1_then_la1 lda #7 cmp.z __7 bne __b4 // bitmap_init::@5 // yoffs = yoffs + 40*8 // [36] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (unsigned int)$28*8 -- pbuz1=pbuz1_plus_vwuc1 lda.z yoffs clc adc #<$28*8 sta.z yoffs lda.z yoffs+1 adc #>$28*8 sta.z yoffs+1 // [37] phi from bitmap_init::@3 bitmap_init::@5 to bitmap_init::@4 [phi:bitmap_init::@3/bitmap_init::@5->bitmap_init::@4] // [37] phi bitmap_init::yoffs#4 = 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) // [38] bitmap_init::y#1 = ++ bitmap_init::y#2 -- vbuxx=_inc_vbuxx inx // [39] if(bitmap_init::y#1!=0) goto bitmap_init::@3 -- vbuxx_neq_0_then_la1 cpx #0 bne __b3 // bitmap_init::@return // } // [40] return rts } // bitmap_clear // Clear all graphics on the bitmap // bgcol - the background color to fill the screen with // fgcol - the foreground color to fill the screen with // void bitmap_clear(char bgcol, char fgcol) bitmap_clear: { .const col = WHITE*$10 // memset(bitmap_screen, col, 1000uw) // [42] call memset // [97] phi from bitmap_clear to memset [phi:bitmap_clear->memset] // [97] phi memset::c#4 = bitmap_clear::col#0 [phi:bitmap_clear->memset#0] -- vbuxx=vbuc1 ldx #col // [97] phi memset::str#3 = (void *)SCREEN [phi:bitmap_clear->memset#1] -- pvoz1=pvoc1 lda #SCREEN sta.z memset.str+1 // [97] phi memset::num#2 = $3e8 [phi:bitmap_clear->memset#2] -- vwuz1=vwuc1 lda #<$3e8 sta.z memset.num lda #>$3e8 sta.z memset.num+1 jsr memset // [43] phi from bitmap_clear to bitmap_clear::@1 [phi:bitmap_clear->bitmap_clear::@1] // bitmap_clear::@1 // memset(bitmap_gfx, 0, 8000uw) // [44] call memset // [97] phi from bitmap_clear::@1 to memset [phi:bitmap_clear::@1->memset] // [97] phi memset::c#4 = 0 [phi:bitmap_clear::@1->memset#0] -- vbuxx=vbuc1 ldx #0 // [97] phi memset::str#3 = (void *)BITMAP [phi:bitmap_clear::@1->memset#1] -- pvoz1=pvoc1 lda #BITMAP sta.z memset.str+1 // [97] phi memset::num#2 = $1f40 [phi:bitmap_clear::@1->memset#2] -- vwuz1=vwuc1 lda #<$1f40 sta.z memset.num lda #>$1f40 sta.z memset.num+1 jsr memset // bitmap_clear::@return // } // [45] return rts } // bitmap_line // Draw a line on the bitmap using bresenhams algorithm // void bitmap_line(__zp(6) unsigned int x1, __zp($a) unsigned int y1, __zp($16) unsigned int x2, __zp($18) unsigned int y2) bitmap_line: { .label dx = $12 .label dy = $e .label sx = $14 .label sy = $10 .label e1 = 8 .label e = $c .label y = $a .label x = 6 .label x1 = 6 .label y1 = $a .label x2 = $16 .label y2 = $18 // unsigned int dx = abs_u16(x2-x1) // [46] abs_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z x2 sec sbc.z x1 sta.z abs_u16.w lda.z x2+1 sbc.z x1+1 sta.z abs_u16.w+1 // [47] call abs_u16 // [106] phi from bitmap_line to abs_u16 [phi:bitmap_line->abs_u16] // [106] phi abs_u16::w#2 = abs_u16::w#0 [phi:bitmap_line->abs_u16#0] -- register_copy jsr abs_u16 // unsigned int dx = abs_u16(x2-x1) // [48] abs_u16::return#0 = abs_u16::return#4 // bitmap_line::@12 // [49] bitmap_line::dx#0 = abs_u16::return#0 -- vwuz1=vwuz2 lda.z abs_u16.return sta.z dx lda.z abs_u16.return+1 sta.z dx+1 // unsigned int dy = abs_u16(y2-y1) // [50] abs_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z y2 sec sbc.z y1 sta.z abs_u16.w lda.z y2+1 sbc.z y1+1 sta.z abs_u16.w+1 // [51] call abs_u16 // [106] phi from bitmap_line::@12 to abs_u16 [phi:bitmap_line::@12->abs_u16] // [106] phi abs_u16::w#2 = abs_u16::w#1 [phi:bitmap_line::@12->abs_u16#0] -- register_copy jsr abs_u16 // unsigned int dy = abs_u16(y2-y1) // [52] abs_u16::return#1 = abs_u16::return#4 // bitmap_line::@13 // [53] bitmap_line::dy#0 = abs_u16::return#1 // if(dx==0 && dy==0) // [54] if(bitmap_line::dx#0!=0) goto bitmap_line::@1 -- vwuz1_neq_0_then_la1 lda.z dx ora.z dx+1 bne __b1 // bitmap_line::@18 // [55] if(bitmap_line::dy#0==0) goto bitmap_line::@4 -- vwuz1_eq_0_then_la1 lda.z dy ora.z dy+1 bne !__b4+ jmp __b4 !__b4: // bitmap_line::@1 __b1: // unsigned int sx = sgn_u16(x2-x1) // [56] sgn_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z x2 sec sbc.z x1 sta.z sgn_u16.w lda.z x2+1 sbc.z x1+1 sta.z sgn_u16.w+1 // [57] call sgn_u16 // [113] phi from bitmap_line::@1 to sgn_u16 [phi:bitmap_line::@1->sgn_u16] // [113] phi sgn_u16::w#2 = sgn_u16::w#0 [phi:bitmap_line::@1->sgn_u16#0] -- register_copy jsr sgn_u16 // unsigned int sx = sgn_u16(x2-x1) // [58] sgn_u16::return#0 = sgn_u16::return#4 // bitmap_line::@14 // [59] bitmap_line::sx#0 = sgn_u16::return#0 -- vwuz1=vwuz2 lda.z sgn_u16.return sta.z sx lda.z sgn_u16.return+1 sta.z sx+1 // unsigned int sy = sgn_u16(y2-y1) // [60] sgn_u16::w#1 = bitmap_line::y2#0 - bitmap_line::y1#0 -- vwuz1=vwuz2_minus_vwuz3 lda.z y2 sec sbc.z y1 sta.z sgn_u16.w lda.z y2+1 sbc.z y1+1 sta.z sgn_u16.w+1 // [61] call sgn_u16 // [113] phi from bitmap_line::@14 to sgn_u16 [phi:bitmap_line::@14->sgn_u16] // [113] phi sgn_u16::w#2 = sgn_u16::w#1 [phi:bitmap_line::@14->sgn_u16#0] -- register_copy jsr sgn_u16 // unsigned int sy = sgn_u16(y2-y1) // [62] sgn_u16::return#1 = sgn_u16::return#4 // bitmap_line::@15 // [63] bitmap_line::sy#0 = sgn_u16::return#1 // if(dx > dy) // [64] if(bitmap_line::dx#0>bitmap_line::dy#0) goto bitmap_line::@2 -- vwuz1_gt_vwuz2_then_la1 lda.z dy+1 cmp.z dx+1 bcc __b2 bne !+ lda.z dy cmp.z dx bcc __b2 !: // bitmap_line::@5 // unsigned int e = dx/2 // [65] bitmap_line::e#0 = bitmap_line::dx#0 >> 1 -- vwuz1=vwuz2_ror_1 // Y is the driver lda.z dx+1 lsr sta.z e+1 lda.z dx ror sta.z e // [66] phi from bitmap_line::@5 bitmap_line::@7 to bitmap_line::@6 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6] // [66] phi bitmap_line::e#3 = bitmap_line::e#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#0] -- register_copy // [66] phi bitmap_line::y#4 = bitmap_line::y1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#1] -- register_copy // [66] phi bitmap_line::x#13 = bitmap_line::x1#0 [phi:bitmap_line::@5/bitmap_line::@7->bitmap_line::@6#2] -- register_copy // bitmap_line::@6 __b6: // bitmap_plot(x,(char)y) // [67] bitmap_plot::x#1 = bitmap_line::x#13 // [68] bitmap_plot::y#1 = (char)bitmap_line::y#4 -- vbuxx=_byte_vwuz1 ldx.z y // [69] call bitmap_plot // [120] phi from bitmap_line::@6 to bitmap_plot [phi:bitmap_line::@6->bitmap_plot] // [120] phi bitmap_plot::x#4 = bitmap_plot::x#1 [phi:bitmap_line::@6->bitmap_plot#0] -- register_copy // [120] phi bitmap_plot::y#4 = bitmap_plot::y#1 [phi:bitmap_line::@6->bitmap_plot#1] -- register_copy jsr bitmap_plot // bitmap_line::@16 // y += sy // [70] bitmap_line::y#1 = bitmap_line::y#4 + bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 clc lda.z y adc.z sy sta.z y lda.z y+1 adc.z sy+1 sta.z y+1 // e += dx // [71] bitmap_line::e#1 = bitmap_line::e#3 + bitmap_line::dx#0 -- vwuz1=vwuz1_plus_vwuz2 clc lda.z e adc.z dx sta.z e lda.z e+1 adc.z dx+1 sta.z e+1 // if(dy=bitmap_line::e#1) goto bitmap_line::@7 -- vwuz1_ge_vwuz2_then_la1 cmp.z dy+1 bne !+ lda.z e cmp.z dy beq __b7 !: bcc __b7 // bitmap_line::@8 // x += sx // [73] bitmap_line::x#1 = bitmap_line::x#13 + bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 clc lda.z x adc.z sx sta.z x lda.z x+1 adc.z sx+1 sta.z x+1 // e -= dy // [74] bitmap_line::e#2 = bitmap_line::e#1 - bitmap_line::dy#0 -- vwuz1=vwuz1_minus_vwuz2 lda.z e sec sbc.z dy sta.z e lda.z e+1 sbc.z dy+1 sta.z e+1 // [75] phi from bitmap_line::@16 bitmap_line::@8 to bitmap_line::@7 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7] // [75] phi bitmap_line::e#6 = bitmap_line::e#1 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#0] -- register_copy // [75] phi bitmap_line::x#12 = bitmap_line::x#13 [phi:bitmap_line::@16/bitmap_line::@8->bitmap_line::@7#1] -- register_copy // bitmap_line::@7 __b7: // while (y != y2) // [76] if(bitmap_line::y#1!=bitmap_line::y2#0) goto bitmap_line::@6 -- vwuz1_neq_vwuz2_then_la1 lda.z y+1 cmp.z y2+1 bne __b6 lda.z y cmp.z y2 bne __b6 // [77] phi from bitmap_line::@10 bitmap_line::@7 to bitmap_line::@3 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3] // [77] phi bitmap_line::y#7 = bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#0] -- register_copy // [77] phi bitmap_line::x#6 = bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@7->bitmap_line::@3#1] -- register_copy // bitmap_line::@3 __b3: // bitmap_plot(x,(char)y) // [78] bitmap_plot::x#2 = bitmap_line::x#6 // [79] bitmap_plot::y#2 = (char)bitmap_line::y#7 -- vbuxx=_byte_vwuz1 ldx.z y // [80] call bitmap_plot // [120] phi from bitmap_line::@3 to bitmap_plot [phi:bitmap_line::@3->bitmap_plot] // [120] phi bitmap_plot::x#4 = bitmap_plot::x#2 [phi:bitmap_line::@3->bitmap_plot#0] -- register_copy // [120] phi bitmap_plot::y#4 = bitmap_plot::y#2 [phi:bitmap_line::@3->bitmap_plot#1] -- register_copy jsr bitmap_plot // bitmap_line::@return // } // [81] return rts // bitmap_line::@2 __b2: // unsigned int e = dy/2 // [82] bitmap_line::e1#0 = bitmap_line::dy#0 >> 1 -- vwuz1=vwuz2_ror_1 // X is the driver lda.z dy+1 lsr sta.z e1+1 lda.z dy ror sta.z e1 // [83] phi from bitmap_line::@10 bitmap_line::@2 to bitmap_line::@9 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9] // [83] phi bitmap_line::e1#3 = bitmap_line::e1#6 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#0] -- register_copy // [83] phi bitmap_line::y#15 = bitmap_line::y#13 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#1] -- register_copy // [83] phi bitmap_line::x#7 = bitmap_line::x#15 [phi:bitmap_line::@10/bitmap_line::@2->bitmap_line::@9#2] -- register_copy // bitmap_line::@9 __b9: // bitmap_plot(x,(char)y) // [84] bitmap_plot::x#3 = bitmap_line::x#7 // [85] bitmap_plot::y#3 = (char)bitmap_line::y#15 -- vbuxx=_byte_vwuz1 ldx.z y // [86] call bitmap_plot // [120] phi from bitmap_line::@9 to bitmap_plot [phi:bitmap_line::@9->bitmap_plot] // [120] phi bitmap_plot::x#4 = bitmap_plot::x#3 [phi:bitmap_line::@9->bitmap_plot#0] -- register_copy // [120] phi bitmap_plot::y#4 = bitmap_plot::y#3 [phi:bitmap_line::@9->bitmap_plot#1] -- register_copy jsr bitmap_plot // bitmap_line::@17 // x += sx // [87] bitmap_line::x#15 = bitmap_line::x#7 + bitmap_line::sx#0 -- vwuz1=vwuz1_plus_vwuz2 clc lda.z x adc.z sx sta.z x lda.z x+1 adc.z sx+1 sta.z x+1 // e += dy // [88] bitmap_line::e1#1 = bitmap_line::e1#3 + bitmap_line::dy#0 -- vwuz1=vwuz1_plus_vwuz2 clc lda.z e1 adc.z dy sta.z e1 lda.z e1+1 adc.z dy+1 sta.z e1+1 // if(dx < e) // [89] if(bitmap_line::dx#0>=bitmap_line::e1#1) goto bitmap_line::@10 -- vwuz1_ge_vwuz2_then_la1 cmp.z dx+1 bne !+ lda.z e1 cmp.z dx beq __b10 !: bcc __b10 // bitmap_line::@11 // y += sy // [90] bitmap_line::y#2 = bitmap_line::y#15 + bitmap_line::sy#0 -- vwuz1=vwuz1_plus_vwuz2 clc lda.z y adc.z sy sta.z y lda.z y+1 adc.z sy+1 sta.z y+1 // e -= dx // [91] bitmap_line::e1#2 = bitmap_line::e1#1 - bitmap_line::dx#0 -- vwuz1=vwuz1_minus_vwuz2 lda.z e1 sec sbc.z dx sta.z e1 lda.z e1+1 sbc.z dx+1 sta.z e1+1 // [92] phi from bitmap_line::@11 bitmap_line::@17 to bitmap_line::@10 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10] // [92] phi bitmap_line::e1#6 = bitmap_line::e1#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#0] -- register_copy // [92] phi bitmap_line::y#13 = bitmap_line::y#2 [phi:bitmap_line::@11/bitmap_line::@17->bitmap_line::@10#1] -- register_copy // bitmap_line::@10 __b10: // while (x != x2) // [93] if(bitmap_line::x#15!=bitmap_line::x2#0) goto bitmap_line::@9 -- vwuz1_neq_vwuz2_then_la1 lda.z x+1 cmp.z x2+1 bne __b9 lda.z x cmp.z x2 bne __b9 jmp __b3 // bitmap_line::@4 __b4: // bitmap_plot(x,(char)y) // [94] bitmap_plot::x#0 = bitmap_line::x1#0 // [95] bitmap_plot::y#0 = (char)bitmap_line::y1#0 -- vbuxx=_byte_vwuz1 ldx.z y1 // [96] call bitmap_plot // [120] phi from bitmap_line::@4 to bitmap_plot [phi:bitmap_line::@4->bitmap_plot] // [120] phi bitmap_plot::x#4 = bitmap_plot::x#0 [phi:bitmap_line::@4->bitmap_plot#0] -- register_copy // [120] phi bitmap_plot::y#4 = bitmap_plot::y#0 [phi:bitmap_line::@4->bitmap_plot#1] -- register_copy jsr bitmap_plot rts } // memset // Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str. // void * memset(__zp(8) void *str, __register(X) char c, __zp($a) unsigned int num) memset: { .label end = $a .label dst = 8 .label num = $a .label str = 8 // if(num>0) // [98] if(memset::num#2<=0) goto memset::@return -- vwuz1_le_0_then_la1 lda.z num bne !+ lda.z num+1 beq __breturn !: // memset::@1 // char* end = (char*)str + num // [99] memset::end#0 = (char *)memset::str#3 + memset::num#2 -- pbuz1=pbuz2_plus_vwuz1 clc lda.z end adc.z str sta.z end lda.z end+1 adc.z str+1 sta.z end+1 // [100] memset::dst#4 = (char *)memset::str#3 // [101] phi from memset::@1 memset::@3 to memset::@2 [phi:memset::@1/memset::@3->memset::@2] // [101] phi memset::dst#2 = memset::dst#4 [phi:memset::@1/memset::@3->memset::@2#0] -- register_copy // memset::@2 __b2: // for(char* dst = str; dst!=end; dst++) // [102] if(memset::dst#2!=memset::end#0) goto memset::@3 -- pbuz1_neq_pbuz2_then_la1 lda.z dst+1 cmp.z end+1 bne __b3 lda.z dst cmp.z end bne __b3 // memset::@return __breturn: // } // [103] return rts // memset::@3 __b3: // *dst = c // [104] *memset::dst#2 = memset::c#4 -- _deref_pbuz1=vbuxx txa ldy #0 sta (dst),y // for(char* dst = str; dst!=end; dst++) // [105] memset::dst#1 = ++ memset::dst#2 -- pbuz1=_inc_pbuz1 inc.z dst bne !+ inc.z dst+1 !: jmp __b2 } // abs_u16 // Get the absolute value of a 16-bit unsigned number treated as a signed number. // __zp($e) unsigned int abs_u16(__zp($e) unsigned int w) abs_u16: { .label w = $e .label return = $e // BYTE1(w) // [107] abs_u16::$0 = byte1 abs_u16::w#2 -- vbuaa=_byte1_vwuz1 lda.z w+1 // BYTE1(w)&0x80 // [108] abs_u16::$1 = abs_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 // if(BYTE1(w)&0x80) // [109] if(0!=abs_u16::$1) goto abs_u16::@1 -- 0_neq_vbuaa_then_la1 cmp #0 bne __b1 // [111] phi from abs_u16 abs_u16::@1 to abs_u16::@return [phi:abs_u16/abs_u16::@1->abs_u16::@return] // [111] phi abs_u16::return#4 = abs_u16::w#2 [phi:abs_u16/abs_u16::@1->abs_u16::@return#0] -- register_copy rts // abs_u16::@1 __b1: // return -w; // [110] abs_u16::return#2 = - abs_u16::w#2 -- vwuz1=_neg_vwuz1 sec lda #0 sbc.z return sta.z return lda #0 sbc.z return+1 sta.z return+1 // abs_u16::@return // } // [112] return rts } // sgn_u16 // Get the sign of a 16-bit unsigned number treated as a signed number. // Returns unsigned -1 if the number is // __zp($10) unsigned int sgn_u16(__zp(2) unsigned int w) sgn_u16: { .label w = 2 .label return = $10 // BYTE1(w) // [114] sgn_u16::$0 = byte1 sgn_u16::w#2 -- vbuaa=_byte1_vwuz1 lda.z w+1 // BYTE1(w)&0x80 // [115] sgn_u16::$1 = sgn_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1 and #$80 // if(BYTE1(w)&0x80) // [116] if(0!=sgn_u16::$1) goto sgn_u16::@1 -- 0_neq_vbuaa_then_la1 cmp #0 bne __b1 // [118] phi from sgn_u16 to sgn_u16::@return [phi:sgn_u16->sgn_u16::@return] // [118] phi sgn_u16::return#4 = 1 [phi:sgn_u16->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<1 sta.z return lda #>1 sta.z return+1 rts // [117] phi from sgn_u16 to sgn_u16::@1 [phi:sgn_u16->sgn_u16::@1] // sgn_u16::@1 __b1: // [118] phi from sgn_u16::@1 to sgn_u16::@return [phi:sgn_u16::@1->sgn_u16::@return] // [118] phi sgn_u16::return#4 = -1 [phi:sgn_u16::@1->sgn_u16::@return#0] -- vwuz1=vbuc1 lda #<-1 sta.z return sta.z return+1 // sgn_u16::@return // } // [119] return rts } // bitmap_plot // Plot a single dot in the bitmap // void bitmap_plot(__zp(6) unsigned int x, __register(X) char y) bitmap_plot: { .label __1 = 4 .label plotter = 2 .label x = 6 // MAKEWORD( bitmap_plot_yhi[y], bitmap_plot_ylo[y] ) // [121] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx lda bitmap_plot_yhi,x sta.z plotter+1 lda bitmap_plot_ylo,x sta.z plotter // x & 0xfff8 // [122] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 -- vwuz1=vwuz2_band_vwuc1 lda.z x and #<$fff8 sta.z __1 lda.z x+1 and #>$fff8 sta.z __1+1 // plotter += ( x & 0xfff8 ) // [123] bitmap_plot::plotter#1 = (char *)bitmap_plot::plotter#0 + bitmap_plot::$1 -- pbuz1=pbuz1_plus_vwuz2 clc lda.z plotter adc.z __1 sta.z plotter lda.z plotter+1 adc.z __1+1 sta.z plotter+1 // BYTE0(x) // [124] bitmap_plot::$2 = byte0 bitmap_plot::x#4 -- vbuxx=_byte0_vwuz1 ldx.z x // *plotter |= bitmap_plot_bit[BYTE0(x)] // [125] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] -- _deref_pbuz1=_deref_pbuz1_bor_pbuc1_derefidx_vbuxx lda bitmap_plot_bit,x ldy #0 ora (plotter),y sta (plotter),y // bitmap_plot::@return // } // [126] return rts } // File Data .segment Data // Tables for the plotter - initialized by calling bitmap_init(); bitmap_plot_ylo: .fill $100, 0 bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 .align $100 SINTAB: .fill $180, 99.5+99.5*sin(i*2*PI/256)