kickc/src/test/ref/bitmap-plot-3.log

4454 lines
249 KiB
Plaintext

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
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
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
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
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
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
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<e)
// [72] if(bitmap_line::dy#0>=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)